{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "An artifact representing a data value, file, or resource that can be used or generated by workflow processes",
  "type": "object",
  "properties": {
    "@type": {
      "const": "Artifact",
      "description": "Type identifier for a wfdesc Artifact"
    },
    "@id": {
      "type": "string",
      "format": "uri",
      "description": "Unique identifier for this artifact"
    },
    "value": {
      "description": "The concrete data value, file reference, or content of this artifact",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "array"
        },
        {
          "type": "object"
        },
        {
          "type": "null"
        }
      ]
    },
    "mediaType": {
      "type": "string",
      "description": "MIME type of the artifact content",
      "examples": [
        "application/json",
        "text/csv",
        "image/tiff",
        "application/x-netcdf",
        "text/plain"
      ]
    },
    "size": {
      "type": "integer",
      "minimum": 0,
      "description": "Size of the artifact in bytes"
    },
    "checksum": {
      "type": "object",
      "description": "Checksum/hash information for data integrity",
      "properties": {
        "algorithm": {
          "type": "string",
          "enum": [
            "MD5",
            "SHA-1",
            "SHA-256",
            "SHA-512"
          ],
          "description": "Hash algorithm used"
        },
        "value": {
          "type": "string",
          "description": "Hexadecimal hash value"
        }
      },
      "required": [
        "algorithm",
        "value"
      ]
    },
    "description": {
      "type": "string",
      "description": "Human-readable description of this artifact"
    },
    "name": {
      "type": "string",
      "description": "Short name or label for this artifact"
    },
    "encoding": {
      "type": "string",
      "description": "Character encoding for text-based artifacts",
      "examples": [
        "UTF-8",
        "ASCII",
        "Latin-1"
      ]
    },
    "location": {
      "type": "string",
      "format": "uri",
      "description": "URI or file path where this artifact can be accessed"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "When this artifact was created"
    },
    "modifiedAt": {
      "type": "string",
      "format": "date-time",
      "description": "When this artifact was last modified"
    }
  },
  "required": [
    "@type"
  ],
  "examples": [
    {
      "@type": "Artifact",
      "@id": "#threshold-value",
      "value": 0.75,
      "description": "Analysis threshold parameter"
    },
    {
      "@type": "Artifact",
      "@id": "#input-file",
      "value": "data/satellite_image.tif",
      "mediaType": "image/tiff",
      "size": 1048576,
      "checksum": {
        "algorithm": "SHA-256",
        "value": "a1b2c3d4e5f6789012345678901234567890123456789012345678901234567890"
      },
      "description": "Satellite imagery for processing"
    },
    {
      "@type": "Artifact",
      "@id": "#config-params",
      "value": {
        "north": 16.1,
        "south": 15.9,
        "east": 95.35,
        "west": 95.15
      },
      "description": "Geographic bounding box configuration"
    }
  ]
}