561 Group Market

XML to Ordered JSON Nodes

Parse XML 1.0 into ordered JSON nodes, preserving mixed text, attributes, CDATA, comments, processing instructions and namespace declarations. Apply XML line-ending/attribute normalization; retain qualified names and validate bindings, reserved namespaces and expanded attribute uniqueness. No DTD/XML1.1, custom entities or fetching. Bounds: 65536 XML bytes, 1048576 JSON bytes, 8192 nodes/attributes, depth 64. Malformed/unsupported input refused before payment.

Price
from $0.0012 USDC per request (starting price; the 402 response quotes the exact amount for your input)
Network
Base mainnet, eip155:8453, settled in USDC through the Coinbase CDP facilitator
Method and URL
POST https://market.561.group/v1/data/xml-to-json-tree
Response type
application/json
Seller
Causeway Services (561 Group)

Input contract

Input that fails this contract is refused with a 4xx status before any payment is requested.

{
  "maxBytes": 1048576,
  "bodySchema": {
    "type": "object",
    "required": [
      "xml"
    ],
    "properties": {
      "xml": {
        "type": "string",
        "maxLength": 65536,
        "description": "Decoded Unicode XML; maximum 65536 UTF-8 bytes, 8192 nodes/attributes and depth 64."
      }
    },
    "additionalProperties": false
  }
}

Example request

{
  "method": "POST",
  "url": "https://market.561.group/v1/data/xml-to-json-tree",
  "headers": {
    "accept": "application/json",
    "content-type": "application/json"
  },
  "body": {
    "xml": "<r xmlns:p=\"urn:example\" p:a=\"a&#9;b\">before<![CDATA[x<y]]><!--note--><?pi data?></r>"
  }
}

Output

{
  "schema": {
    "type": "object",
    "required": [
      "document",
      "byteLength",
      "jsonByteLength"
    ],
    "properties": {
      "document": {
        "type": "object",
        "required": [
          "kind",
          "children"
        ],
        "properties": {
          "kind": {
            "const": "document"
          },
          "children": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "kind"
              ],
              "properties": {
                "kind": {
                  "enum": [
                    "element",
                    "text",
                    "cdata",
                    "comment",
                    "pi",
                    "xmldecl"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "attributes": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                },
                "children": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "value": {
                  "type": "string"
                },
                "version": {
                  "const": "1.0"
                },
                "encoding": {
                  "type": "string"
                },
                "standalone": {
                  "enum": [
                    "yes",
                    "no"
                  ]
                }
              },
              "additionalProperties": false,
              "description": "Ordered XML node. Element requires name, attributes and children; text/cdata/comment require value; pi requires name and value; xmldecl requires version 1.0. Children use this same node carrier. Unknown fields refused."
            },
            "maxItems": 8191
          }
        },
        "additionalProperties": false
      },
      "byteLength": {
        "type": "integer",
        "minimum": 0,
        "maximum": 65536
      },
      "jsonByteLength": {
        "type": "integer",
        "maximum": 1048576
      }
    },
    "additionalProperties": false
  },
  "example": {
    "document": {
      "kind": "document",
      "children": [
        {
          "kind": "element",
          "name": "r",
          "attributes": {
            "xmlns:p": "urn:example",
            "p:a": "a\tb"
          },
          "children": [
            {
              "kind": "text",
              "value": "before"
            },
            {
              "kind": "cdata",
              "value": "x<y"
            },
            {
              "kind": "comment",
              "value": "note"
            },
            {
              "kind": "pi",
              "name": "pi",
              "value": "data"
            }
          ]
        }

… (truncated; the full contract is in /v1/catalog)

How to buy with x402

  1. Send the request without payment. The server answers 402 Payment Required with a base64 JSON PAYMENT-REQUIRED header holding the amount, asset, network and payee.
  2. Have your wallet sign an EIP-3009 transferWithAuthorization for exactly those terms (an x402 client library does this for you).
  3. Repeat the identical request with the signed payload in the PAYMENT-SIGNATURE header.
  4. The server verifies, runs the operation, settles, and returns 200 with the result and a PAYMENT-RESPONSE header carrying the settlement receipt.

Read the price without paying

curl --include --request POST --header 'accept: application/json' --header 'content-type: application/json' --data-raw '{"xml":"<r xmlns:p=\"urn:example\" p:a=\"a&#9;b\">before<![CDATA[x<y]]><!--note--><?pi data?></r>"}' --url 'https://market.561.group/v1/data/xml-to-json-tree'

This request authorizes nothing; it returns the live payment terms. Read the full explanation of x402.

Machine-readable