{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "schema:Action",
  "title": "Action",
  "description": "An action performed by a direct agent and indirect participants upon a direct object. Optionally happens at a location with the help of an inanimate instrument. The execution of the action may produce a result. Specific action sub-type documentation specifies the exact expectation of each argument/role.\\n\\nSee also [blog post](http://blog.schema.org/2014/04/announcing-schemaorg-actions.html) and [Actions overview document](https://schema.org/docs/actions.html).",
  "type": "object",
  "allOf": [
    { "description": "The most generic type of item.", "$ref": "schema:Thing" }
  ],
  "properties": {
    "actionProcess": {
      "description": "Description of the process by which the action was performed.",
      "oneOf": [
        { "$ref": "schema:HowTo" },
        { "type": "array", "items": { "$ref": "schema:HowTo" } }
      ]
    },
    "actionStatus": {
      "description": "Indicates the current disposition of the Action.",
      "oneOf": [
        { "$ref": "schema:ActionStatusType" },
        { "type": "array", "items": { "$ref": "schema:ActionStatusType" } }
      ]
    },
    "agent": {
      "description": "The direct performer or driver of the action (animate or inanimate). E.g. *John* wrote a book.",
      "anyOf": [{ "$ref": "schema:Organization" }, { "$ref": "schema:Person" }]
    },
    "endTime": {
      "description": "The endTime of something. For a reserved event or service (e.g. FoodEstablishmentReservation), the time that it is expected to end. For actions that span a period of time, when the action was performed. E.g. John wrote a book from January to *December*. For media, including audio and video, it's the time offset of the end of a clip within a larger file.\\n\\nNote that Event uses startDate/endDate instead of startTime/endTime, even when describing dates with times. This situation may be clarified in future revisions.",
      "anyOf": [
        { "type": "string", "format": "date-time" },
        { "type": "string", "format": "time" }
      ]
    },
    "error": {
      "description": "For failed actions, more information on the cause of the failure.",
      "oneOf": [
        { "$ref": "schema:Thing" },
        { "type": "array", "items": { "$ref": "schema:Thing" } }
      ]
    },
    "instrument": {
      "description": "The object that helped the agent perform the action. E.g. John wrote a book with *a pen*.",
      "$ref": "schema:Thing"
    },
    "location": {
      "description": "The location of, for example, where an event is happening, where an organization is located, or where an action takes place.",
      "anyOf": [
        { "type": "string" },
        { "$ref": "schema:Place" },
        { "$ref": "schema:PostalAddress" },
        { "$ref": "schema:VirtualLocation" }
      ]
    },
    "object": {
      "description": "The object upon which the action is carried out, whose state is kept intact or changed. Also known as the semantic roles patient, affected or undergoer (which change their state) or theme (which doesn't). E.g. John read *a book*.",
      "$ref": "schema:Thing"
    },
    "participant": {
      "description": "Other co-agents that participated in the action indirectly. E.g. John wrote a book with *Steve*.",
      "oneOf": [
        {
          "anyOf": [
            { "$ref": "schema:Organization" },
            { "$ref": "schema:Person" }
          ]
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              { "$ref": "schema:Organization" },
              { "$ref": "schema:Person" }
            ]
          }
        }
      ]
    },
    "provider": {
      "description": "The service provider, service operator, or service performer; the goods producer. Another party (a seller) may offer those services or goods on behalf of the provider. A provider may also serve as the seller.",
      "anyOf": [{ "$ref": "schema:Organization" }, { "$ref": "schema:Person" }]
    },
    "result": {
      "description": "The result produced in the action. E.g. John wrote *a book*.",
      "$ref": "schema:Thing"
    },
    "startTime": {
      "description": "The startTime of something. For a reserved event or service (e.g. FoodEstablishmentReservation), the time that it is expected to start. For actions that span a period of time, when the action was performed. E.g. John wrote a book from *January* to December. For media, including audio and video, it's the time offset of the start of a clip within a larger file.\\n\\nNote that Event uses startDate/endDate instead of startTime/endTime, even when describing dates with times. This situation may be clarified in future revisions.",
      "anyOf": [
        { "type": "string", "format": "date-time" },
        { "type": "string", "format": "time" }
      ]
    },
    "target": {
      "description": "Indicates a target EntryPoint, or url, for an Action.",
      "oneOf": [
        {
          "anyOf": [
            { "type": "string", "format": "uri" },
            { "$ref": "schema:EntryPoint" }
          ]
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              { "type": "string", "format": "uri" },
              { "$ref": "schema:EntryPoint" }
            ]
          }
        }
      ]
    }
  }
}
