Skip to content

Resources

Basic Resource Schema

Basic Fields

Every resource MUST have the following fields:

  • type: a string that identifies the resource’s type within an enumeration of possible values. Non-nullable. Enumeration.
    Its possible values are "agents", "events", "eventSeries", "lifts", "mediaObjects", "mountainAreas", "snowparks", "skiSlopes", and "venues".

  • id: a string that uniquely and persistently identifies the resource within a SERVER. Non-nullable. Non-empty. Unique.

  • attributes: an object containing the resource’s data that does not refer to other resources (e.g. the name of an event, the length of a slope).

  • relationships: an object containing the resource’s data referring to other resources (e.g. the organizers of an event, the slopes within a mountain area).

In addition, resources MAY have the following fields in certain contexts (see ???):

  • meta: an object containing metadata of the resource (e.g., the URL representing the resource’s data provider or a ??? string of the instant of the resource’s last update). Non-empty.

    The meta object MAY NOT be present in the resource of creation and update requests when the data provider is not required by the server.

  • links: an object containing the links related to access related resources. Examples include, a link to the agent resources representing organizers and sponsors of an event, a link to the media object resources representing multimedia descriptions of a mountain area resource, or a link to the resource itself, also referred to as self (see ??? and ???). Non-empty.

    The meta object SHALL NOT be present in the resource of creation and update requests.

In the following example, we present an event resource (i.e. a resource of type events) might be represented as follows:

{
  "type": "events",
  "id": "1",
  "meta": {
    "lastUpdate": "2019-11-05T08:15:30-05:00",
    ...
  },
  "attributes": {
    "name": {
      "eng": "My event",
      "ita": "Il mio evento"
    },
    "startDate": "2020-04-01T09:30:00+00:00",
    ...
  },
  "relationships": {
    "organizers": {
      "data": [
        {
          "type": "agents",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/organizer"
      }
    },
    ...
  },
  "links": {
    "self": "https://example.com/2022-04/events/1"
  }
}

Note that each reference to another resource within the data in the relationships object consists only of a type and an id. The relationships object SHALL NOT contain the actual data of these resources, but only their references. We refer to the section Relationships Object for the mechanisms on how to access the actual referenced resource.

Each resource type defines a set of fields that must be present in each of these objects. However, a specific SERVER, when implementing the AlpineBits®, MAY include additional fields, but it MUST comply to the JSON:API v1.0 standard (e.g., additional metadata fields within the meta object, or additional resource’s attributes within the attributes object). It is also RECOMMENDED that the SERVER follow the style of the AlpineBits® standard when including additional fields.

Meta Object

A meta object MUST contain the following fields:

  • lastUpdate: a ??? that identifies when a resource was last modified in the SERVER. If no modifications were made after the resource’s creation, the value in this field will be the creation date. Nullable.

  • dataProvider: a ??? that identifies the organization responsible for provide the resource’s data to the SERVER. The data provider field is intended to offer basic data traceability, for example, allowing users to contact providers regarding questions or issues with a resource’s data. The data provider field should not be interpreted as the data author, as these two may differ. The data provider may be the the organization providing the SERVER itself. Non-nullable.

    For example, the URL "http://tourism.opendatahub.bz.it/" would be used to represent that a resource has been modified by the OpenDataHub platform.

An example of meta object is presented below:

{
  "dataProvider": "http://tourism.opendatahub.bz.it/",
  "lastUpdate": "2019-05-01T08:15:30-05:00"
}

Attributes Object

The attributes object of every resource in this specification MUST contain the following fields:

  • abstract: a ??? object containing a short textual description of the resource. The size of an abstract in any given language SHOULD be at most 200 characters long. This field SHOULD NOT contain the same data as in the description field. Nullable.

  • description: a ??? object containing the complete textual description of the resource. If abstract is not null, this field MUST NOT be null.

  • name: a ??? object containing the complete name of the resource. This field MUST NOT be null if shortName is not null or if otherwise specified for by a particular resource type.

  • shortName: a ??? object containing a short name of the resource. The size of a short name in any given language SHOULD be at most 36 characters long. This field SHOULD NOT contain the same data as in the name field. Nullable.

  • url: a ??? string or a multilingual url object containing language-specific ??? strings. Nullable if not otherwise specified.

An example of a URL string:

"https://www.alpinebits.org/events/1"

An example of a multilingual URL object:

{
  "deu": "https://www.alpinebits.org/de/events/1",
  "eng": "https://www.alpinebits.org/en/events/1",
  "ita": "https://www.alpinebits.org/it/events/1"
}

The following object exemplifies the use of the basic attributes defined above for an event resource:

{
  "type": "events",
  "id": "1",
  "meta": { ... },
  "attributes": {
    "abstract": {
      "eng": "An event for those who want to implement AlpineBits at their companies.",
      "ita": "Un evento per coloro che vogliono implementare AlpineBits nelle loro aziende."
    },
    "description": {
      "eng": "A 1-day workshop in which we present and explain the standard, give implementation suggestions...",
      "ita": "Un workshop da 1 giorno in cui presentiamo e spieghiamo lo standard, facciamo suggerimenti di implementazione..."
    },
    "name": {
      "eng": "AlpineBits DestinationData workshop for newcomers",
      "ita": "AlpineBits DestinationData workshop per i nuovi membri"
    },
    "shortName": {
      "eng": "DestinationData Workshop",
      "ita": "DestinationData Workshop"
    },
    "url": "https://www.alpinebits.org/events/1"
    ...
  },
  "relationships": { ... },
  "links": { ... }
}

The object below exemplifies an event which only has a name in English and no short name:

{
  "type": "events",
  "id": "1",
  "meta": { ... },
  "attributes": {
    "name": {
      "eng": "AlpineBits DestinationData workshop for newcomers."
    },
    "shortName": null,
    ...
  },
  "relationships": { ... },
  "links": { ... }
}

Relationships Object

The relationships object contains reference objects to one or many resources in every field allowing for resources to be connected through domain relationship in a modular way (see Relationship in JSON:API v1.0). Every relationship (i.e., relationship field) within the relationships object MUST contain either a reference object or null. Every resource type MUST define the relationships within the relationships object as either Reference to One objects or Reference to Many objects depending on the semantic of the relationship.

Reference to One

A reference object to one resource MUST contain the following fields:

  • data: an object containing the type string and the id string of the referred resource.

  • links: an object containing the related field with a string representing the endpoint on which the referred resource is available.
    In case the resource does not support the endpoint of the related resource, the presence of the field relates is OPTIONAL.

For example, the Media Objects resource type defines a relationship licenseHolder (see Relationships) to the agent resource representing the media object’s owner:

{
  "type": "mediaObjects",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": {
    "licenseHolder": {
      "data": {
        "type": "agents",
        "id": "1"
      },
      "links": {
        "related": "https://example.com/2022-04/mediaObjects/1/licenseHolder"
      }
    }
  },
  "links": { ... }
}

In case a resource has no related resource, the reference can be set to null according to the requirements defined in its resource type. For example, a media object resource that does not refer to an agent resource as its license holder can be presented as follows:

{
  "type": "mediaObjects",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": {
    "licenseHolder": null
  },
  "links": { ... }
}

Reference to Many

A reference object to many resources MUST contain the following fields:

  • "data": an array of objects containing the type string and the id string of each referred resource.

  • "links": an object containing the related field with a string representing the endpoint on which the referred resources are available.
    In case the resource does not support the endpoint of the related resource, the presence of the field relates is OPTIONAL.

For example, the event resource type defines a relationship organizers (see Relationships) to the agent resources representing the event’s owner:

{
  "type": "events",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": {
    "organizers": {
      "data": [
        {
          "type": "agents",
          "id": "4"
        },
        {
          "type": "agents",
          "id": "1"
        },
        {
          "type": "agents",
          "id": "9"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/mediaObjects/1/licenseHolder"
      }
    },
    ...
  },
  "links": { ... }
}

In case a resource has no related resource, the reference can be set to null according to the requirements defined in its resource type. For example, a media object resource that does not refer to an agent resource as its license holder can be presented as follows:

{
  "type": "events",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": {
    "organizers": null,
    ...
  },
  "links": { ... }
}

Every resource, with the exception of instances of categories, features, and media objects, MUST contain the Reference to Many bellow within the relationships object. Of these, categories and features MUST contain the Reference to Many multimediaDescriptions, and media objects MUST contain the Reference to Many categories

  • categories: a Reference to Many category resources identifying the categories instantiated by the resource. The values proposed by the standard for each resource type are listed in each resource section. Non-nullable. Non-empty.
  • multimediaDescriptions: a Reference to Many media object resources that illustrates a resource. Media objects be images, videos, audio, data documents (e.g. csv, json), textual documents (e.g. doc, pdf), html documents, and so on.

Here is an example of how to use the multimediaDescriptions relationship:

{
  "type": "events",
  "id": "1",
  "attributes": { ... },
  "relationships": {
    "categories": {
      "data": [
        {
          "type": "categories",
          "id": "alpinebits:inPersonEvent"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/categories"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "1"
        },
        {
          "type": "mediaObjects",
          "id": "2"
        },
        {
          "type": "mediaObjects",
          "id": "3"
        },
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/multimediaDescriptions"
      }
    }
    ...
  },
  "links": { ... }
}

The links object of instances of every resource type MUST contain the following fields:

  • self: a string representing the endpoint on which the container resource is available.
    For example, an event resource may be presented as follows:
    {
      "type": "events",
      "id": "1",
      "attributes": { ... },
      "relationships": { ... },
      "links": {
        "self": "https://example.com/2022-04/events/1"
      }
    }
    

Resource Schemas

Agents

A resource that implements the concept of Agent defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields:

  • type: the constant "agents" that identifies the resource as being of the type agent.

  • id: a string that uniquely and persistently identifies the agent within a SERVER. See the definition in Basic Fields.

  • attributes: an object containing the attributes of the agent.

  • relationships: an object containing the relationships of the agent to other resources.

  • links: an object containing the links related to the agent.

Agent resources are structured in the following way:

{
  "type": "agents",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of the agent resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description for the agent. Nullable. See the definition in Attributes Object.

  • contactPoints: an array of ??? objects. Nullable. Non-empty.

  • description: a ??? object containing a description of the agent. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • name: a ??? object containing the complete name of the agent. Non-nullable. Conditional Assignment. See the definition in Attributes Object.

  • shortName: a ??? object containing a short name of the agent. Nullable. See the definition in Attributes Object.

  • url: a ??? object or string describing the agent, such as a website or a Wikipedia page. Nullable. See the definition in Attributes Object.

A summary of the attributes is presented in the table below:

Field Type Constraints

abstract

???

Nullable

contactPoints

Array of ???

Nullable, Non-empty

description

???

Nullable, Conditional Assignment

name

???

Non-nullable, Conditional Assignment

shortName

???

Nullable

url

???

Nullable

Relationships

The relationships object of the agent resource MUST contain the following fields:

  • categories: a Reference to Many category resources that are instantiated by the agent. See Section Categories. Nullable. Non-empty.

    The standard defines the following disjoint categories for agents:

    • "alpinebits:person": an agent resource representing a particular person. For instance, an artist who sings at a concert or a photographer who owns the license of a photo.

    • "alpinebits:organization": an agent resource representing a public or a private organization. For instance, a company organizing an event or the owner of a mountain area.

  • multimediaDescriptions: a Reference to Many media object resources (see Media Objects) that are related to the agent. See Section multimediaDescriptions. Nullable. Non-empty.

A summary of the relationships is presented in the table below:

Field Type Constraints

categories

Reference to Many object to Categories

Nullable, Non-empty

multimediaDescriptions

Reference to Many object to Media Objects

Nullable, Non-empty

See the definition of the links object in Links Object.

Examples

The following example presents an object containing the minimal information required of an agent resource:

{
  "type": "agents",
  "id": "1",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "abstract": null,
    "contactPoints": null,
    "description": null,
    "name": {
      "eng": "Free University of Bozen-Bolzano"
    },
    "shortName": null,
    "url": null
  },
  "relationships": {
    "categories": null,
    "multimediaDescriptions": null
  },
  "links": {
    "self": "https://example.com/2022-04/agents/1"
  }
}

