{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "schema:EntryPoint",
  "title": "EntryPoint",
  "description": "An entry point, within some Web-based protocol.",
  "type": "object",
  "allOf": [
    {
      "description": "A utility class that serves as the umbrella for a number of 'intangible' things such as quantities, structured values, etc.",
      "$ref": "schema:Intangible"
    }
  ],
  "properties": {
    "actionApplication": {
      "description": "An application that can complete the request.",
      "oneOf": [
        { "$ref": "schema:SoftwareApplication" },
        { "type": "array", "items": { "$ref": "schema:SoftwareApplication" } }
      ]
    },
    "actionPlatform": {
      "description": "The high level platform(s) where the Action can be performed for the given URL. To specify a specific application or operating system instance, use actionApplication.",
      "anyOf": [
        { "type": "string", "format": "uri" },
        { "type": "string" },
        { "$ref": "schema:DigitalPlatformEnumeration" }
      ]
    },
    "application": {
      "description": "An application that can complete the request.",
      "oneOf": [
        { "$ref": "schema:SoftwareApplication" },
        { "type": "array", "items": { "$ref": "schema:SoftwareApplication" } }
      ]
    },
    "contentType": {
      "description": "The supported content type(s) for an EntryPoint response.",
      "type": "string"
    },
    "encodingType": {
      "description": "The supported encoding type(s) for an EntryPoint request.",
      "type": "string"
    },
    "httpMethod": {
      "description": "An HTTP method that specifies the appropriate HTTP method for a request to an HTTP EntryPoint. Values are capitalized strings as used in HTTP.",
      "oneOf": [
        { "type": "string" },
        { "type": "array", "items": { "type": "string" } }
      ]
    },
    "urlTemplate": {
      "description": "An url template (RFC6570) that will be used to construct the target of the execution of the action.",
      "oneOf": [
        { "type": "string" },
        { "type": "array", "items": { "type": "string" } }
      ]
    }
  }
}
