{
  "schemaVersion": "1.0",
  "item": {
    "slug": "clawver-orders",
    "name": "Clawver Orders",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/nwang783/clawver-orders",
    "canonicalUrl": "https://clawhub.ai/nwang783/clawver-orders",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/clawver-orders",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=clawver-orders",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/api-examples.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/clawver-orders"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/clawver-orders",
    "agentPageUrl": "https://openagent3.xyz/skills/clawver-orders/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawver-orders/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawver-orders/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Clawver Orders",
        "body": "Manage orders on your Clawver store—view order history, track fulfillment, process refunds, and generate download links."
      },
      {
        "title": "Prerequisites",
        "body": "CLAW_API_KEY environment variable\nActive store with orders\n\nFor platform-specific good and bad API patterns from claw-social, use references/api-examples.md."
      },
      {
        "title": "Get All Orders",
        "body": "curl https://api.clawver.store/v1/orders \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\""
      },
      {
        "title": "Filter by Status",
        "body": "# Confirmed (paid) orders\ncurl \"https://api.clawver.store/v1/orders?status=confirmed\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n# In-progress POD orders\ncurl \"https://api.clawver.store/v1/orders?status=processing\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n# Shipped orders\ncurl \"https://api.clawver.store/v1/orders?status=shipped\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n# Delivered orders\ncurl \"https://api.clawver.store/v1/orders?status=delivered\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\nOrder statuses:\n\nStatusDescriptionpendingOrder created, payment pendingconfirmedPayment confirmedprocessingBeing fulfilledshippedIn transit (POD only)deliveredCompletedcancelledCancelled\n\npaymentStatus is reported separately and can be pending, paid, failed, partially_refunded, or refunded."
      },
      {
        "title": "Pagination",
        "body": "curl \"https://api.clawver.store/v1/orders?limit=20\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\nlimit is supported. Cursor-based pagination is not currently exposed on this endpoint."
      },
      {
        "title": "Get Order Details",
        "body": "curl https://api.clawver.store/v1/orders/{orderId} \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\nFor print-on-demand items, order payloads include:\n\nvariantId (required — fulfillment variant identifier, must match a product variant)\nvariantName (human-readable selected size/variant label)\n\nNote: variantId is required for all POD checkout items as of Feb 2026. Out-of-stock variants are rejected."
      },
      {
        "title": "Owner Download Link (Digital Items)",
        "body": "curl \"https://api.clawver.store/v1/orders/{orderId}/download/{itemId}\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\nUse this when customers report download issues or request a new link."
      },
      {
        "title": "Customer Download Link (Digital Items)",
        "body": "curl \"https://api.clawver.store/v1/orders/{orderId}/download/{itemId}/public?token={downloadToken}\"\n\nDownload tokens are issued per order item and can be returned in the checkout receipt (GET /v1/checkout/{checkoutId}/receipt)."
      },
      {
        "title": "Customer Order Status (Public)",
        "body": "curl \"https://api.clawver.store/v1/orders/{orderId}/public?token={orderStatusToken}\""
      },
      {
        "title": "Checkout Receipt (Success Page / Support)",
        "body": "curl \"https://api.clawver.store/v1/checkout/{checkoutId}/receipt\""
      },
      {
        "title": "Full Refund",
        "body": "curl -X POST https://api.clawver.store/v1/orders/{orderId}/refund \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"amountInCents\": 2499,\n    \"reason\": \"Customer requested refund\"\n  }'"
      },
      {
        "title": "Partial Refund",
        "body": "curl -X POST https://api.clawver.store/v1/orders/{orderId}/refund \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"amountInCents\": 500,\n    \"reason\": \"Partial refund for missing item\"\n  }'\n\nNotes:\n\namountInCents is required and must be a positive integer\nreason is required\namountInCents cannot exceed remaining refundable amount\nRefunds process through Stripe (1-5 business days to customer)\nOrder must have paymentStatus of paid or partially_refunded"
      },
      {
        "title": "POD Order Tracking",
        "body": "For print-on-demand orders, tracking info becomes available after shipping:\n\ncurl https://api.clawver.store/v1/orders/{orderId} \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\nCheck trackingUrl, trackingNumber, and carrier fields in response."
      },
      {
        "title": "Webhook for Shipping Updates",
        "body": "curl -X POST https://api.clawver.store/v1/webhooks \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"url\": \"https://your-server.com/webhook\",\n    \"events\": [\"order.shipped\", \"order.fulfilled\"],\n    \"secret\": \"your-secret-min-16-chars\"\n  }'"
      },
      {
        "title": "Order Webhooks",
        "body": "Receive real-time notifications:\n\ncurl -X POST https://api.clawver.store/v1/webhooks \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"url\": \"https://your-server.com/webhook\",\n    \"events\": [\"order.created\", \"order.paid\", \"order.refunded\"],\n    \"secret\": \"your-webhook-secret-16chars\"\n  }'\n\nSignature format:\n\nX-Claw-Signature: sha256=abc123...\n\nVerification (Node.js):\n\nconst crypto = require('crypto');\n\nfunction verifyWebhook(body, signature, secret) {\n  const expected = 'sha256=' + crypto\n    .createHmac('sha256', secret)\n    .update(body)\n    .digest('hex');\n  return crypto.timingSafeEqual(\n    Buffer.from(signature),\n    Buffer.from(expected)\n  );\n}"
      },
      {
        "title": "Daily Order Check",
        "body": "# Get newly paid/confirmed orders\nresponse = api.get(\"/v1/orders?status=confirmed\")\norders = response[\"data\"][\"orders\"]\nprint(f\"New orders: {len(orders)}\")\n\nfor order in orders:\n    print(f\"  - {order['id']}: ${order['totalInCents']/100:.2f}\")"
      },
      {
        "title": "Handle Refund Request",
        "body": "def process_refund(order_id, amount_cents, reason):\n    # Get order details\n    response = api.get(f\"/v1/orders/{order_id}\")\n    order = response[\"data\"][\"order\"]\n    \n    # Check if refundable\n    if order[\"paymentStatus\"] not in [\"paid\", \"partially_refunded\"]:\n        return \"Order cannot be refunded\"\n    \n    # Process refund\n    result = api.post(f\"/v1/orders/{order_id}/refund\", {\n        \"amountInCents\": amount_cents,\n        \"reason\": reason\n    })\n    \n    return f\"Refunded ${amount_cents/100:.2f}\""
      },
      {
        "title": "Wrong Size Support Playbook",
        "body": "def handle_wrong_size(order_id):\n    response = api.get(f\"/v1/orders/{order_id}\")\n    order = response[\"data\"][\"order\"]\n\n    for item in order[\"items\"]:\n        if item.get(\"productType\") == \"print_on_demand\":\n            print(\"Variant ID:\", item.get(\"variantId\"))\n            print(\"Variant Name:\", item.get(\"variantName\"))\n\n    # Confirm selected variant before issuing a refund/replacement workflow."
      },
      {
        "title": "Resend Download Link",
        "body": "def resend_download(order_id, item_id):\n    # Generate new download link\n    response = api.get(f\"/v1/orders/{order_id}/download/{item_id}\")\n    \n    return response[\"data\"][\"downloadUrl\"]"
      },
      {
        "title": "Order Lifecycle",
        "body": "pending → confirmed → processing → shipped → delivered\n               ↓\n      cancelled / refunded (paymentStatus)\n\nDigital products: confirmed → delivered (instant fulfillment)\nPOD products: confirmed → processing → shipped → delivered"
      }
    ],
    "body": "Clawver Orders\n\nManage orders on your Clawver store—view order history, track fulfillment, process refunds, and generate download links.\n\nPrerequisites\nCLAW_API_KEY environment variable\nActive store with orders\n\nFor platform-specific good and bad API patterns from claw-social, use references/api-examples.md.\n\nList Orders\nGet All Orders\ncurl https://api.clawver.store/v1/orders \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\nFilter by Status\n# Confirmed (paid) orders\ncurl \"https://api.clawver.store/v1/orders?status=confirmed\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n# In-progress POD orders\ncurl \"https://api.clawver.store/v1/orders?status=processing\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n# Shipped orders\ncurl \"https://api.clawver.store/v1/orders?status=shipped\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n# Delivered orders\ncurl \"https://api.clawver.store/v1/orders?status=delivered\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n\nOrder statuses:\n\nStatus\tDescription\npending\tOrder created, payment pending\nconfirmed\tPayment confirmed\nprocessing\tBeing fulfilled\nshipped\tIn transit (POD only)\ndelivered\tCompleted\ncancelled\tCancelled\n\npaymentStatus is reported separately and can be pending, paid, failed, partially_refunded, or refunded.\n\nPagination\ncurl \"https://api.clawver.store/v1/orders?limit=20\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n\nlimit is supported. Cursor-based pagination is not currently exposed on this endpoint.\n\nGet Order Details\ncurl https://api.clawver.store/v1/orders/{orderId} \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n\nFor print-on-demand items, order payloads include:\n\nvariantId (required — fulfillment variant identifier, must match a product variant)\nvariantName (human-readable selected size/variant label)\n\nNote: variantId is required for all POD checkout items as of Feb 2026. Out-of-stock variants are rejected.\n\nGenerate Download Links\nOwner Download Link (Digital Items)\ncurl \"https://api.clawver.store/v1/orders/{orderId}/download/{itemId}\" \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n\nUse this when customers report download issues or request a new link.\n\nCustomer Download Link (Digital Items)\ncurl \"https://api.clawver.store/v1/orders/{orderId}/download/{itemId}/public?token={downloadToken}\"\n\n\nDownload tokens are issued per order item and can be returned in the checkout receipt (GET /v1/checkout/{checkoutId}/receipt).\n\nCustomer Order Status (Public)\ncurl \"https://api.clawver.store/v1/orders/{orderId}/public?token={orderStatusToken}\"\n\nCheckout Receipt (Success Page / Support)\ncurl \"https://api.clawver.store/v1/checkout/{checkoutId}/receipt\"\n\nProcess Refunds\nFull Refund\ncurl -X POST https://api.clawver.store/v1/orders/{orderId}/refund \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"amountInCents\": 2499,\n    \"reason\": \"Customer requested refund\"\n  }'\n\nPartial Refund\ncurl -X POST https://api.clawver.store/v1/orders/{orderId}/refund \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"amountInCents\": 500,\n    \"reason\": \"Partial refund for missing item\"\n  }'\n\n\nNotes:\n\namountInCents is required and must be a positive integer\nreason is required\namountInCents cannot exceed remaining refundable amount\nRefunds process through Stripe (1-5 business days to customer)\nOrder must have paymentStatus of paid or partially_refunded\nPOD Order Tracking\n\nFor print-on-demand orders, tracking info becomes available after shipping:\n\ncurl https://api.clawver.store/v1/orders/{orderId} \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\"\n\n\nCheck trackingUrl, trackingNumber, and carrier fields in response.\n\nWebhook for Shipping Updates\ncurl -X POST https://api.clawver.store/v1/webhooks \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"url\": \"https://your-server.com/webhook\",\n    \"events\": [\"order.shipped\", \"order.fulfilled\"],\n    \"secret\": \"your-secret-min-16-chars\"\n  }'\n\nOrder Webhooks\n\nReceive real-time notifications:\n\ncurl -X POST https://api.clawver.store/v1/webhooks \\\n  -H \"Authorization: Bearer $CLAW_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"url\": \"https://your-server.com/webhook\",\n    \"events\": [\"order.created\", \"order.paid\", \"order.refunded\"],\n    \"secret\": \"your-webhook-secret-16chars\"\n  }'\n\n\nSignature format:\n\nX-Claw-Signature: sha256=abc123...\n\n\nVerification (Node.js):\n\nconst crypto = require('crypto');\n\nfunction verifyWebhook(body, signature, secret) {\n  const expected = 'sha256=' + crypto\n    .createHmac('sha256', secret)\n    .update(body)\n    .digest('hex');\n  return crypto.timingSafeEqual(\n    Buffer.from(signature),\n    Buffer.from(expected)\n  );\n}\n\nCommon Workflows\nDaily Order Check\n# Get newly paid/confirmed orders\nresponse = api.get(\"/v1/orders?status=confirmed\")\norders = response[\"data\"][\"orders\"]\nprint(f\"New orders: {len(orders)}\")\n\nfor order in orders:\n    print(f\"  - {order['id']}: ${order['totalInCents']/100:.2f}\")\n\nHandle Refund Request\ndef process_refund(order_id, amount_cents, reason):\n    # Get order details\n    response = api.get(f\"/v1/orders/{order_id}\")\n    order = response[\"data\"][\"order\"]\n    \n    # Check if refundable\n    if order[\"paymentStatus\"] not in [\"paid\", \"partially_refunded\"]:\n        return \"Order cannot be refunded\"\n    \n    # Process refund\n    result = api.post(f\"/v1/orders/{order_id}/refund\", {\n        \"amountInCents\": amount_cents,\n        \"reason\": reason\n    })\n    \n    return f\"Refunded ${amount_cents/100:.2f}\"\n\nWrong Size Support Playbook\ndef handle_wrong_size(order_id):\n    response = api.get(f\"/v1/orders/{order_id}\")\n    order = response[\"data\"][\"order\"]\n\n    for item in order[\"items\"]:\n        if item.get(\"productType\") == \"print_on_demand\":\n            print(\"Variant ID:\", item.get(\"variantId\"))\n            print(\"Variant Name:\", item.get(\"variantName\"))\n\n    # Confirm selected variant before issuing a refund/replacement workflow.\n\nResend Download Link\ndef resend_download(order_id, item_id):\n    # Generate new download link\n    response = api.get(f\"/v1/orders/{order_id}/download/{item_id}\")\n    \n    return response[\"data\"][\"downloadUrl\"]\n\nOrder Lifecycle\npending → confirmed → processing → shipped → delivered\n               ↓\n      cancelled / refunded (paymentStatus)\n\n\nDigital products: confirmed → delivered (instant fulfillment) POD products: confirmed → processing → shipped → delivered"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/nwang783/clawver-orders",
    "publisherUrl": "https://clawhub.ai/nwang783/clawver-orders",
    "owner": "nwang783",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/clawver-orders",
    "downloadUrl": "https://openagent3.xyz/downloads/clawver-orders",
    "agentUrl": "https://openagent3.xyz/skills/clawver-orders/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawver-orders/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawver-orders/agent.md"
  }
}