561 Group Market

Typed JSON to RFC 9651 Structured Field

Serialize tagged JSON as native RFC 9651 Item/List/Dictionary. Use the parser's same typed carrier and ordered map pairs. Refuse rounding beyond three decimal places, duplicate JSON map keys, bad Base64, nested inner lists and unrepresentable values before payment. Up to 16384 field bytes and 65536 JSON bytes. Preserve integer/decimal identity, exact epoch seconds and Unicode Display Strings.

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/json-to-http-field
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": 102400,
  "bodySchema": {
    "type": "object",
    "additionalProperties": false,
    "required": [
      "kind",
      "value"
    ],
    "properties": {
      "kind": {
        "type": "string",
        "enum": [
          "item",
          "list",
          "dictionary"
        ]
      },
      "value": {
        "type": [
          "object",
          "array"
        ],
        "maxItems": 2048,
        "description": "Native RFC 9651 typed carrier returned by http-field-to-json. item: {type:\"item\", value:{type, value}, parameters:[[key, taggedBareValue]]}; list: ordered Item/InnerList nodes; dictionary: ordered [key, Item/InnerList] pairs. Bare type is integer, decimal, string, token, byteSequence (canonical Base64), boolean, date (integer seconds), or displayString. InnerList: {type:\"innerList\", value:[Item], parameters:[[key, taggedBareValue]]}. Exact kind, tags, keys, limits and representability are validated before payment."
      }
    }
  }
}

Example request

{
  "method": "POST",
  "url": "https://market.561.group/v1/data/json-to-http-field",
  "headers": {
    "accept": "application/json",
    "content-type": "application/json"
  },
  "body": {
    "kind": "dictionary",
    "value": [
      [
        "u",
        {
          "parameters": [],
          "type": "item",
          "value": {
            "type": "integer",
            "value": 1
          }
        }
      ],
      [
        "i",
        {
          "parameters": [],
          "type": "item",
          "value": {
            "type": "boolean",
            "value": true
          }
        }
      ],
      [
        "label",
        {
          "parameters": [],
          "type": "item",
          "value": {
            "type": "displayString",
            "value": "café"
          }
        }
      ],
      [
        "expiry",
        {
          "parameters": [],
          "type": "item",
          "value": {
            "type": "date",
            "value": 1735689600
          }
        }
      ],
      [
        "ratio",
        {
          "parameters": [],
          "type": "item",
          "value": {
            "type": "decimal",
            "value": 1
          }
        }
      ]
    ]
  }
}

Output

{
  "schema": {
    "type": "object",
    "additionalProperties": false,
    "required": [
      "text"
    ],
    "properties": {
      "text": {
        "type": "string"
      }
    }
  },
  "example": {
    "text": "u=1, i, label=%\"caf%c3%a9\", expiry=@1735689600, ratio=1.0"
  }
}

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 '{"kind":"dictionary","value":[["u",{"parameters":[],"type":"item","value":{"type":"integer","value":1}}],["i",{"parameters":[],"type":"item","value":{"type":"boolean","value":true}}],["label",{"parameters":[],"type":"item","value":{"type":"displayString","value":"café"}}],["expiry",{"parameters":[],"type":"item","value":{"type":"date","value":1735689600}}],["ratio",{"parameters":[],"type":"item","value":{"type":"decimal","value":1}}]]}' --url 'https://market.561.group/v1/data/json-to-http-field'

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

Machine-readable