asciidoc/examples/agent.min.json

The following example presents an object representing an agent resource:

{
  "type": "agents",
  "id": "1",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2020-04-01T08:00:00+02:00"
  },
  "attributes": {
    "abstract": {
      "ita": "La Libera Università di Bolzano sorge in una delle più attraenti regioni europee...",
      "deu": "Die Freie Universität Bozen befindet sich in einer der attraktivsten Regionen Europas...",
      "eng": "The Free University of Bozen-Bolzano is located in one of the most fascinating European regions..."
    },
    "contactPoints": [
      {
        "email": "info@noi.bz.it",
        "telephone": "+39 0471 066 600",
        "address": {
          "street": {
            "ita": "Piazza Università 1"
          },
          "city": {
            "ita": "Bolzano"
          },
          "region": {
            "ita": "Trentino-Alto Adige"
          },
          "country": "IT",
          "zipcode": "39100",
          "complement": {
            "ita": "Ufficio 3.07"
          },
          "categories": [
            "example:main"
          ]
        },
        "availableHours": {
          "dailySchedules": {
            "2020-12-23": [
              {
                "opens": "08:00:00",
                "closes": "12:00:00"
              }
            ],
            "2020-12-25": null
          },
          "weeklySchedules": [
            {
              "validFrom": "2020-01-01",
              "validTo": "2020-12-31",
              "monday": [
                {
                  "opens": "08:00:00+01:00",
                  "closes": "12:00:00+01:00"
                },
                {
                  "opens": "14:00:00+01:00",
                  "closes": "18:00:00+01:00"
                }
              ],
              "tuesday": [
                {
                  "opens": "08:00:00+01:00",
                  "closes": "12:00:00+01:00"
                },
                {
                  "opens": "14:00:00+01:00",
                  "closes": "18:00:00+01:00"
                }
              ],
              "wednesday": [
                {
                  "opens": "08:00:00+01:00",
                  "closes": "12:00:00+01:00"
                },
                {
                  "opens": "14:00:00+01:00",
                  "closes": "18:00:00+01:00"
                }
              ],
              "thursday": [
                {
                  "opens": "08:00:00+01:00",
                  "closes": "12:00:00+01:00"
                },
                {
                  "opens": "14:00:00+01:00",
                  "closes": "18:00:00+01:00"
                }
              ],
              "friday": [
                {
                  "opens": "08:00:00+01:00",
                  "closes": "12:00:00+01:00"
                },
                {
                  "opens": "14:00:00+01:00",
                  "closes": "18:00:00+01:00"
                }
              ],
              "saturday": null,
              "sunday": null
            }
          ]
        }
      }
    ],
    "description": {
      "ita": "La Libera Università di Bolzano sorge in una delle più attraenti regioni europee, al crocevia tra il mondo economico e culturale tedesco e italiano.",
      "deu": "Die Freie Universität Bozen befindet sich in einer der attraktivsten Regionen Europas an der Schnittstelle zwischen dem deutschsprachigen und italienischen Kultur- und Wirtschaftsraum.",
      "eng": "The Free University of Bozen-Bolzano is located in one of the most fascinating European regions, at the crossroads between the German-speaking and Italian economies and cultures."
    },
    "name": {
      "ita": "Libera Univeristà di Bolzano",
      "deu": "Freie Universität Bozen",
      "eng": "Free University of Bozen-Bolzano"
    },
    "shortName": {
      "eng": "Unibz"
    },
    "url": "https://www.unibz.it"
  },
  "relationships": {
    "categories": {
      "data": [
        {
          "type": "categories",
          "id": "alpinebits:organization"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/agents/1/categories"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/agents/1/multimediaDescriptions"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/agents/1"
  }
}

asciidoc/examples/agent.full.json

Categories

A resource that implements the concept of Category defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields:

  • type: the constant "categories" that identifies the resource as being of the type category.

  • id: a string that uniquely and persistently identifies the category within a SERVER. This id MUST be a human-readable string composed of a namespace, identifying the context defining the category (e.g., the data provider or the standard), and the category name, these two separated by a colon (i.e., "<namespace>:<categoryname>").

    Category id strings MUST be valid against the regular expression below. Examples of categories listed in this standard include "alpinebits:person" and "alpinebits:organization", as categories of agents, and "schema:BusinessEvent" as a category of events.

    "^([a-z]|[A-Z]|[0-9])+:([a-z]|[A-Z]|[0-9])+$"
    
  • attributes: an object containing the attributes of the category.

  • relationships: an object containing the relationships of the category to other resources.

  • links: an object containing the links related to the category.

Category resources are structured in the following way:

{
  "type": "categories",
  "id": "example:soccerEvent",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of the agent resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description for the category. Nullable. See the definition in Attributes Object.

  • description: a ??? object containing a description of the category. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • name: a ??? object containing the complete name of the category. Different to the category’s id, the category’s name serves no identification purpose, but only as a description. Therefore, the category’s name SHOULD be a human-readable text friendly to end users. Non-nullable. Conditional Assignment. See the definition in Attributes Object.

  • namespace: a string containing the namespace that prefixes the category’s id. The namespace identifies the context where a category is defined. For instance, the namespace for the category "alpinebits:person", which is defined in this standard, is "alpinebits". Non-nullable. Non-empty.

    A SERVER SHALL NOT use alpinebits as the namespace of a category it defines.

    A SERVER SHOULD adopt a single namespace for all categories it defines.

    An example of a non-standardized category is "unibz:academic", which could represent a category defined by the Free University of Bozen-Bolzano (acting as a SERVER) that classifies events that its students can attend.

  • resourceTypes: an array of strings containing the resource types that the category is applicable to. For example, the value of resourceTypes for the category "alpinebits:person" is [ "agents" ], since this category exclusively applies to resources with the type "agents". Non-nullable. Non-empty.

  • shortName: a ??? object containing a short name of the category. Nullable. See the definition in Attributes Object.

  • url: a ??? object or string describing the category, such as a website or a Wikipedia page. Nullable. See the definition in Attributes Object.

A summary of the attributes is presented in the table below:

Field Type Constraints

abstract

???

Nullable

description

???

Nullable, Conditional Assignment

name

???

Non-nullable, Conditional Assignment

namespace

???

Non-nullable, Conditional Assignment

resourceTypes

Array of string

Non-nullable, Non-empty

shortName

???

Nullable

url

???

Nullable

Relationships

The relationships object of the agent resource MUST contain the following fields:

  • children: a Reference to Many category resources that specialize the category. Every instance of a child category is also an instance of the referring category. Every category listed as child MUST refer back to the referring category as its parent category (i.e., inverse relations). Conditional assignment. Nullable. Non-empty.

    For example, if the category "example:sportsEvent" refers to the category "example:soccerEvent" as its child, every resource that instantiates "example:soccerEvent" also instantiates the category "example:sportsEvent".

  • multimediaDescriptions: a Reference to Many media object resources (see Media Objects) that are related to the category. See Section multimediaDescriptions. Nullable. Non-empty.

  • parents: a Reference to Many category resources that are specialized by the category. Every instance of the referring category is also an instance of the parent category. Every category listed as parent MUST refer back to the referring category as its child category (i.e., inverse relations). Conditional assignment. Nullable. Non-empty.

    For example, if the category "example:modernArtEvent" refers to the category "example:artEvent" as its parent, every resource that instantiates "example:modernArtEvent" also instantiates the category "example:artEvent".

A summary of the relationships is presented in the table below:

Field Type Constraints

children

Reference to Many object to Categories

Nullable, Non-empty

multimediaDescriptions

Reference to Many object to Media Objects

Nullable, Non-empty

parents

Reference to Many object to Categories

Nullable, Non-empty

The links object of category resources MUST contain the following fields:

  • self: a string representing the endpoint on which the container resource is available. Non-nullable.

  • resources: a object where the key-value pairs contains URLs for retrieving resources that instantiate the category. The object MUST include key for each string in the resourceTypes attribute array, and the corresponding value in the pair is the endpoint for that resource type. Whenever supported, a filter for the category MUST be included (see example below). Non-nullable.

For example, the links object of a category resource may be presented as follows:

{
  "type": "categories",
  "id": "alpinebits:person",
  "attributes": {
    "resourceTypes": [ "agents" ],
    ...
  },
  "relationships": { ... },
  "links": {
    "self": "https://example.com/2022-04/categories/alpinebits:person",
    "resources": {
      "agents": "https://example.com/2022-04/agents?filter[category][any]=alpinebits:person"
    }
  }
}

Examples

The following example presents an object containing the minimal information required of a category resource:

{
  "type": "categories",
  "id": "example:temporarilyRestricted",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "abstract": null,
    "description": null,
    "name": {
      "eng": "Temporarily Restricted"
    },
    "namespace": "example",
    "resourceTypes": [ "venues" ],
    "shortName": null,
    "url": null
  },
  "relationships": {
    "children": null,
    "multimediaDescriptions": null,
    "parents": null
  },
  "links": {
    "self": "https://example.com/2022-04/categories/example:temporarilyRestricted",
    "resources": {
      "venues": "https://example.com/2022-04/venues?filter[categories][any]=example:temporarilyRestricted"
    }
  }
}

asciidoc/examples/category.min.json

The following example presents an object representing a category resource:

{
  "type": "categories",
  "id": "example:soccerEvent",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2022-04-01T08:00:00+02:00"
  },
  "attributes": {
    "abstract": {
      "ita": "Un evento sportivo legato al calcio.",
      "deu": "Ein Sportereignis, das mit Fußball zu tun hat.",
      "eng": "A sports event related to soccer."
    },
    "description": {
      "ita": "Un evento sportivo legato al calcio, per esempio una partita di calcio o un incontro con i giocatori.",
      "deu": "Ein Sportereignis mit Bezug zum Fußball, z. B. ein Fußballspiel oder ein Meet-and-Greet mit Spielern.",
      "eng": "A sports event related to soccer, for example a soccer match or a meet-and-greet with players."
    },
    "name": {
      "ita": "Evento di Calcio",
      "deu": "Fußball-Event",
      "eng": "Soccer Event"
    },
    "namespace": "example",
    "resourceTypes": [ "events" ],
    "shortName": {
      "eng": "Soccer Event"
    },
    "url": "https://en.wikipedia.org/wiki/Association_football"
  },
  "relationships": {
    "children": {
      "data": [
        {
          "type": "categories",
          "id": "example:sub19SoccerMatch"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/categories/example:soccerEvent/children"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/categories/example:soccerEvent/multimediaDescriptions"
      }
    },
    "parents": {
      "data": [
        {
          "type": "categories",
          "id": "schema:SportsEvent"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/categories/example:soccerEvent/parents"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/categories/example:soccerEvent",
    "resources": {
      "events": "https://example.com/2022-04/events?filter[categories][any]=example:soccerEvent"
    }
  }
}

asciidoc/examples/category.full.json

Events

A resource that implements the concept of Event defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields:

  • type: the constant "events" that identifies the resource as being of the type event.

  • id: a string that uniquely and persistently identifies the event within a SERVER. See the definition in Basic Fields.

  • attributes: an object containing the attributes of the event.

  • relationships: an object containing the relationships of the event to other resources.

  • links: an object containing the links related to the event.

An event resource is structured as follows:

{
  "type": "events",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of an event resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description of the event. Nullable. See the definition in Attributes Object.

  • description: a ??? object containing a description of the event. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • endDate: a string, formatted as ??? or ???, representing when the event is planned to end. This field can only be null if startDate is defined.

  • inPersonCapacity: an integer representing the total number of individuals that can attend the event in-person. This field can only be assigned in events having the one of the following categories: "alpinebits:inPersonEvent", or "alpinebits:hybridEvent". Nullable. Positive integer. Conditional assignment.

  • name: a ??? object containing the complete name of the event. Non-nullable. Conditional Assignment. See the definition in Attributes Object.

  • onlineCapacity: an integer representing the total number of individuals that can attend the event virtually. This field can only be assigned in events having the one of the following categories: "alpinebits:virtualEvent", or "alpinebits:hybridEvent". Nullable. Positive integer. Conditional assignment.

  • participationUrl: a ??? object or string containing the URL for virtual event attendance. This field can only be assigned in events having the one of the following categories: "alpinebits:virtualEvent", or "alpinebits:hybridEvent". Nullable. Conditional assignment.

  • recorded: a boolean value indicated whether the event will be recorded. Nullable.

  • registrationUrl: a ??? object or string containing the URL for event registration. Nullable.

  • shortName: a ??? object containing a short name of the event. Nullable. See the definition in Attributes Object.

  • startDate: a string, formatted as ??? or ???, representing when the event is planned to start. This field can only be null if endDate is defined.

  • status: a string representing the current status of the event. Nullable. The possible values for this field are the following enumerated values:

    • published: the event has been published. It may or may not have happened.

    • canceled: the event has been canceled. Events can only be canceled before they have started.

  • url: a ??? object or string describing the event, such as a website or a Wikipedia page. Nullable. See the definition in Attributes Object.

A summary of the attributes is presented in the table below:

Field Type Constraints

abstract

???

Nullable

description

???

Nullable

endDate

??? or ???

Nullable, Conditional Assignment

inPersonCapacity

integer

Nullable, Greater than Zero, Conditional Assignment

name

???

Non-Nullable

onlineCapacity

integer

Nullable, Greater than Zero, Conditional Assignment

participationUrl

???

Nullable, Conditional Assignment

recorded

boolean

Nullable

registrationUrl

???

Nullable

shortName

???

Nullable

startDate

??? or ???

Nullable, Conditional Assignment

status

string

Nullable, Enumeration

url

???

Nullable

Relationships

The relationships object of an event resource MUST contain the following fields:

  • categories: a Reference to Many category resources that are instantiated by the event. See Section Categories. Non-nullable. Non-empty.

    The standard recommends the use of event types defined in Schema.org, which are identified by the schema namespace: "schema:BusinessEvent", "schema:ChildrensEvent", "schema:ComedyEvent", "schema:CourseInstance", "schema:DanceEvent", "schema:DeliveryEvent", "schema:EducationEvent", "schema:EventSeries", "schema:ExhibitionEvent", "schema:Festival", "schema:FoodEvent", "schema:Hackathon", "schema:LiteraryEvent", "schema:MusicEvent", "schema:PublicationEvent", "schema:SaleEvent", "schema:ScreeningEvent", "schema:SocialEvent", "schema:SportsEvent", "schema:TheaterEvent", "schema:VisualArtsEvent".

    Additionally, the standard defines the three disjoint categories for events where every event MUST be assigned with exactly one of them:

    • "alpinebits:inPersonEvent": an event resource representing a event planned for exclusive in-person attendance.

    • "alpinebits:virtualEvent": an event resource representing a event planned for exclusive virtual attendance.

    • "alpinebits:hybridEvent": an event resource representing a event planned for both in-person and virtual attendance.

  • contributors: a Reference to Many agent resources (see Agents), which identifies the agents expected to participate in the event, such as a speaker who will give a talk or a musician who will perform at a concert. Contributors do not include those attending the event. Nullable. Non-empty.

  • multimediaDescriptions: a Reference to Many media object resources (see Media Objects) that are related to the event. See Section multimediaDescriptions. Nullable. Non-empty.

  • organizers: a Reference to Many agent resources (see Agents) identifying the persons or organizations responsible for organizing the event. Non-nullable. Non-empty.

  • publisher: a Reference to One agent resource (see Agents) who originally provided the data about the event. The publisher is not the organization who manages the system where the data was originally inserted, but the organization actually provided the data. Non-nullable.

  • series: a Reference to One event series resource (see Event Series) of which the event is an edition of. For instance, the Südtirol Jazz Festival 2020 is an edition of the Südtirol Jazz Festival. Nullable.

    Not that sub-events do not share the same series as the whole, but they may be editions of unrelated event series. For example, the "South Tyrol Jazz Festival 2021" may be an edition of the "South Tyrol Jazz Festival" series, while the presentation of "András Dés Rangers on 04/07/2021", its sub-event, may be an edition of the "András Dés Rangers European Tour 2021".

  • sponsors: a Reference to Many agent resources (see Agents) identifying the persons or organizations who are sponsoring the event. Nullable. Non-empty.

  • subEvents: a Reference to Many event resources (see Events) identifying the parts of the event. For instance, a festival may consist of several concerts and a conference may consist of several presentations and a keynote. Nullable. Non-empty.

    There SHALL NOT be a circular composition of events. For instance, if X is a sub-event of Y, and Y is a sub-event of Z, Z SHALL NOT be a sub-event of X.

    Note that sub-events are not restricted to the temporal boundaries of their parent events. For instance, a conference that starts on 15/03/2020 and ends on 20/03/2020 may have, as a sub-event, a pre-conference meeting that is scheduled for the 14/03/2020.

  • venues: a Reference to Many venue resources (see Venues) identifying where the event will happen. This field is non-nullable in events having the one of the following categories: "alpinebits:inPersonEvent", or "alpinebits:hybridEvent". Nullable. Non-empty. Conditional Assignment.

A summary of the relationships is presented in the table below:

Field Type Constraints

categories

Reference to Many object to Categories

Non-Nullable, Non-empty

contributors

Reference to Many object to Agents

Nullable, Non-empty

multimediaDescriptions

Reference to Many object to Media Objects

Nullable, Non-empty

organizers

Reference to Many object to Agents

Non-Nullable, Non-empty

publisher

Reference to One object to Agents

Non-Nullable

series

Reference to One object to Event Series

Nullable

sponsors

Reference to Many object to Agents

Nullable, Non-empty

subEvents

Reference to Many object to Events

Nullable, Non-empty

venues

Reference to Many object to Venues

Nullable, Non-empty, Conditional Assignment

See the definition of the links object in Links Object.

Examples

The following example contains the minimal information required for an event resource:

{
  "type": "events",
  "id": "1",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "name": {
      "eng": "Südtirol Jazz Festival 2018"
    },
    "shortName": null,
    "description": null,
    "abstract": null,
    "startDate": "2018-06-29T00:00:00+00:00",
    "endDate": null,
    "url": null,
    "status": null,
    "inPersonCapacity": null,
    "onlineCapacity": null,
    "participationUrl": null,
    "recorded": null,
    "registrationUrl": null
  },
  "relationships": {
    "series": null,
    "publisher": {
      "data": {
        "type": "agents",
        "id": "1"
      },
      "links": {
        "related": "https://example.com/2022-04/events/1/publisher"
      }
    },
    "organizers": {
      "data": [
        {
          "type": "agents",
          "id": "2"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/organizers"
      }
    },
    "sponsors": null,
    "contributors": null,
    "categories": {
      "data": {
        "type": "categories",
        "id": "alpinebits:inPersonEvent"
      },
      "links": {
        "related": "https://example.com/2022-04/events/1/categories"
      }
    },
    "multimediaDescriptions": null,
    "venues": {
      "data": [
        {
          "type": "venues",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/venues"
      }
    },
    "subEvents": null
  },
  "links": {
    "self": "https://example.com/2022-04/events/1"
  }
}

examples/event.min.json

The following example illustrates the fields defined for event resources:

{
  "type": "events",
  "id": "1",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2020-04-01T08:00:00+02:00"
  },
  "attributes": {
    "name": {
      "eng": "Südtirol Jazz Festival 2020",
      "deu": "Südtirol Jazz Festival 2020",
      "ita": "Südtirol Jazz Festival 2020"
    },
    "shortName": {
      "eng": "Südtirol Jazz Festival 2020"
    },
    "description": {
      "deu": "Beim Südtirol Jazzfestival Alto Adige wagen sich Solisten und Ensembles nicht nur in schwindelerregende musikalische „Höhen“ vor, sondern besteigen, mit ihren Instrumenten im Gepäck, sogar „echte“ Berge und bespielen dabei eine atemberaubende alpine Landschaft. Das Festival selbst beschreitet oft ganz neue Wege: selbstbewusst und sich mitunter über zerklüftete Spalten herantastend, versucht es in neue Klanglandschaften vorzudringen. Mainstream und Konzertsäle sind beim Südtirol Jazzfestival Alto Adige vom Aussterben bedroht...."
    },
    "abstract": {
      "deu": "Das Südtirol Jazzfestival Alto Adige ist ein in Südtirol stattfindendes Musikfestival für Jazz und experimentelle Musik."
    },
    "startDate": "2020-06-26T21:00:00+00:00",
    "endDate": "2020-07-07T23:30:00+00:00",
    "url": "https://www.suedtiroljazzfestival.com/",
    "status": "published",
    "inPersonCapacity": 1000,
    "onlineCapacity": 10000,
    "participationUrl": "https://www.example-streaming-site.com/asdeZCawdeGfdg44fas",
    "recorded": true,
    "registrationUrl": "https://www.example-tickets-site.com/asdeZCawdeGfdg44fas"
  },
  "relationships": {
    "series": {
      "data": {
        "type": "eventSeries",
        "id": "1"
      },
      "links": {
        "related": "https://example.com/2022-04/events/1/eventSeries"
      }
    },
    "publisher": {
      "data": {
        "type": "agents",
        "id": "1"
      },
      "links": {
        "related": "https://example.com/2022-04/events/1/publisher"
      }
    },
    "organizers": {
      "data": [
        {
          "type": "agents",
          "id": "2"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/organizers"
      }
    },
    "sponsors": {
      "data": [
        {
          "type": "agents",
          "id": "3"
        },
        {
          "type": "agents",
          "id": "4"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/sponsors"
      }
    },
    "contributors": {
      "data": [
        {
          "type": "agents",
          "id": "5"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/contributors"
      }
    },
    "categories": {
      "data": [
        {
          "type": "categories",
          "id": "alpinebits:hybridEvent"
        },
        {
          "type": "categories",
          "id": "schema:MusicEvent"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/categories"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "1"
        },
        {
          "type": "mediaObjects",
          "id": "2"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/multimediaDescriptions"
      }
    },
    "venues": {
      "data": [
        {
          "type": "venues",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/venues"
      }
    },
    "subEvents": {
      "data": [
        {
          "type": "events",
          "id": "2"
        },
        {
          "type": "events",
          "id": "3"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/events/1/subEvents"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/events/1"
  }
}

examples/event.full.json

Event Series

A resource that implements the concept of Event Series defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields:

  • type: the constant "eventSeries" that identifies the resource as being of the type event series.

  • id: a string that uniquely and persistently identifies the event series within a SERVER. See the definition in Basic Fields.

  • attributes: an object containing the attributes of the event series.

  • relationships: an object containing the relationships of the event series to other resources.

  • links: an object containing the links related to the event series.

Event series resources are structured in the following way:

{
  "type": "eventSeries",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of the event resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description for the event series. Nullable. See the definition in Attributes Object.

  • description: a ??? object containing a description of the event series. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • frequency: a string representing how often editions of the event series are organized according to an enumeration of possible values. Nullable. Enumeration.
    For example, event series with the frequency field set to "weekly" may include street markets and guided city tours, while event series with the frequency field set to "yearly" may include Südtirol Jazz Festival or Flower Festival.
    If set, the frequency field MUST be assigned one of the following values:

    • daily: when editions of the event series are organized every day, such as the daily street market of Bolzano.

    • weekly: when editions of the event series are organized every week, such as the weekly farmers' market of Bolzano.

    • monthly: when editions of the event series are organized every month, such as a flea market organized every month.

    • bimonthly: when editions of the event series are organized every two months.

    • quarterly: when editions of the event series are organized every three months.

    • annual: when editions of the event series are organized every year, such as the Südtirol Jazz Festival or Bolzano’s Christmas Market.

    • biennial: when editions of the event series are organized every two years.

    • triennial: when editions of the event series are organized every three years.

  • name: a ??? object containing the complete name of the event series. Non-nullable. Conditional Assignment. See the definition in Attributes Object.

  • shortName: a ??? object containing a short name of the event series. Nullable. See the definition in Attributes Object.

  • url: a ??? object or string describing the event series, such as a website or a Wikipedia page. Nullable. See the definition in Attributes Object.

A summary of the attributes is presented in the table below:

Field Type Constraints

abstract

???

Nullable

description

???

Nullable, Conditional Assignment

frequency

string

Nullable, Enumeration

name

???

Non-nullable, Conditional Assignment

shortName

???

Nullable

url

???

Nullable

Relationships

The relationships object of an event series resource MUST contain the following fields:

  • categories: a Reference to Many category resources that are instantiated by the event series. See Section Categories. Nullable. Non-empty.

    No category is pre-defined by the standard.

  • editions: a Reference to Many event resources (see Events) that are editions of the event series. Nullable. Non-empty.

    Note that no two editions of an event series can be a sub-event of the other.

  • multimediaDescriptions: a Reference to Many media object resources (see Media Objects) that are related to the event series. See Section multimediaDescriptions. Nullable. Non-empty.

A summary of the relationships is presented in the table below:

Field Type Constraints

categories

Reference to Many object to Categories

Nullable, Non-empty

editions

Reference to Many object to Events

Nullable, Non-empty

multimediaDescriptions

Reference to Many object to Media Objects

Nullable, Non-empty

See the definition of the links object in Links Object.

Examples

The following example presents an object containing the minimal information required of an event series resource:

{
  "type": "eventSeries",
  "id": "1",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "abstract": null,
    "description": null,
    "frequency": null,
    "name": {
      "eng": "Südtirol Jazz Festival"
    },
    "shortName": null,
    "url": null
  },
  "relationships": {
    "categories": null,
    "multimediaDescriptions": null,
    "editions": null
  },
  "links": {
    "self": "https://example.com/2022-04/eventSeries/1"
  }
}

asciidoc/examples/eventseries.min.json

The following example presents an object representing an event series resource:

{
  "type": "eventSeries",
  "id": "1",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2020-04-01T08:00:00+02:00"
  },
  "attributes": {
    "abstract": {
      "eng": "The Südtirol Jazzfestival Alto Adige was held for the first time in 1982 under the name of “Jazz Summer”..."
    },
    "description": {
      "eng": "The Südtirol Jazzfestival Alto Adige was held for the first time in 1982 under the name of “Jazz Summer”, which went on to become “Jazz & Other”. While in the early years the concerts were played only in Bolzano itself, today the festival stretches throughout the whole of South Tyrol and beyond."
    },
    "frequency": "annual",
    "name": {
      "eng": "Südtirol Jazz Festival",
      "ita": "Südtirol Jazz Festival",
      "deu": "Südtirol Jazz Festival"
    },
    "shortName": {
      "eng": "Südtirol Jazz Festival"
    },
    "url": "https://www.suedtiroljazzfestival.com/"
  },
  "relationships": {
    "categories": {
      "data": [
        {
          "type": "categories",
          "id": "example:festival"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/eventSeries/1/categories"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/eventSeries/1/multimediaDescriptions"
      }
    },
    "editions": {
      "data": [
        {
          "type": "events",
          "id": "1"
        },
        {
          "type": "events",
          "id": "2"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/eventSeries/1/editions"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/eventSeries/1"
  }
}

asciidoc/examples/eventseries.full.json

Features

A resource that implements the concept of Feature defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields:

  • type: the constant "features" that identifies the resource as being of the type feature.

  • id: a string that uniquely and persistently identifies the feature within a SERVER. This id MUST be a human-readable string composed of a namespace, identifying the context defining the feature (e.g., the SERVER or the standard), and the feature name, these two separated by a colon (i.e., "<namespace>:<featurename>").

    Feature id strings MUST be valid against the regular expression below.

    "^([a-z]|[A-Z]|[0-9])+:([a-z]|[A-Z]|[0-9])+$"
    
  • attributes: an object containing the attributes of the feature.

  • relationships: an object containing the relationships of the features to other resources.

  • links: an object containing the links related to the feature.

Feature resources are structured in the following way:

{
  "type": "features",
  "id": "example:snowparkRamp",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of the agent resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description for the feature. Nullable. See the definition in Attributes Object.

  • description: a ??? object containing a description of the feature. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • name: a ??? object containing the complete name of the feature. Differently from the feature’s id, its name serves no identification purpose, but only description. Therefore, the name SHOULD be a human-readable text friendly to end users. Non-nullable. Conditional Assignment. See the definition in Attributes Object.

  • namespace: a string containing the namespace that prefixes the feature’s id. The namespace identifies the context where a feature is defined. For instance, a SERVER may define the features "example:snowparkRamp" and "example:snowparkRail" under the namespace "example". Non-nullable. Non-empty.

    A SERVER SHALL NOT use alpinebits as the namespace of a feature it defines.

    A SERVER SHOULD adopt a single namespace for all features it defines.

  • resourceTypes: an array of strings containing the resource types that can present the feature. For example, the value of resourceTypes for the feature "example:snowparkRamp" is [ "snowpark" ]. At the moment, the standard only accounts for features of snowparks. Non-nullable. Non-empty.

  • shortName: a ??? object containing a short name of the feature. Nullable. See the definition in Attributes Object.

  • url: a ??? object or string describing the feature, such as a website or a Wikipedia page. Nullable. See the definition in Attributes Object.

A summary of the attributes is presented in the table below:

Field Type Constraints

abstract

???

Nullable

description

???

Nullable, Conditional Assignment

name

???

Non-nullable, Conditional Assignment

namespace

???

Non-nullable, Conditional Assignment

resourceTypes

Array of string

Non-nullable, Non-empty

shortName

???

Nullable

url

???

Nullable

Relationships

The relationships object of the agent resource MUST contain the following fields:

  • children: a Reference to Many feature resources that specialize the feature. Every resource presenting a child feature also must also present the referring feature. Every feature listed as child MUST refer back to the referring feature as its parent feature (i.e., inverse relations). Conditional assignment. Nullable. Non-empty.

    For example, if the feature "example:snowparkRamp" refers to the feature "example:snowboardingRamp" as its child, every resource that presents "example:snowboardingRamp" also presents the feature "example:snowparkRamp".

  • multimediaDescriptions: a Reference to Many media object resources (see Media Objects) that are related to the feature. See Section multimediaDescriptions. Nullable. Non-empty.

  • parents: a Reference to Many feature resources that are specialized by the feature. Every resource presenting the referring feature must also present the parent feature. Every feature listed as parent MUST refer back to the referring feature as its child feature (i.e., inverse relations). Conditional assignment. Nullable. Non-empty.

    For example, if the feature "example:snowboardingJib" refers to the feature "example:snowparkRail" as its parent, every resource that presents "example:snowboardingJib" also presents the feature "example:snowparkRail".

A summary of the relationships is presented in the table below:

Field Type Constraints

children

Reference to Many object to Features

Nullable, Non-empty

multimediaDescriptions

Reference to Many object to Media Objects

Nullable, Non-empty

parents

Reference to Many object to Features

Nullable, Non-empty

The links object of feature resources MUST contain the following fields:

  • self: a string representing the endpoint on which the container resource is available. Non-nullable.

  • resources: a object where the key-value pairs contains URLs for retrieving resources that present the feature. The object MUST include key for each string in the resourceTypes attribute array, and the corresponding value in the pair is the endpoint for that resource type. Whenever supported, a filter for the feature MUST be included (see example below). Non-nullable.

For example, the links object of a feature resource may be presented as follows:

{
  "type": "features",
  "id": "example:snowparkRail",
  "attributes": {
    "resourceTypes": [ "snowparks" ],
    ...
  },
  "relationships": { ... },
  "links": {
    "self": "https://example.com/2022-04/features/example:snowparkRail",
    "resources": {
      "snowparks": "https://example.com/2022-04/snowparks?filter[features][any]=example:snowparkRail"
    }
  }
}

Examples

The following example presents an object containing the minimal information required of a feature resource:

{
  "type": "features",
  "id": "example:snowparkRamp",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "abstract": null,
    "description": null,
    "name": {
      "eng": "Snowpark Ramp"
    },
    "namespace": "example",
    "resourceTypes": [ "snowparks" ],
    "shortName": null,
    "url": null
  },
  "relationships": {
    "children": null,
    "multimediaDescriptions": null,
    "parents": null
  },
  "links": {
    "self": "https://example.com/2022-04/features/example:snowparkRamp",
    "resources": {
      "snowparks": "https://example.com/2022-04/snowparks?filter[features][any]=example:snowparkRamp"
    }
  }
}

asciidoc/examples/feature.min.json

The following example presents an object representing a feature resource:

{
  "type": "features",
  "id": "example:snowparkRamp",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2022-04-01T08:00:00+02:00"
  },
  "attributes": {
    "abstract": {
      "ita": "Una rampa di snowpark è una struttura per la pratica di manovre aeree negli sport invernali radicali.",
      "deu": "Eine Snowpark-Rampe ist eine Struktur zum Üben von Flugmanövern im radikalen Wintersport.",
      "eng": "A snowpark ramp is a structure for the practice of aerial maneuvers in radical winter sports."
    },
    "description": {
      "ita": "Una rampa da snowpark è una struttura presente negli snowpark progettata per supportare l'esecuzione di manovre aeree negli sport invernali radicali.",
      "deu": "Eine Snowpark-Rampe ist eine Einrichtung in Snowparks, die dazu dient, die Ausführung von Flugmanövern bei radikalen Wintersportarten zu unterstützen.",
      "eng": "A snowpark ramp is a feature present in snowparks designed to support the execution of aerial maneuvers in radical winter sports."
    },
    "name": {
      "ita": "Snowpark Ramp",
      "deu": "Snowpark Rampe",
      "eng": "Snowpark Ramp"
    },
    "namespace": "example",
    "resourceTypes": [ "snowparks" ],
    "shortName": {
      "eng": "Snowpark Ramp"
    },
    "url": "https://en.wikipedia.org/wiki/Terrain_park"
  },
  "relationships": {
    "children": {
      "data": [
        {
          "type": "features",
          "id": "example:snowboardRamp"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/features/example:snowparkRamp/children"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/features/example:snowparkRamp/multimediaDescriptions"
      }
    },
    "parents": {
      "data": [
        {
          "type": "features",
          "id": "example:radicalSportsRamp"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/features/example:snowparkRamp/parents"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/features/example:snowparkRamp",
    "resources": {
      "snowparks": "https://example.com/2022-04/snowparks?filter[features][any]=example:snowparkRamp"
    }
  }
}

asciidoc/examples/feature.full.json

Lifts

A resource that implements the concept of Lift defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields:

  • type: the constant "lifts" that identifies the resource as being a lift.

  • id: a string that uniquely and persistently identifies the lift within a SERVER. See the definition in Basic Fields.

  • attributes: an object containing the attributes of the lift.

  • relationships: an object containing the relationships of the lift to other resources.

  • links: an object containing the links related to the lift.

A lift resource is structured as follows:

{
  "type": "lifts",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of a lift resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description for the lift. Nullable. See the definition in Attributes Object.

  • address: an ??? object representing the address of the lift. The address should only be set if the lift is directly accessible from a public road. In such cases, the address should be that of the base station. Nullable.

  • capacity: a number representing how many persons the lift can transport hourly on average. Nullable. Positive value.

  • description: a ??? object containing a description of the lift. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • geometries: an array of ??? objects each of which represents the location of the lift in terms of GPS coordinates. There should be at most one geometry object of each type (e.g. Point, LineString). Nullable. Non-empty.

  • howToArrive: a ??? object containing instructions on how to arrive at the lift. Nullable.

  • length: a number representing the length of the lift in meters. Nullable.

  • maxAltitude: a number representing the highest elevation point of the lift in meters above sea level. Nullable.

  • minAltitude: a number representing the lowest elevation point of the lift in meters above sea level. Nullable.

  • name: a ??? object containing the complete name of the lift. Non-nullable. Conditional Assignment. See the definition in Attributes Object.

  • openingHours: an ??? object representing the hours in which the lift is open to the public. Nullable.

  • personsPerChair: an integer representing the number of persons that fit in a single chair/cabin of a lift. Nullable. Positive value.

  • shortName: a ??? object containing a short name of the lift. Nullable. See the definition in Attributes Object.

  • url: a ??? object or string describing the lift, such as a website or a Wikipedia page. Nullable. See the definition in Attributes Object.

A summary of the attributes is presented in the table below:

Field Type Constraints

abstract

???

Nullable

address

???

Nullable

capacity

number

Nullable, Greater than Zero

description

???

Nullable, Conditional Assignment

geometries

Array of ???

Nullable, Non-empty

howToArrive

???

Nullable

length

number

Nullable, Unit of Measure, Greater than Zero

maxAltitude

number

Nullable, Unit of Measure

minAltitude

number

Nullable, Unit of Measure

name

???

Non-nullable, Conditional Assignment

openingHours

???

Nullable

personsPerChair

integer

Nullable, Greater than Zero

shortName

???

Nullable

url

???

Nullable

Relationships

The relationships object of a lift resource MUST contain the following fields:

  • categories: a Reference to Many category resources that are instantiated by the lift. See Section Categories. Nullable. Non-empty.

    The standard recommends the following categories for lifts:, "alpinebits:chairlift", "alpinebits:gondola", "alpinebits:skilift", "alpinebits:cablecar, "alpinebits:funicular", "alpinebits:magic-carpet", "alpinebits:skibus", "alpinebits:train".

  • connections: a Reference to Many place resources that identify the places that are physically accessible from the lift, which may include Mountain Areas, other Lifts, Snowparks, and Ski Slopes. Nullable. Non-empty.

    Notice that connections between place resources may not be symmetrical (i.e., bidirectional). For example, a place like a lift may give access to a snowpark, but the snowpark may not give access back to it.

  • multimediaDescriptions: a Reference to Many media object resources (see Media Objects) that are related to the lift. See Section multimediaDescriptions. Nullable. Non-empty.

A summary of the relationships is presented in the table below:

Field Type Constraints

categories

Reference to Many object to Categories

Nullable, Non-empty

connections

Reference to Many object to Mountain Areas, Ski Slopes, Lifts, and Snowparks

Nullable, Non-empty

multimediaDescriptions

Reference to Many object to Media Objects

Nullable, Non-empty

See the definition of the links object in Links Object.

Examples

The following example contains the minimal information required for a lift resource:

{
  "type": "lifts",
  "id": "merano2000-l1",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "name": {
      "eng": "Ropeway Merano 2000"
    },
    "shortName": null,
    "description": null,
    "abstract": null,
    "url": null,
    "length": null,
    "minAltitude": null,
    "maxAltitude": null,
    "capacity": null,
    "personsPerChair": null,
    "openingHours": null,
    "address": {
      "street": null,
      "city": {
        "eng": "Merano"
      },
      "region": null,
      "country": "IT",
      "zipcode": null,
      "categories": null,
      "complement": null
    },
    "geometries": null,
    "howToArrive": null
  },
  "relationships": {
    "connections": null,
    "categories": null,
    "multimediaDescriptions": null
  },
  "links": {
    "self": "https://example.com/2022-04/lifts/1"
  }
}

asciidoc/examples/lift.min.json

The following example illustrates the fields defined for lift resources:

{
  "type": "lifts",
  "id": "1",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2020-04-01T08:00:00+02:00"
  },
  "attributes": {
    "name": {
      "deu": "Bergbahn Meran 2000",
      "eng": "Ropeway Merano 2000",
      "ita": "Funivia Merano 2000"
    },
    "shortName": {
      "deu": "Meran 2000",
      "eng": "Merano 2000",
      "ita": "Merano 2000"
    },
    "description": {
      "ita": "Situata a pochi minuti dalla città di Merano, la Funivia conduce all’area sciistica ed escursionistica Merano 2000, un luogo ideale in cui passare una vacanza all’insegna del movimento e della buona cucina con tutta la famiglia. Grazie al suo clima mite, l’area offre infinite possibilità per il tempo libero in ogni stagione: impianti di risalita, sentieri escursionistici facili e numerosi rifugi in cui sostare per assaporare l’ottima cucina locale in un paesaggio ricco e dominato dalla tranquillità."
    },
    "abstract": {
      "ita": "Situata a pochi minuti dalla città di Merano, la Funivia conduce all’area sciistica ed escursionistica Merano 2000, un luogo ideale in cui passare una vacanza all’insegna del movimento e della buona cucina con tutta la famiglia..."
    },
    "url": "https://example.com",
    "length": 3650,
    "minAltitude": 1000,
    "maxAltitude": 2350,
    "capacity": 200,
    "personsPerChair": 10,
    "openingHours": {
      "dailySchedules": {
        "2020-12-25": null
      },
      "weeklySchedules": [
        {
          "validFrom": "2020-01-01",
          "validTo": "2020-12-31",
          "monday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "tuesday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "wednesday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "thursday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "friday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "saturday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "sunday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ]
        }
      ]
    },
    "address": {
      "street": {
        "deu": "Naifweg 37",
        "eng": "37 Val di Nova Street",
        "ita": "Via Val di Nova, 37"
      },
      "city": {
        "deu": "Meran",
        "eng": "Merano",
        "ita": "Merano"
      },
      "region": {
        "deu": "Trentino-Südtirol",
        "eng": "Trentino-Alto Adige",
        "ita": "Trentino-Alto Adige"
      },
      "country": "IT",
      "zipcode": "39012",
      "categories": null,
      "complement": null
    },
    "geometries": [
      {
        "type": "LineString",
        "coordinates": [
          [
            11.305682659149168,
            46.66705018437341
          ],
          [
            11.30692720413208,
            46.667182709603225
          ],
          [
            11.308064460754393,
            46.667491933875965
          ]
        ]
      }
    ],
    "howToArrive": {
      "ita": "Fino alla stazione a valle della Funivia Merano 2000: dalla stazione ferroviaria di Merano si raggiunge in pochi minuti la stazione a valle Val di Nova con la linea urbana 1A. Da Scena c'è il bus vacanze che porta fino alla Val di Nova.",
      "deu": "Zur Talstation der Bergbahn Meran 2000: vom Zugbahnhof Meran erreicht man in wenigen Minuten die Talstation Naif mit der Buslinie 1A. Von Schenna aus fährt der Gästebus bis zur Talstation Naif."
    }
  },
  "relationships": {
    "connections": {
      "data": [
        {
          "type": "skiSlopes",
          "id": "1"
        },
        {
          "type": "skiSlopes",
          "id": "2"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/lifts/1/connections/"
      }
    },
    "categories": {
      "data": [
        {
          "type": "categories",
          "id": "alpinebits:cablecar"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/lifts/1/categories"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/lifts/1/multimediaDescriptions/"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/lifts/1"
  }
}

asciidoc/examples/lift.full.json

Media Objects

A resource that implements the concept of Media Object defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields: * type: the constant "mediaObjects" that identifies the resource as being of the type media object.

  • id: a string that uniquely and persistently identifies the media object within a SERVER. See the definition in Basic Fields.

  • attributes: an object containing the attributes of the media object.

  • relationships: an object containing the relationships of the media object to other resources.

  • links: an object containing the links related to the media object.

A media object resource is structured as follows:

{
  "type": "mediaObjects",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of the media object resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description of the media object. Nullable. See the definition in Attributes Object.

  • author: a string that identifies the author of a media object, like an image, a video, or a song. Nullable.

    When assigned a value, the author SHOULD follow the example below representing the author’s name and e-mail contact:

    "author": "\"Mary Jane\" <mary.jane@example.com>"
    
  • contentType: a string that represents the media type (formerly known as MIME type) of the media object. Non-nullable. Regular Expression.
    For example, possible values of contentType include yet are not limited to: "video/mp4", for videos, "image/png", for images, and "audio/mpeg3", for audio.
    The allowed media types are defined by IANA. The following regular expression constraints the valid pattern for the contentType string.

    "^(application|audio|font|example|image|message|model|multipart|text|video)/[a-zA-Z0-9-.+]+$"
    
  • description: a ??? object containing a description of the media object. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • duration: a number representing the duration of an audio or a video in seconds. Nullable. Positive value.
    If the media object is neither an audio or a video object, i.e., contentType contains a substring following the pattern "^(application|font|example|image|message|model|multipart|text)", duration MUST be set to null.
    For example, a short video shared in social platforms may have its duration set to 45 seconds, while a documentary of an event may have its duration set to 5774 seconds (i.e., 1 hour, 36 minutes and 14 seconds).

  • height: a number representing the height of an image or a video in pixels. Nullable. Positive value.
    If the media object is neither an image or a video, i.e. contentType contains a substring following the pattern "^(application|audio|font|example|message|model|multipart|text)", height MUST be set to null.
    For example, the height of a Full-HD video is expected to be 1080 pixels, while the height of a 4K video is expected to be 2160 pixels.

  • license: a string that represents the license applied to the media object. The value of this field SHOULD be a valid license identifier as defined in SPDX License List (e.g. CC-BY-4.0, FreeImage). Nullable.

  • name: a ??? object containing the complete name of the media object. Non-nullable. Conditional Assignment. See the definition in Attributes Object.

  • shortName: a ??? object containing a short name of the media object. Nullable. See the definition in Attributes Object.

  • url: a ??? string representing the media object’s source. Non-nullable. See the definition in Attributes Object.
    The url string may be used for the exchange of HTML data with the condition that whenever this HTML data contains some textual description of another resource (i.e., abstract, description, name, or shortName), the resource MUST have the equivalent text field assigned with non-HTML (sanitized) data.
    In case the url field is used with this purpose, contentType MUST be set to "text/html" and the URI must be properly encoded. For example:

    • HTML data:

      <div>This is the solution for sending HTML we were looking for!<div/>
      
    • Encoded string:

      "url": "data:text/html;charset:utf8,%3Cdiv%3EThis%20is%20the%20solution%20for%20sending%20HTML%20we%20were%20looking%20for%21%3Cdiv%2F%3E"
      
  • width: a number representing the width of an image or a video in pixels. Nullable. Positive value.
    If the media object is neither an image or a video, i.e., if contentType contains a substring following the pattern "^(application|audio|font|example|message|model|multipart|text)", width MUST be set to null.
    For example, the width of a Full-HD video is expected to be 1920 pixels, while the width of a 4K video is expected to be 3840 pixels.

A summary of the attributes object is presented in the table below:

Field Type Constraints

abstract

???

Nullable

author

string

Nullable

contentType

string

Non-nullable, Regular Expression

description

???

Nullable, Conditional Assignment

duration

number

Nullable, Conditional Assignment, Unit of Measure, Greater than Zero

height

number

Nullable, Conditional Assignment, Unit of Measure, Greater than Zero

license

string

Nullable

name

???

Nullable, Conditional Assignment

shortName

???

Nullable

url

???

Non-nullable

width

number

Nullable, Conditional Assignment, Unit of Measure, Greater than Zero

Relationships

The relationships object of a media object resource MUST contain the following fields:

  • categories: a Reference to Many category resources that are instantiated by the media object. See Section Categories. Nullable. Non-empty.

    No category is pre-defined by the standard.

  • licenseHolder: a Reference to One agent resource (see agent) who holds the rights over the media object. Nullable.

A summary of the relationships object is presented in the table below:

Field Type Constraints

categories

Reference to Many object to Categories

Nullable, Non-empty

licenseHolder

Reference to One object to Agents

Nullable

See the definition of the links object in Links Object.

Examples

The following example presents an object containing the minimal information required of a media object resource:

{
  "type": "mediaObjects",
  "id": "1",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "abstract": null,
    "author": null,
    "contentType": "audio/mpeg3",
    "description": null,
    "duration": null,
    "height": null,
    "license": null,
    "name": null,
    "shortName": null,
    "url": "https://example.com/audio.mp3",
    "width": null
  },
  "relationships": {
    "categories": null,
    "licenseHolder": null
  },
  "links": {
    "self": "https://example.com/2022-04/mediaObjects/1"
  }
}

asciidoc/examples/mediaobject.min.json

The following example presents an object representing a media object resource:

{
  "type": "mediaObjects",
  "id": "1",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2020-04-01T08:00:00+02:00"
  },
  "attributes": {
    "abstract": {
      "eng": "My first image sent as an example for the API."
    },
    "author": "Leonardo da Vinci",
    "contentType": "image/png",
    "description": {
      "eng": "My first image sent as an example for the API."
    },
    "duration": null,
    "height": 300,
    "license": "FreeImage",
    "name": {
      "ita": "La mia immagine",
      "deu": "Mein bild",
      "eng": "My image"
    },
    "shortName": {
      "eng": "My image"
    },
    "url": "https://example.com/image.png",
    "width": 400
  },
  "relationships": {
    "categories": {
      "data": [
        {
          "type": "categories",
          "id": "example:panoramic-photo"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/mediaObjects/1/categories"
      }
    },
    "licenseHolder": {
      "data": {
        "type": "agents",
        "id": "0"
      },
      "links": {
        "related": "https://example.com/2022-04/mediaObjects/1/copyrgihtOwner/"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/mediaObjects/1"
  }
}

asciidoc/examples/mediaobject.full.json

Mountain Areas

A resource that implements the concept of Mountain Area defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields:

  • type: the constant "mountainAreas" that identifies the resource as being a mountain area.

  • id: a string that uniquely and persistently identifies the mountain area within a SERVER. See the definition in Basic Fields.

  • attributes: an object containing the attributes of the mountain area.

  • relationships: an object containing the relationships of the mountain area to other resources.

  • links: an object containing the links related to the mountain area.

A mountain area resource is structured as follows:

{
  "type": "mountainAreas",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of a mountain area resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description of the mountain area. Nullable. See the definition in Attributes Object.

  • area: a number representing the total area, in square meters, of the mountain area. Nullable.

  • description: * description: a ??? object containing a description of the mountain area. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • geometries: an array of ??? objects each of which represents the location of the mountain area in terms of GPS coordinates. There should be at most one geometry object of each type (e.g. Point, LineString). Nullable. Non-empty.

  • howToArrive: a ??? object containing instructions on how to arrive at the mountain area. Nullable.

  • maxAltitude: a number representing the highest elevation point of the mountain area in meters above sea level. Nullable.

  • minAltitude: a number representing the lowest elevation point of the mountain area in meters above sea level. Nullable.

  • name: a ??? object containing the complete name of the mountain area. Non-nullable. Conditional Assignment. See the definition in Attributes Object.

  • openingHours: an ??? object representing the hours in which the mountain area is open to the public. Nullable.

  • shortName: a ??? object containing a short name of the mountain area. Nullable. See the definition in Attributes Object.

  • snowCondition: a ??? object containing the latest reported condition of the snow in the mountain area. Nullable.

  • totalParkLength: an integer representing the total length, in meters, of all snowparks located within the mountain area. Nullable.

  • totalSlopeLength: an integer representing the total length, in meters, of all ski slopes located within the mountain area. Nullable.

  • url: a ??? object or string describing the mountain area, such as a website or a Wikipedia page. Nullable. See the definition in Attributes Object.

A summary of the attributes object is presented in the table below:

Field Type Constraints

abstract

???

Nullable

area

number

Nullable, Unit of Measure, Greater than Zero

description

???

Nullable

geometries

Array of ???

Nullable, Non-empty

howToArrive

???

Nullable

maxAltitude

number

Nullable, Unit of Measure

minAltitude

number

Nullable, Unit of Measure

name

???

Non-nullable

openingHours

???

Nullable

shortName

???

Nullable

snowCondition

???

Nullable

totalParkArea

number

Nullable, Unit of Measure, Greater than Zero

totalTrailLength

number

Nullable, Unit of Measure, Greater than Zero

url

???

Nullable

Relationships

The relationships object of a mountain area resource MUST contain the following fields:

  • areaOwner: a Reference to One agent resource (see Agents) who owns the mountain area. Nullable.

  • categories: a Reference to Many category resources that are instantiated by the mountain area. See Section Categories. Nullable. Non-empty.

    No category is pre-defined by the standard.

  • connections: a Reference to Many place resources that identify the places that are physically accessible from the mountain area, which may include other Mountain Areas, Lifts, Snowparks, and Ski Slopes. Nullable. Non-empty.

    Notice that connections between place resources may not be symmetrical (i.e., bidirectional). For example, a place like a lift may give access to a snowpark, but the snowpark may not give access back to it.

  • lifts: a Reference to Many lift resources (see Lifts) that identify the lifts located within the mountain area. Nullable. Non-empty.

  • multimediaDescriptions: a Reference to Many media object resources (see Media Objects) that are related to the mountain area. See Section multimediaDescriptions. Nullable. Non-empty.

  • skiSlopes: a Reference to Many ski slope resources (see Ski Slopes) that identify the slopes located within the mountain area. Nullable. Non-empty.

  • snowparks: a Reference to Many snowpark resources (see Snowparks) that identify the snowparks located within the mountain area. Nullable. Non-empty.

  • subAreas: a Reference to Many mountain area resources (see Mountain Areas) that identify the mountain areas located within the mountain area. Nullable. Non-empty.

A summary of the relationships is presented in the table below:

Field Type Constraints

areaOwner

Reference to One object to Agents

Nullable, Non-empty

categories

Reference to Many object to Categories

Nullable, Non-empty

connections

Reference to Many object to Mountain Areas, Ski Slopes, Lifts, and Snowparks

Nullable, Non-empty

lifts

Reference to Many object to Lifts

Nullable, Non-empty

multimediaDescriptions

Reference to Many object to Media Objects

Nullable, Non-empty

snowparks

Reference to Many object to Snowparks

Nullable, Non-empty

subAreas

Reference to Many object to Mountain Areas

Nullable, Non-empty

skiSlopes

Reference to Many object to Ski Slopes

Nullable, Non-empty

See the definition of the links object in Links Object.

Examples

The following example contains the minimal information required for a mountain area resource:

{
  "id": "1",
  "type": "mountainAreas",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "name": {
      "eng": "Meran 2000"
    },
    "shortName": null,
    "description": null,
    "abstract": null,
    "url": null,
    "geometries": null,
    "howToArrive": null,
    "openingHours": null,
    "area": null,
    "minAltitude": null,
    "maxAltitude": null,
    "totalTrailLength": null,
    "totalParkArea": null,
    "totalParkLength": null,
    "snowCondition": null
  },
  "relationships": {
    "areaOwner": null,
    "connections": null,
    "categories": null,
    "multimediaDescriptions": null,
    "lifts": null,
    "skiSlopes": null,
    "snowparks": null,
    "subAreas": null
  },
  "links": {
    "self": "https://example.com/2022-04/mountainAreas/1"
  }
}

asciidoc/examples/mountain.min.json

The following example illustrates the fields defined for mountain area resources:

{
  "id": "1",
  "type": "mountainAreas",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2020-04-01T08:00:00+02:00"
  },
  "attributes": {
    "name": {
      "ita": "Merano 2000",
      "deu": "Meran 2000",
      "eng": "Meran 2000"
    },
    "shortName": {
      "eng": "Meran 2000"
    },
    "description": {
      "deu": "Das Skigebiet Meran 2000 liegt unter dem Berg Ifinger im Burggrafenamt auf einem Hochplateau oberhalb Meran am Tschögglberg in Südtirol. Es hat 45 km Alpin-Pisten und reicht von 1670 bis 2300 m Höhe. Von Meran aus ist das Gebiet direkt über die Ifinger-Seilbahn ab Naif oder durch eine Umlaufseilbahn ab Falzeben erreichbar. Das Skigebiet erstreckt sich hauptsächlich auf dem Gemeindegebiet von Hafling, berührt aber auch zu den Gemeinden Schenna und Sarntal gehörende Flächen."
    },
    "abstract": {
      "deu": "Das Skigebiet Meran 2000 liegt unter dem Berg Ifinger im Burggrafenamt auf einem Hochplateau oberhalb Meran am Tschögglberg in Südtirol. Es hat 45 km Alpin-Pisten und reicht von 1670 bis 2300 m Höhe."
    },
    "url": "https://www.meran2000.com",
    "geometries": [
      {
        "type": "Polygon",
        "coordinates": [
          [
            [
              11.310853958129883,
              46.66958283253642
            ],
            [
              11.304588317871094,
              46.668817160723044
            ],
            [
              11.301412582397461,
              46.666696782172096
            ],
            [
              11.305532455444336,
              46.66457632044435
            ],
            [
              11.31265640258789,
              46.66646117942096
            ],
            [
              11.314373016357422,
              46.66869936409677
            ],
            [
              11.310853958129883,
              46.66958283253642
            ]
          ]
        ]
      }
    ],
    "howToArrive": {
      "ita": "L'area sciistica ed escursionistica di Merano è situata ai piedi della montagna Picco Ivigna ed è raggiungibile in pochi minuti dalle destinazioni di Merano, Avelengo, Scena e Tirolo. La cima di Merano 2000 è raggiungibile con due impianti di risalita diversi e ha dunque due stazioni a valle, una presso Merano con la Funivia e una ad Avelengo con la Cabinovia Falzeben.",
      "deu": "Die Sonnenterrasse Merans liegt am Fuße des Ifingers und ist von den Ferienorten Meran, Hafling, Schenna und Dorf Tirol in wenigen Minuten leicht erreichbar. Die Bergstation von Meran 2000 kann man mit zwei verschiedenen Aufstiegsanlagen erreichen: von Meran aus mit der Bergbahn und von Hafling aus mit der Umlaufbahn Falzeben.",
      "eng": "The skiing and hiking area of Merano 2000 is best located next to the biggest vacation hotspots of South Tyrol and so reachable within few minutes from Merano, Avelengo, Scena and Tirolo. Two lifts can bring you to the mountain station of Merano 2000: the Ropeway in Merano or the Gondola Falzeben in Avelengo."
    },
    "openingHours": {
      "dailySchedules": {
        "2020-12-25": null
      },
      "weeklySchedules": [
        {
          "validFrom": "2020-01-01",
          "validTo": "2020-12-31",
          "monday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "tuesday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "wednesday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "thursday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "friday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "saturday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "sunday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ]
        }
      ]
    },
    "area": 36000,
    "minAltitude": 1200,
    "maxAltitude": 2000,
    "totalTrailLength": 4000,
    "totalParkArea": 20000,
    "totalParkLength": 1000,
    "snowCondition": {
      "primarySurface": "powder",
      "secondarySurface": "packed-powder",
      "baseSnow": 50,
      "baseSnowRange": {
        "lower": 40,
        "upper": 60
      },
      "latestStorm": 40,
      "obtainedIn": "2019-12-20",
      "snowOverNight": 5,
      "groomed": true,
      "snowMaking": false
    }
  },
  "relationships": {
    "areaOwner": {
      "data": {
        "type": "agents",
        "id": "1"
      },
      "links": {
        "related": "https://example.com/2022-04/mountainAreas/1/areaOwner/"
      }
    },
    "connections": {
      "data": [
        {
          "type": "lifts",
          "id": "1"
        },
        {
          "type": "skiSlopes",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/mountainAreas/1/connections/"
      }
    },
    "categories": {
      "data": [
        {
          "type": "categories",
          "id": "example:skiarea"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/mountainAreas/1/categories"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/mountainAreas/1/multimediaDescriptions/"
      }
    },
    "lifts": {
      "data": [
        {
          "type": "lifts",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/mountainAreas/1/lifts/"
      }
    },
    "skiSlopes": {
      "data": [
        {
          "type": "skiSlopes",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/mountainAreas/1/skiSlopes/"
      }
    },
    "snowparks": {
      "data": [
        {
          "type": "snowparks",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/mountainAreas/1/snowparks/"
      }
    },
    "subAreas": {
      "data": [
        {
          "type": "mountainAreas",
          "id": "2"
        },
        {
          "type": "mountainAreas",
          "id": "3"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/mountainAreas/1/subAreas/"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/mountainAreas/1"
  }
}

asciidoc/examples/mountain.full.json

Ski Slopes

A resource that implements the concept of Ski Slope defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields:

  • type: the constant "skiSlopes" that identifies the resource as being of the type ski slope.

  • id: a string that uniquely and persistently identifies the ski slope within a SERVER. See the definition in Basic Fields.

  • attributes: an object containing the attributes of the ski slope.

  • relationships: an object containing the relationships of the ski slope to other resources.

  • links: an object containing the links related to the ski slope.

A ski slope resource is structured as follows:

{
  "type": "skiSlopes",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of a ski slope resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description for the ski slope. Nullable. See the definition in Attributes Object.

  • address: an ??? object representing the main address of the ski slope. The address should only be set if the ski slope is directly accessible from a public road. Nullable.

  • description: a ??? object containing a description of the ski slope. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • difficulty: an object containing the difficulty level of a ski slope, as in { "eu": "novice", "us": "beginner" }. Nullable.

    The "eu" field refers to the European classification of ski slopes. Its possible values are "novice", "beginner", "intermediate", and "expert". The "us" field refers to the North American classification of ski slopes. Its possible values are "beginner", "beginner-intermediate", "intermediate", "intermediate-advanced", and "expert".

    Every such object MUST contain both fields and at least one of them MUST NOT be null. The field itself, however, is nullable.

  • geometries: an array of ??? objects each of which represents the location of the ski slope in terms of GPS coordinates. There should be at most one geometry object of each type (e.g. Point, LineString). Nullable. Non-empty.

  • howToArrive: a ??? object containing instructions on how to arrive at the ski slope. Nullable.

  • length: a number representing the total length of the ski slope in meters. The computation of the length (in the case of branching paths, for instance) is determined by the data provider. Nullable.

  • maxAltitude: a number representing the highest elevation point of the ski slope in meters above sea level. Nullable.

  • minAltitude: a number representing the lowest elevation point of the ski slope in meters above sea level. Nullable.

  • name: a ??? object containing the complete name of the ski slope. Non-nullable. See the definition in Attributes Object.

  • openingHours: an ??? object representing the hours in which the ski slope is open to the public. Nullable.

  • shortName: a ??? object containing a short name of the ski slope. Nullable. See the definition in Attributes Object.

  • snowCondition: a ??? object containing the latest reported condition of the snow in the ski slope.

  • url: a ??? object or string describing the ski slope, such as a website or a Wikipedia page. Nullable. See the definition in Attributes Object.

A summary of the attributes is presented in the table below:

Field Type Constraints

abstract

???

Nullable

address

???

Nullable

description

???

Nullable, Conditional Assignment

difficulty

object

Nullable

geometries

Array of ???

Nullable, Non-empty

howToArrive

???

Nullable

length

number

Nullable, Unit of Measure, Greater than Zero

maxAltitude

number

Nullable, Unit of Measure

minAltitude

number

Nullable, Unit of Measure

name

???

Non-nullable, Conditional Assignment

openingHours

???

Nullable

shortName

???

Nullable

snowCondition

???

Nullable

url

???

Nullable

Relationships

The relationships object of a ski slope resource MUST contain the following fields:

  • categories: a Reference to Many category resources that are instantiated by the ski slope. See Section Categories. Nullable. Non-empty.

    The standard recommends the following categories for ski slopes:, "alpinebits:standard-ski-slope", "alpinebits:sledge-slope", and "alpinebits:cross-country"

  • connections: a Reference to Many place resources that identify the places that are physically accessible from the mountain area, which may include other Ski Slopes, Lifts, Snowparks, and Mountain Areas. Nullable. Non-empty.

    Notice that connections between place resources may not be symmetrical (i.e., bidirectional). For example, a place like a lift may give access to a snowpark, but the snowpark may not give access back to it.

  • multimediaDescriptions: a Reference to Many media object resources (see Media Objects) that are related to the ski slope. See Section multimediaDescriptions. Nullable. Non-empty.

A summary of the relationships is presented in the table below:

Field Type Constraints

categories

Reference to Many object to Categories

Nullable, Non-empty

connections

Reference to Many object to Mountain Areas, Ski Slopes, Lifts, and Snowparks

Nullable, Non-empty

multimediaDescriptions

Reference to Many object to Media Objects

Nullable, Non-empty

See the definition of the links object in Links Object.

Examples

The following example contains the minimal information required for a ski slope resource:

{
  "type": "skiSlopes",
  "id": "1",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "name": {
      "eng": "Falzeben I"
    },
    "shortName": null,
    "description": null,
    "abstract": null,
    "url": null,
    "length": null,
    "minAltitude": null,
    "maxAltitude": null,
    "difficulty": null,
    "address": {
      "street": null,
      "city": {
        "eng": "Merano"
      },
      "region": null,
      "country": "IT",
      "zipcode": null,
      "categories": null,
      "complement": null
    },
    "geometries": null,
    "howToArrive": null,
    "openingHours": null,
    "snowCondition": null
  },
  "relationships": {
    "connections": null,
    "categories": null,
    "multimediaDescriptions": null
  },
  "links": {
    "self": "https://example.com/2022-04/skiSlopes/1"
  }
}

asciidoc/examples/skislope.min.json

The following example illustrates the fields defined for ski slope resources:

{
  "type": "skiSlopes",
  "id": "1",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2020-04-01T08:00:00+02:00"
  },
  "attributes": {
    "name": {
      "ita": "Falzeben I",
      "deu": "Falzeben I",
      "eng": "Falzeben I"
    },
    "shortName": {
      "ita": "Falzeben I"
    },
    "description": {
      "ita": "Falzeben I -  Discesa tra i boschi facile, immersa in un panorama da sogno ed ideale per bambini e principianti. Altezza/Lunghezza: 1900 altezza, 3500 m."
    },
    "abstract": {
      "ita": "Falzeben I -  Discesa tra i boschi facile, immersa in un panorama da sogno ed ideale per bambini e principianti."
    },
    "url": "https://example.com",
    "length": 2000,
    "minAltitude": 1500,
    "maxAltitude": 2500,
    "difficulty": {
      "eu": "novice",
      "us": "beginner"
    },
    "address": {
      "street": null,
      "city": {
        "eng": "Merano"
      },
      "region": null,
      "country": "IT",
      "zipcode": null,
      "categories": null,
      "complement": null
    },
    "howToArrive": {
      "ita": " Le fermate più vicine a Falzeben sono: Falzeben è a 41 metri di distanza a piedi e ci si arriva in 1 minuti di cammino; Villa Schäfer è a 808 metri di distanza a piedi e ci si arriva in 11 minuti di cammino."
    },
    "geometries": [
      {
        "type": "LineString",
        "coordinates": [
          [
            11.305682659149168,
            46.66705018437341
          ],
          [
            11.30692720413208,
            46.667182709603225
          ],
          [
            11.308064460754393,
            46.667491933875965
          ]
        ]
      }
    ],
    "openingHours": {
      "dailySchedules": {
        "2020-12-25": null
      },
      "weeklySchedules": [
        {
          "validFrom": "2020-01-01",
          "validTo": "2020-12-31",
          "monday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "tuesday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "wednesday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "thursday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "friday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "saturday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "sunday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ]
        }
      ]
    },
    "snowCondition": {
      "primarySurface": "powder",
      "secondarySurface": "packed-powder",
      "baseSnow": 50,
      "baseSnowRange": {
        "lower": 40,
        "upper": 60
      },
      "latestStorm": 40,
      "obtainedIn": "2020-02-01",
      "snowOverNight": 5,
      "groomed": true,
      "snowMaking": false
    }
  },
  "relationships": {
    "connections": {
      "data": [
        {
          "type": "skiSlopes",
          "id": "2"
        },
        {
          "type": "skiSlopes",
          "id": "3"
        },
        {
          "type": "skiSlopes",
          "id": "4"
        },
        {
          "type": "lifts",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/skiSlopes/1/connections/"
      }
    },
    "categories": {
      "data": [
        {
          "type": "categories",
          "id": "alpinebits:standard-ski-slope"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/skiSlopes/1/categories"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "2"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/skiSlopes/1/multimediaDescriptions/"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/skiSlopes/1"
  }
}

asciidoc/examples/skislope.full.json

Snowparks

A resource that implements the concept of Snowpark defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields:

  • type: the constant "snowparks" that identifies the resource as being of the type snowpark.

  • id: a string that uniquely and persistently identifies the snowpark within a SERVER. See the definition in Basic Fields.

  • attributes: an object containing the attributes of the snowpark.

  • relationships: an object containing the relationships of the snowpark to other resources.

  • links: an object containing the links related to the snowpark.

A snowpark resource is structured as follows:

{
  "type": "snowparks",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of a snowpark resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description for the snowpark. Nullable. See the definition in Attributes Object.

  • address: an ??? object representing the address of the snowpark. The address should only be set if the snowpark is directly accessible from a public road. Nullable.

  • description: a ??? object containing a description of the snowpark. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • difficulty: a string describing the difficulty level of a snowpark according to the following enumerated values:

    • "beginner"

    • "intermediate"

    • "advanced"

    • "expert"

  • geometries: an array of ??? objects each of which represents the location of the snowpark in terms of GPS coordinates. There should be at most one geometry object of each type (e.g. Point, LineString). Nullable. Non-empty.

  • howToArrive: a ??? object containing instructions on how to arrive at the snowpark. Nullable.

  • length: a number representing the total length of the snowpark in meters. The computation of the length (in the case of branching paths, for instance) is determined by the data provider. Nullable.

  • maxAltitude: a number representing the highest elevation point of the snowpark in meters above sea level. Nullable.

  • minAltitude: a number representing the lowest elevation point of the snowpark in meters above sea level. Nullable.

  • name: a ??? object containing the complete name of the snowpark. Non-nullable. Conditional Assignment. See the definition in Attributes Object.

  • openingHours: an ??? object representing the hours in which the snowpark is open to the public. Nullable.

  • shortName: a ??? object containing a short name of the snowpark. Nullable. See the definition in Attributes Object.

  • snowCondition: a ??? object containing the latest reported condition of the snow in the snowpark.

  • url: a ??? object or string describing the snowpark, such as a website or a Wikipedia page. Nullable. See the definition in Attributes Object.

A summary of the attributes is presented in the table below:

Field Type Constraints

abstract

???

Nullable

address

???

Nullable

description

???

Nullable, Conditional Assignment

difficulty

string

Enumeration, Nullable

geometries

Array of ???

Nullable, Non-empty

howToArrive

string

Nullable

length

number

Nullable, Unit of Measure, Greater than Zero

maxAltitude

number

Nullable, Unit of Measure

minAltitude

number

Nullable, Unit of Measure

name

???

Non-nullable, Conditional Assignment

openingHours

???

Nullable

shortName

???

Nullable

snowCondition

???

Nullable

url

???

Nullable

Relationships

The relationships object of a snowpark resource MUST contain the following fields:

  • categories: a Reference to Many category resources that are instantiated by the snowpark. See Section Categories. Nullable. Non-empty.

    No category is pre-defined by the standard.

  • connections: a Reference to Many place resources that identify the places that are physically accessible from the mountain area, which may include other Snowparks, Lifts, Mountain Areas, and Ski Slopes. Nullable. Non-empty.

    Notice that connections between place resources may not be symmetrical (i.e., bidirectional). For example, a place like a lift may give access to a snowpark, but the snowpark may not give access back to it.

  • features: a Reference to Many feature resources present in a snowpark, such as a ramp or a rail. See Section Features. Nullable. Non-empty.

    No feature is pre-defined by the standard.

  • multimediaDescriptions: a Reference to Many media object resources (see Media Objects) that are related to the snowpark. See Section multimediaDescriptions. Nullable. Non-empty.

A summary of the relationships is presented in the table below:

Field Type Constraints

categories

Reference to Many object to Categories

Nullable, Non-empty

connections

Reference to Many object to Mountain Areas, Ski Slopes, Lifts, and Snowparks

Nullable, Non-empty

features

Reference to Many object to Features

Nullable, Non-empty

multimediaDescriptions

Reference to Many object to Media Objects

Nullable, Non-empty

See the definition of the links object in Links Object.

Examples

The following example contains the minimal information required for a snowpark resource:

{
  "type": "snowparks",
  "id": "1",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "name": {
      "eng": "Snowpark Merano 2000"
    },
    "shortName": null,
    "description": null,
    "abstract": null,
    "url": null,
    "length": null,
    "minAltitude": null,
    "maxAltitude": null,
    "address": {
      "street": null,
      "city": {
        "eng": "Merano"
      },
      "region": null,
      "country": "IT",
      "zipcode": null,
      "categories": null,
      "complement": null
    },
    "howToArrive": null,
    "difficulty": null,
    "geometries": null,
    "openingHours": null,
    "snowCondition": null
  },
  "relationships": {
    "connections": null,
    "features": null,
    "categories": null,
    "multimediaDescriptions": null
  },
  "links": {
    "self": "https://example.com/2022-04/snowparks/1"
  }
}

asciidoc/examples/snowpark.min.json

The following example illustrates the fields defined for snowpark resources:

{
  "type": "snowparks",
  "id": "1",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2020-04-01T08:00:00+02:00"
  },
  "attributes": {
    "name": {
      "ita": "Snowpark Merano 2000",
      "deu": "Snowpark Merano 2000",
      "eng": "Snowpark Merano 2000"
    },
    "shortName": {
      "eng": "Snowpark Merano 2000"
    },
    "description": {
      "eng": "Located in the rear part of the skiing area on the Oswald-Slope, close to the Waidmann Alpine Cottage, the SNOWPARK MERANO 2000 awaits brave Snowboarders and Freestylers. An ambitious project with many kicks, rails, tubes and boxes for newcomers and pros alike. You can reach the Jump Zone from the mountain station of the Ropeway by using the chairlift Piffing."
    },
    "abstract": {
      "eng": "Located in the rear part of the skiing area on the Oswald-Slope, close to the Waidmann Alpine Cottage, the SNOWPARK MERANO 2000 awaits brave Snowboarders and Freestylers..."
    },
    "url": "https://example.com",
    "length": 1300,
    "minAltitude": 1500,
    "maxAltitude": 2500,
    "address": {
      "street": null,
      "city": {
        "eng": "Merano"
      },
      "region": null,
      "country": "IT",
      "zipcode": null,
      "categories": null,
      "complement": null
    },
    "howToArrive": null,
    "difficulty": "intermediate",
    "geometries": [
      {
        "type": "LineString",
        "coordinates": [
          [
            11.305682659149168,
            46.66705018437341
          ],
          [
            11.30692720413208,
            46.667182709603225
          ],
          [
            11.308064460754393,
            46.667491933875965
          ]
        ]
      }
    ],
    "openingHours": {
      "dailySchedules": {
        "2020-12-25": null
      },
      "weeklySchedules": [
        {
          "validFrom": "2020-01-01",
          "validTo": "2020-12-31",
          "monday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "tuesday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "wednesday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "thursday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "friday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "saturday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ],
          "sunday": [
            {
              "opens": "08:00:00+01:00",
              "closes": "18:00:00+01:00"
            }
          ]
        }
      ]
    },
    "snowCondition": {
      "primarySurface": "frozen-granular",
      "secondarySurface": "packed-powder",
      "baseSnow": 30,
      "baseSnowRange": {
        "lower": 25,
        "upper": 40
      },
      "latestStorm": 5,
      "obtainedIn": "2020-01-14",
      "snowOverNight": 0,
      "groomed": true,
      "snowMaking": false
    }
  },
  "relationships": {
    "connections": {
      "data": [
        {
          "type": "skiSlopes",
          "id": "2"
        },
        {
          "type": "skiSlopes",
          "id": "3"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/snowparks/1/connections/"
      }
    },
    "features": {
      "data": [
        {
          "type": "features",
          "id": "example:jib"
        },
        {
          "type": "features",
          "id": "example:pipe"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/snowparks/1/features"
      }
    },
    "categories": {
      "data": [
        {
          "type": "categories",
          "id": "example:free-style"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/snowparks/1/categories"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "2"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/snowparks/1/multimediaDescriptions/"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/snowparks/1"
  }
}

asciidoc/examples/snowpark.full.json

Venues

A resource that implements the concept of Venue defined in the AlpineBits® Ontology.

A JSON object representing such a resource MUST contain the following fields:

  • type: the constant "venues" that identifies the resource as being of the type venue.

  • id: a string that uniquely and persistently identifies the venue within a SERVER. See the definition in Basic Fields.

  • attributes: an object containing the attributes of the venue.

  • relationships: an object containing the relationships of the venue to other resources.

  • links: an object containing the links related to the venue.

Venue resources are structured in the following way:

{
  "type": "venues",
  "id": "1",
  "meta": { ... },
  "attributes": { ... },
  "relationships": { ... },
  "links": { ... }
}

Meta

See the definition of the meta object in Meta Object.

Attributes

The attributes object of the venue resource MUST contain the following fields:

  • abstract: a ??? object containing a brief description of the venue. Nullable. See the definition in Attributes Object.

  • address: an ??? object containing the address of the venue. Nullable.

  • description: a ??? object containing a description of the venue. Nullable. Conditional Assignment. See the definition in Attributes Object.

  • geometries: an array of ??? objects each of which represents the location of the venue in terms of GPS coordinates. There should be at most one geometry object of each type (e.g. Point, LineString). Nullable. Non-empty.

  • howToArrive: a ??? object containing instructions on how to arrive at the venue. Nullable.

  • name: a ??? object containing the complete name of the venue. Non-nullable. Conditional Assignment. See the definition in Attributes Object.

  • shortName: a ??? object containing a short name of the venue. Nullable. See the definition in Attributes Object.

  • url: a ??? object or string describing the venue, such as a website or a Wikipedia page. Nullable. See the definition in Attributes Object.

A summary of the attributes object is presented in the table below:

Field Type Constraints

abstract

???

Nullable

address

???

Nullable

description

???

Nullable, Conditional Assignment

geometries

Array of ???

Nullable, Non-empty

howToArrive

string

Nullable

name

???

Non-nullable, Conditional Assignment

shortName

???

Nullable

url

???

Nullable

Relationships

The relationships object of a mountain area resource MUST contain the following fields:

A summary of the relationships is presented in the table below:

Field Type Constraints

categories

Reference to Many object to Categories

Nullable, Non-empty

multimediaDescriptions

Reference to Many object to Media Objects

Nullable, Non-empty

See the definition of the links object in Links Object.

Examples

The following example presents an object containing the minimal information required of a venue resource:

{
  "type": "venues",
  "id": "1",
  "meta": {
    "dataProvider": null,
    "lastUpdate": null
  },
  "attributes": {
    "abstract": null,
    "address": null,
    "description": null,
    "geometries": null,
    "howToArrive": null,
    "name": {
      "eng": "Auditorium 1"
    },
    "shortName": null,
    "url": null
  },
  "relationships": {
    "categories": null,
    "multimediaDescriptions": null
  },
  "links": {
    "self": "https://example.com/2022-04/venues/1"
  }
}

asciidoc/examples/venue.min.json

The following example presents an object representing a venue resource:

{
  "type": "venues",
  "id": "1",
  "meta": {
    "dataProvider": "https://example.com",
    "lastUpdate": "2020-04-01T08:00:00+02:00"
  },
  "attributes": {
    "abstract": {
      "eng": "The Auditorium 1 of the Free University of Bozen-Bolzano provides a great space for keynotes, lectures and presentations."
    },
    "address": {
      "street": {
        "ita": "Piazza Università, 1",
        "deu": "Universitätsplatz 1"
      },
      "city": {
        "deu": "Bozen"
      },
      "region": {
        "deu": "Trentino-Südtirol"
      },
      "country": "IT",
      "zipcode": "39100",
      "complement": {
        "deu": "Hauptgebäude"
      },
      "categories": [
        "example:building"
      ]
    },
    "description": {
      "eng": "The Auditorium 1 of the Free University of Bozen-Bolzano provides a great space for keynotes, lectures and presentations, being available to host events related academic, provincial and cultural topics."
    },
    "geometries": [
      {
        "type": "Point",
        "coordinates": [
          11.35087251663208,
          46.49873937419277
        ]
      }
    ],
    "howToArrive": {
      "eng": "From the train station, the Free University of Bozen-Bolzano is accessible in a 5 minutes walk into the historical city center."
    },
    "name": {
      "eng": "Auditorium 1 - Free University of Bozen-Bolzano"
    },
    "shortName": {
      "eng": "Auditorium 1"
    },
    "url": "https://example.com/auditorium-1"
  },
  "relationships": {
    "categories": {
      "data": [
        {
          "type": "categories",
          "id": "example:auditorium"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/venues/1/categories"
      }
    },
    "multimediaDescriptions": {
      "data": [
        {
          "type": "mediaObjects",
          "id": "1"
        }
      ],
      "links": {
        "related": "https://example.com/2022-04/venues/1/multimediaDescriptions"
      }
    }
  },
  "links": {
    "self": "https://example.com/2022-04/venues/1"
  }
}

asciidoc/examples/venue.full.json