{
  "type": "BookingService",
  "subClassOf": "https://schema.org/Service",
  "validationMode": {
    "C1Request": "request",
    "C1Response": "response",
    "C1ResponseOrderItemError": "response",
    "C2Request": "request",
    "C2Response": "response",
    "C2ResponseOrderItemError": "response",
    "PRequest": "request",
    "PResponse": "response",
    "PResponseOrderItemError": "response",
    "BRequest": "request",
    "BResponse": "response",
    "BResponseOrderItemError": "response",
    "OrderProposalPatch": "request",
    "OrderPatch": "request",
    "DatasetSite": "datasetSite"
  },
  "imperativeConfiguration": {
    "request": {
      "requiredFields": [],
      "recommendedFields": []
    },
    "response": {
      "requiredFields": [
        "type",
        "name"
      ],
      "recommendedFields": []
    },
    "datasetSite": {
      "requiredOptions": [
        {
          "description": [
            "A `BookingService` must include a `name`, unless it is a bespoke build, in which case only `hasCredential` is required."
          ],
          "options": [
            "name",
            "hasCredential"
          ]
        }
      ],
      "requiredFields": [],
      "recommendedFields": []
    }
  },
  "inSpec": [
    "type",
    "name",
    "url",
    "termsOfService",
    "softwareVersion",
    "hasCredential"
  ],
  "notInSpec": [],
  "fields": {
    "type": {
      "fieldName": "type",
      "requiredType": "https://schema.org/Text",
      "requiredContent": "BookingService"
    },
    "name": {
      "fieldName": "name",
      "requiredType": "https://schema.org/Text",
      "sameAs": "https://schema.org/name",
      "description": [
        "The name of the Booking System."
      ]
    },
    "url": {
      "fieldName": "url",
      "requiredType": "https://schema.org/URL",
      "sameAs": "https://schema.org/url",
      "description": [
        "The URL of the website of the Booking System."
      ]
    },
    "termsOfService": {
      "fieldName": "termsOfService",
      "sameAs": "https://pending.schema.org/termsOfService",
      "model": "ArrayOf#Terms",
      "description": [
        "The terms of service of the Booking System."
      ]
    },
    "softwareVersion": {
      "fieldName": "softwareVersion",
      "sameAs": "https://schema.org/softwareVersion",
      "requiredType": "https://schema.org/Text",
      "description": [
        "The version of the application, useful for on-premise installations. Note this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the [Dataset API Discovery specification](https://openactive.io/dataset-api-discovery/EditorsDraft/) evolves."
      ]
    },
    "hasCredential": {
      "fieldName": "hasCredential",
      "sameAs": "https://pending.schema.org/hasCredential",
      "requiredType": "https://schema.org/URL",
      "description": [
        "A human and machine-readable certification file that asserts the service's conformance to established standards. The value of this property should be a URL that resolves to a valid and up-to-date OpenActive Test Suite Conformance Certificate for this implementation. Note this property is in EARLY RELEASE AND IS SUBJECT TO CHANGE, as the [Dataset API Discovery specification](https://openactive.io/dataset-api-discovery/EditorsDraft/) evolves."
      ]
    }
  }
}