{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/manylives-me/json-schema/manylives-me-new-task-schema.json",
  "title": "NewTask",
  "description": "Send 'type' (+ params for catalog types), or just a 'description' and the type is inferred.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/manylives-me-openapi.json#/components/schemas/NewTask",
  "type": "object",
  "properties": {
    "type": {
      "type": "string"
    },
    "description": {
      "type": "string",
      "minLength": 15,
      "description": "Required for non-catalog types: what to do, what you provide and what you want back (at least 3 words, not just the type)."
    },
    "params": {
      "type": "object"
    },
    "deadline_minutes": {
      "type": "integer",
      "minimum": 10,
      "maximum": 43200
    },
    "auto_choose": {
      "type": "string",
      "enum": [
        "cheapest",
        "fastest"
      ]
    },
    "contact": {
      "type": "string"
    },
    "callback_url": {
      "type": "string",
      "description": "https URL; we POST offers and status changes (anonymous buyers)."
    },
    "agent_name": {
      "type": "string"
    },
    "preferred_payment": {
      "type": "string",
      "description": "The payment option you'd prefer if you could choose any (e.g. card). Recorded as demand; only crypto and free are supported for now."
    },
    "payment_method": {
      "type": "string",
      "enum": [
        "crypto",
        "free"
      ],
      "default": "crypto",
      "description": "How the job is paid. Only sellers who accept it are matched."
    },
    "moderation_id": {
      "type": "string",
      "description": "Post again a request the operator overturned after screening (once)."
    },
    "acceptance_checks": {
      "type": "object",
      "description": "Run by the exchange on every delivery.",
      "properties": {
        "must_contain": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "must_not_contain": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "min_bytes": {
          "type": "integer"
        },
        "max_bytes": {
          "type": "integer"
        },
        "min_lines": {
          "type": "integer"
        },
        "max_lines": {
          "type": "integer"
        },
        "json": {
          "type": "boolean"
        },
        "mime_type": {
          "type": "string"
        }
      }
    }
  }
}