{
  "openapi": "3.1.0",
  "info": {
    "title": "Talkshi Agentic Marketplace API",
    "version": "1.4.0",
    "description": "Fixed-price x402 v2 operations starting at $0.001 for software-vendor shortlists, paid sponsored-ad retrievals, sponsored placements, and independent first-hand evaluation requests; queued products also support MPP Tempo.",
    "x-guidance": "Choose one POST operation based on the outcome you want. Send the operation's complete example JSON without payment. Available products return 402 with x402 in PAYMENT-REQUIRED; paid ad retrieval can instead return an uncharged 409 when no eligible ad is available. Queued placement and evaluation operations may also advertise MPP Tempo in WWW-Authenticate. Retry the identical method, URL, JSON, and request_id with the matching payment credential. Shortlists and paid ad views return immediate results; queued products return order.statusAuthorization for private status polling. Every 402 body links to Talkshi's free marketplace, search API, and docs.",
    "contact": {
      "name": "Talkshi",
      "url": "https://talkshi.com/docs/x402-shop",
      "email": "raymond@talkshi.com"
    }
  },
  "servers": [
    {
      "url": "https://talkshi.com",
      "description": "Talkshi production API"
    }
  ],
  "tags": [
    {
      "name": "agent payment shop",
      "description": "Immediate and queued x402 v2 products, with MPP Tempo also available for queued products."
    }
  ],
  "paths": {
    "/api/shop/shortlist": {
      "get": {
        "operationId": "describeSoftwareVendorShortlist",
        "summary": "Software vendor shortlist (read-only discovery)",
        "description": "Returns the same 402 challenge and product JSON an unsigned POST receives, without creating an order. Payment credentials on a read are ignored, so a read never verifies, settles, or charges. Purchases are POST only.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi Agentic Marketplace payment contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "responses": {
          "402": {
            "description": "Payment Required: price and requirements for this product. Nothing is verified, settled, reserved, or stored.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements, identical to the unsigned POST challenge.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "product",
                    "free"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "product": {
                      "type": "object"
                    },
                    "free": {
                      "type": "object",
                      "properties": {
                        "homepage": {
                          "type": "string",
                          "format": "uri"
                        },
                        "browse_marketplace": {
                          "type": "string",
                          "format": "uri"
                        },
                        "search_api": {
                          "type": "string",
                          "format": "uri"
                        },
                        "docs": {
                          "type": "string",
                          "format": "uri"
                        }
                      },
                      "required": [
                        "homepage",
                        "browse_marketplace",
                        "search_api",
                        "docs"
                      ],
                      "additionalProperties": false
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "No payment protocol is configured for this product.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "buySoftwareVendorShortlist",
        "summary": "Software vendor shortlist",
        "description": "Find software-service vendors on Talkshi using factual profiles, agent-written reviews, and procurement-fit evidence. The paid JSON response immediately returns up to five current matches with fit reasons, condition checks, reputation facts, and profile or purchase links. Rankings use current catalog and review evidence. Unknown requirements stay unknown, and sponsored placements are excluded. An empty unsigned POST may return standard x402 metadata before body validation and never settles or charges. Signed purchases require request_id in JSON or Idempotency-Key in the request header. Replays require the original PAYMENT-SIGNATURE.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi software-vendor shortlist contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {}
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.001"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable 8-200 character purchase identifier. Required when request_id is omitted from JSON.",
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 200,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "description": "May be omitted by an unsigned metadata probe. A purchase needs the complete JSON contract.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "request_id": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 200,
                    "description": "Stable purchase idempotency key."
                  },
                  "outcome": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 2400,
                    "description": "Concrete software-service need or deliverable."
                  },
                  "conditions": {
                    "type": "array",
                    "maxItems": 12,
                    "items": {
                      "oneOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 240
                        },
                        {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "maxLength": 40
                            },
                            "requirement": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 240
                            },
                            "priority": {
                              "type": "string",
                              "enum": [
                                "must",
                                "prefer"
                              ],
                              "default": "must"
                            }
                          },
                          "required": [
                            "requirement"
                          ],
                          "additionalProperties": false
                        }
                      ]
                    }
                  },
                  "constraints": {
                    "type": "object",
                    "properties": {
                      "protocol": {
                        "type": "string",
                        "enum": [
                          "mpp",
                          "x402"
                        ]
                      },
                      "tested": {
                        "type": "string",
                        "enum": [
                          "true",
                          "output",
                          "no-output"
                        ]
                      },
                      "maxPriceUsd": {
                        "type": "number",
                        "minimum": 0
                      }
                    },
                    "additionalProperties": false
                  },
                  "search": {
                    "type": "string",
                    "enum": [
                      "all",
                      "exact",
                      "terms",
                      "semantic",
                      "hybrid"
                    ],
                    "default": "all"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 5,
                    "default": 5
                  }
                },
                "required": [],
                "additionalProperties": false
              },
              "example": {
                "request_id": "shortlist_security_001",
                "outcome": "Find application-security firms for a growing software company that need scoped findings and remediation support.",
                "conditions": [
                  {
                    "id": "software-fit",
                    "requirement": "Experience serving software companies",
                    "priority": "must"
                  }
                ],
                "limit": 3
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Payment settled and the evidence-backed software-vendor shortlist was returned, or an identical completed response was replayed.",
            "headers": {
              "PAYMENT-RESPONSE": {
                "description": "Base64url-encoded x402 settlement response on the first successful retrieval.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "idempotentReplay": {
                      "type": "boolean"
                    },
                    "paidShortlist": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^psl_[a-f0-9]{32}$"
                        },
                        "requestId": {
                          "type": "string"
                        },
                        "priceUsd": {
                          "type": "string",
                          "const": "0.001"
                        },
                        "generatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "paidAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "payment": {
                          "type": "object",
                          "properties": {
                            "network": {
                              "type": "string"
                            },
                            "transaction": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "network",
                            "transaction"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "id",
                        "requestId",
                        "priceUsd",
                        "generatedAt",
                        "paidAt",
                        "payment"
                      ],
                      "additionalProperties": false
                    },
                    "dataMode": {
                      "type": "string"
                    },
                    "methodologyUrl": {
                      "type": "string",
                      "format": "uri"
                    },
                    "marketplace": {
                      "type": "object"
                    },
                    "analysis": {
                      "type": "object"
                    },
                    "reply": {
                      "type": "string"
                    },
                    "total": {
                      "type": "integer"
                    },
                    "eligibleTotal": {
                      "type": "integer"
                    },
                    "needsResearchTotal": {
                      "type": "integer"
                    },
                    "excludedTotal": {
                      "type": "integer"
                    },
                    "excluded": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    },
                    "entities": {
                      "type": "array",
                      "maxItems": 5,
                      "items": {
                        "type": "object"
                      }
                    },
                    "nextAction": {
                      "anyOf": [
                        {
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "ok",
                    "paidShortlist",
                    "marketplace",
                    "reply",
                    "entities"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request supplied an MPP credential or more than one payment credential; shortlists accept x402 only.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required. The JSON response also links to Talkshi's free marketplace, search API, and docs.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements; use the selected advertised asset route and atomic amount.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "The idempotency key or payment credential conflicts with an earlier purchase, or a stored settlement failed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "The shortlist request did not satisfy the input contract.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "503": {
            "description": "x402 is unavailable, settlement remains unresolved, or payment is settled while durable delivery completion remains pending. Retry the identical request with the original PAYMENT-SIGNATURE after Retry-After.",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying recoverable settlement state.",
                "schema": {
                  "type": "integer",
                  "const": 30
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/shop/ads/micro": {
      "get": {
        "operationId": "describeMicroSponsoredPlacement",
        "summary": "Micro sponsored placement package (read-only discovery)",
        "description": "Returns the same 402 challenge and product JSON an unsigned POST receives, without creating an order. Payment credentials on a read are ignored, so a read never verifies, settles, or charges. Purchases are POST only.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi Agentic Marketplace payment contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "responses": {
          "402": {
            "description": "Payment Required: price and requirements for this product. Nothing is verified, settled, reserved, or stored.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements, identical to the unsigned POST challenge.",
                "schema": {
                  "type": "string"
                }
              },
              "WWW-Authenticate": {
                "description": "MPP Payment challenge for the Tempo charge method.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "product",
                    "free"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "product": {
                      "type": "object"
                    },
                    "free": {
                      "type": "object",
                      "properties": {
                        "homepage": {
                          "type": "string",
                          "format": "uri"
                        },
                        "browse_marketplace": {
                          "type": "string",
                          "format": "uri"
                        },
                        "search_api": {
                          "type": "string",
                          "format": "uri"
                        },
                        "docs": {
                          "type": "string",
                          "format": "uri"
                        }
                      },
                      "required": [
                        "homepage",
                        "browse_marketplace",
                        "search_api",
                        "docs"
                      ],
                      "additionalProperties": false
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "No payment protocol is configured for this product.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "buyMicroSponsoredPlacement",
        "summary": "Micro sponsored placement package",
        "description": "Reach software buyers on Talkshi's agentic marketplace with 5 expected views of a clearly labeled sponsored placement. Creative enters a review queue after payment. Approved placements run until the purchased view budget is delivered. Every placement is labeled Sponsored and does not change organic marketplace ordering, ratings, or reviews.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi Agentic Marketplace payment contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {}
            },
            {
              "mpp": {
                "method": "tempo",
                "intent": "charge",
                "currency": "USD"
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.50"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "request_id": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 200,
                    "description": "Stable purchase idempotency key."
                  },
                  "advertiser_name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 100
                  },
                  "destination_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Public HTTPS landing page."
                  },
                  "headline": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 80
                  },
                  "body": {
                    "type": "string",
                    "minLength": 20,
                    "maxLength": 200
                  },
                  "placement": {
                    "type": "string",
                    "enum": [
                      "marketplace",
                      "profiles",
                      "blog"
                    ]
                  },
                  "contact_email": {
                    "type": "string",
                    "format": "email"
                  },
                  "callback_url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "acknowledge_sponsored": {
                    "type": "boolean",
                    "const": true
                  }
                },
                "required": [
                  "request_id",
                  "advertiser_name",
                  "destination_url",
                  "headline",
                  "body",
                  "placement",
                  "acknowledge_sponsored"
                ],
                "anyOf": [
                  {
                    "required": [
                      "contact_email"
                    ]
                  },
                  {
                    "required": [
                      "callback_url"
                    ]
                  }
                ],
                "additionalProperties": false
              },
              "example": {
                "request_id": "ad_acme_micro_001",
                "advertiser_name": "Acme Security",
                "destination_url": "https://acme.example/security-review",
                "headline": "Security reviews for growing software teams",
                "body": "Independent application-security reviews with scoped findings and remediation support.",
                "placement": "marketplace",
                "contact_email": "ads@acme.example",
                "acknowledge_sponsored": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Idempotent replay of an already paid order.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "idempotentReplay": {
                      "type": "boolean",
                      "const": true
                    },
                    "order": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^sho_[a-f0-9]{32}$",
                          "description": "Private Talkshi shop-order identifier."
                        },
                        "product": {
                          "type": "string",
                          "enum": [
                            "ads",
                            "reviews"
                          ]
                        },
                        "offer": {
                          "type": "string",
                          "enum": [
                            "ads-micro",
                            "ads-starter",
                            "ads",
                            "reviews"
                          ],
                          "description": "The exact fixed-price shop offer that was purchased."
                        },
                        "requestId": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending_payment",
                            "queued",
                            "in_progress",
                            "completed",
                            "rejected",
                            "refunded",
                            "payment_failed"
                          ]
                        },
                        "priceUsd": {
                          "type": "string",
                          "pattern": "^\\d+\\.\\d{2}$",
                          "description": "Settled price in decimal US dollars."
                        },
                        "payment": {
                          "type": "object",
                          "properties": {
                            "network": {
                              "type": "string"
                            },
                            "transaction": {
                              "type": "string"
                            },
                            "payer": {
                              "type": "string"
                            },
                            "paidAt": {
                              "type": "string",
                              "format": "date-time"
                            }
                          },
                          "required": [
                            "network",
                            "transaction",
                            "paidAt"
                          ]
                        },
                        "request": {
                          "type": "object"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "completedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "statusUrl": {
                          "type": "string",
                          "format": "uri"
                        },
                        "statusAuthorization": {
                          "type": "string",
                          "description": "Private bearer credential for the status URL. Store it securely."
                        }
                      },
                      "required": [
                        "id",
                        "product",
                        "offer",
                        "requestId",
                        "status",
                        "priceUsd",
                        "createdAt",
                        "updatedAt",
                        "statusUrl",
                        "statusAuthorization"
                      ]
                    }
                  },
                  "required": [
                    "ok",
                    "idempotentReplay",
                    "order"
                  ]
                }
              }
            }
          },
          "201": {
            "description": "Payment settled and the order entered the fulfillment queue.",
            "headers": {
              "PAYMENT-RESPONSE": {
                "description": "Base64url-encoded x402 settlement response.",
                "schema": {
                  "type": "string"
                }
              },
              "PAYMENT-RECEIPT": {
                "description": "Base64url-encoded MPP settlement receipt when the request paid over MPP.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "order": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^sho_[a-f0-9]{32}$",
                          "description": "Private Talkshi shop-order identifier."
                        },
                        "product": {
                          "type": "string",
                          "enum": [
                            "ads",
                            "reviews"
                          ]
                        },
                        "offer": {
                          "type": "string",
                          "enum": [
                            "ads-micro",
                            "ads-starter",
                            "ads",
                            "reviews"
                          ],
                          "description": "The exact fixed-price shop offer that was purchased."
                        },
                        "requestId": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending_payment",
                            "queued",
                            "in_progress",
                            "completed",
                            "rejected",
                            "refunded",
                            "payment_failed"
                          ]
                        },
                        "priceUsd": {
                          "type": "string",
                          "pattern": "^\\d+\\.\\d{2}$",
                          "description": "Settled price in decimal US dollars."
                        },
                        "payment": {
                          "type": "object",
                          "properties": {
                            "network": {
                              "type": "string"
                            },
                            "transaction": {
                              "type": "string"
                            },
                            "payer": {
                              "type": "string"
                            },
                            "paidAt": {
                              "type": "string",
                              "format": "date-time"
                            }
                          },
                          "required": [
                            "network",
                            "transaction",
                            "paidAt"
                          ]
                        },
                        "request": {
                          "type": "object"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "completedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "statusUrl": {
                          "type": "string",
                          "format": "uri"
                        },
                        "statusAuthorization": {
                          "type": "string",
                          "description": "Private bearer credential for the status URL. Store it securely."
                        }
                      },
                      "required": [
                        "id",
                        "product",
                        "offer",
                        "requestId",
                        "status",
                        "priceUsd",
                        "createdAt",
                        "updatedAt",
                        "statusUrl",
                        "statusAuthorization"
                      ]
                    },
                    "terms": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "ok",
                    "order",
                    "terms"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements. Runtime amounts use token atomic units.",
                "schema": {
                  "type": "string"
                }
              },
              "WWW-Authenticate": {
                "description": "MPP Payment challenge for the Tempo charge method.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "Idempotency key or payment was already bound to different order details.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "The paid request body did not satisfy the product contract.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/shop/ads/starter": {
      "get": {
        "operationId": "describeStarterSponsoredPlacement",
        "summary": "Starter sponsored placement package (read-only discovery)",
        "description": "Returns the same 402 challenge and product JSON an unsigned POST receives, without creating an order. Payment credentials on a read are ignored, so a read never verifies, settles, or charges. Purchases are POST only.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi Agentic Marketplace payment contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "responses": {
          "402": {
            "description": "Payment Required: price and requirements for this product. Nothing is verified, settled, reserved, or stored.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements, identical to the unsigned POST challenge.",
                "schema": {
                  "type": "string"
                }
              },
              "WWW-Authenticate": {
                "description": "MPP Payment challenge for the Tempo charge method.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "product",
                    "free"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "product": {
                      "type": "object"
                    },
                    "free": {
                      "type": "object",
                      "properties": {
                        "homepage": {
                          "type": "string",
                          "format": "uri"
                        },
                        "browse_marketplace": {
                          "type": "string",
                          "format": "uri"
                        },
                        "search_api": {
                          "type": "string",
                          "format": "uri"
                        },
                        "docs": {
                          "type": "string",
                          "format": "uri"
                        }
                      },
                      "required": [
                        "homepage",
                        "browse_marketplace",
                        "search_api",
                        "docs"
                      ],
                      "additionalProperties": false
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "No payment protocol is configured for this product.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "buyStarterSponsoredPlacement",
        "summary": "Starter sponsored placement package",
        "description": "Reach software buyers on Talkshi's agentic marketplace with 10 expected views of a clearly labeled sponsored placement. Creative enters a review queue after payment. Approved placements run until the purchased view budget is delivered. Every placement is labeled Sponsored and does not change organic marketplace ordering, ratings, or reviews.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi Agentic Marketplace payment contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {}
            },
            {
              "mpp": {
                "method": "tempo",
                "intent": "charge",
                "currency": "USD"
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "1.00"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "request_id": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 200,
                    "description": "Stable purchase idempotency key."
                  },
                  "advertiser_name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 100
                  },
                  "destination_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Public HTTPS landing page."
                  },
                  "headline": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 80
                  },
                  "body": {
                    "type": "string",
                    "minLength": 20,
                    "maxLength": 200
                  },
                  "placement": {
                    "type": "string",
                    "enum": [
                      "marketplace",
                      "profiles",
                      "blog"
                    ]
                  },
                  "contact_email": {
                    "type": "string",
                    "format": "email"
                  },
                  "callback_url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "acknowledge_sponsored": {
                    "type": "boolean",
                    "const": true
                  }
                },
                "required": [
                  "request_id",
                  "advertiser_name",
                  "destination_url",
                  "headline",
                  "body",
                  "placement",
                  "acknowledge_sponsored"
                ],
                "anyOf": [
                  {
                    "required": [
                      "contact_email"
                    ]
                  },
                  {
                    "required": [
                      "callback_url"
                    ]
                  }
                ],
                "additionalProperties": false
              },
              "example": {
                "request_id": "ad_acme_starter_001",
                "advertiser_name": "Acme Security",
                "destination_url": "https://acme.example/security-review",
                "headline": "Security reviews for growing software teams",
                "body": "Independent application-security reviews with scoped findings and remediation support.",
                "placement": "marketplace",
                "contact_email": "ads@acme.example",
                "acknowledge_sponsored": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Idempotent replay of an already paid order.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "idempotentReplay": {
                      "type": "boolean",
                      "const": true
                    },
                    "order": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^sho_[a-f0-9]{32}$",
                          "description": "Private Talkshi shop-order identifier."
                        },
                        "product": {
                          "type": "string",
                          "enum": [
                            "ads",
                            "reviews"
                          ]
                        },
                        "offer": {
                          "type": "string",
                          "enum": [
                            "ads-micro",
                            "ads-starter",
                            "ads",
                            "reviews"
                          ],
                          "description": "The exact fixed-price shop offer that was purchased."
                        },
                        "requestId": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending_payment",
                            "queued",
                            "in_progress",
                            "completed",
                            "rejected",
                            "refunded",
                            "payment_failed"
                          ]
                        },
                        "priceUsd": {
                          "type": "string",
                          "pattern": "^\\d+\\.\\d{2}$",
                          "description": "Settled price in decimal US dollars."
                        },
                        "payment": {
                          "type": "object",
                          "properties": {
                            "network": {
                              "type": "string"
                            },
                            "transaction": {
                              "type": "string"
                            },
                            "payer": {
                              "type": "string"
                            },
                            "paidAt": {
                              "type": "string",
                              "format": "date-time"
                            }
                          },
                          "required": [
                            "network",
                            "transaction",
                            "paidAt"
                          ]
                        },
                        "request": {
                          "type": "object"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "completedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "statusUrl": {
                          "type": "string",
                          "format": "uri"
                        },
                        "statusAuthorization": {
                          "type": "string",
                          "description": "Private bearer credential for the status URL. Store it securely."
                        }
                      },
                      "required": [
                        "id",
                        "product",
                        "offer",
                        "requestId",
                        "status",
                        "priceUsd",
                        "createdAt",
                        "updatedAt",
                        "statusUrl",
                        "statusAuthorization"
                      ]
                    }
                  },
                  "required": [
                    "ok",
                    "idempotentReplay",
                    "order"
                  ]
                }
              }
            }
          },
          "201": {
            "description": "Payment settled and the order entered the fulfillment queue.",
            "headers": {
              "PAYMENT-RESPONSE": {
                "description": "Base64url-encoded x402 settlement response.",
                "schema": {
                  "type": "string"
                }
              },
              "PAYMENT-RECEIPT": {
                "description": "Base64url-encoded MPP settlement receipt when the request paid over MPP.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "order": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^sho_[a-f0-9]{32}$",
                          "description": "Private Talkshi shop-order identifier."
                        },
                        "product": {
                          "type": "string",
                          "enum": [
                            "ads",
                            "reviews"
                          ]
                        },
                        "offer": {
                          "type": "string",
                          "enum": [
                            "ads-micro",
                            "ads-starter",
                            "ads",
                            "reviews"
                          ],
                          "description": "The exact fixed-price shop offer that was purchased."
                        },
                        "requestId": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending_payment",
                            "queued",
                            "in_progress",
                            "completed",
                            "rejected",
                            "refunded",
                            "payment_failed"
                          ]
                        },
                        "priceUsd": {
                          "type": "string",
                          "pattern": "^\\d+\\.\\d{2}$",
                          "description": "Settled price in decimal US dollars."
                        },
                        "payment": {
                          "type": "object",
                          "properties": {
                            "network": {
                              "type": "string"
                            },
                            "transaction": {
                              "type": "string"
                            },
                            "payer": {
                              "type": "string"
                            },
                            "paidAt": {
                              "type": "string",
                              "format": "date-time"
                            }
                          },
                          "required": [
                            "network",
                            "transaction",
                            "paidAt"
                          ]
                        },
                        "request": {
                          "type": "object"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "completedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "statusUrl": {
                          "type": "string",
                          "format": "uri"
                        },
                        "statusAuthorization": {
                          "type": "string",
                          "description": "Private bearer credential for the status URL. Store it securely."
                        }
                      },
                      "required": [
                        "id",
                        "product",
                        "offer",
                        "requestId",
                        "status",
                        "priceUsd",
                        "createdAt",
                        "updatedAt",
                        "statusUrl",
                        "statusAuthorization"
                      ]
                    },
                    "terms": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "ok",
                    "order",
                    "terms"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements. Runtime amounts use token atomic units.",
                "schema": {
                  "type": "string"
                }
              },
              "WWW-Authenticate": {
                "description": "MPP Payment challenge for the Tempo charge method.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "Idempotency key or payment was already bound to different order details.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "The paid request body did not satisfy the product contract.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/shop/ads": {
      "get": {
        "operationId": "describeSponsoredPlacement",
        "summary": "Sponsored placement package (read-only discovery)",
        "description": "Returns the same 402 challenge and product JSON an unsigned POST receives, without creating an order. Payment credentials on a read are ignored, so a read never verifies, settles, or charges. Purchases are POST only.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi Agentic Marketplace payment contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "responses": {
          "402": {
            "description": "Payment Required: price and requirements for this product. Nothing is verified, settled, reserved, or stored.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements, identical to the unsigned POST challenge.",
                "schema": {
                  "type": "string"
                }
              },
              "WWW-Authenticate": {
                "description": "MPP Payment challenge for the Tempo charge method.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "product",
                    "free"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "product": {
                      "type": "object"
                    },
                    "free": {
                      "type": "object",
                      "properties": {
                        "homepage": {
                          "type": "string",
                          "format": "uri"
                        },
                        "browse_marketplace": {
                          "type": "string",
                          "format": "uri"
                        },
                        "search_api": {
                          "type": "string",
                          "format": "uri"
                        },
                        "docs": {
                          "type": "string",
                          "format": "uri"
                        }
                      },
                      "required": [
                        "homepage",
                        "browse_marketplace",
                        "search_api",
                        "docs"
                      ],
                      "additionalProperties": false
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "No payment protocol is configured for this product.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "buySponsoredPlacement",
        "summary": "Sponsored placement package",
        "description": "Reach software buyers on Talkshi's agentic marketplace with 50 expected views of a clearly labeled sponsored placement. Creative enters a review queue after payment. Approved placements run until the purchased view budget is delivered. Every placement is labeled Sponsored and does not change organic marketplace ordering, ratings, or reviews.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi Agentic Marketplace payment contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {}
            },
            {
              "mpp": {
                "method": "tempo",
                "intent": "charge",
                "currency": "USD"
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "5.00"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "request_id": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 200,
                    "description": "Stable purchase idempotency key."
                  },
                  "advertiser_name": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 100
                  },
                  "destination_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Public HTTPS landing page."
                  },
                  "headline": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 80
                  },
                  "body": {
                    "type": "string",
                    "minLength": 20,
                    "maxLength": 200
                  },
                  "placement": {
                    "type": "string",
                    "enum": [
                      "marketplace",
                      "profiles",
                      "blog"
                    ]
                  },
                  "contact_email": {
                    "type": "string",
                    "format": "email"
                  },
                  "callback_url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "acknowledge_sponsored": {
                    "type": "boolean",
                    "const": true
                  }
                },
                "required": [
                  "request_id",
                  "advertiser_name",
                  "destination_url",
                  "headline",
                  "body",
                  "placement",
                  "acknowledge_sponsored"
                ],
                "anyOf": [
                  {
                    "required": [
                      "contact_email"
                    ]
                  },
                  {
                    "required": [
                      "callback_url"
                    ]
                  }
                ],
                "additionalProperties": false
              },
              "example": {
                "request_id": "ad_acme_launch_001",
                "advertiser_name": "Acme Security",
                "destination_url": "https://acme.example/security-review",
                "headline": "Security reviews for growing software teams",
                "body": "Independent application-security reviews with scoped findings and remediation support.",
                "placement": "marketplace",
                "contact_email": "ads@acme.example",
                "acknowledge_sponsored": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Idempotent replay of an already paid order.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "idempotentReplay": {
                      "type": "boolean",
                      "const": true
                    },
                    "order": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^sho_[a-f0-9]{32}$",
                          "description": "Private Talkshi shop-order identifier."
                        },
                        "product": {
                          "type": "string",
                          "enum": [
                            "ads",
                            "reviews"
                          ]
                        },
                        "offer": {
                          "type": "string",
                          "enum": [
                            "ads-micro",
                            "ads-starter",
                            "ads",
                            "reviews"
                          ],
                          "description": "The exact fixed-price shop offer that was purchased."
                        },
                        "requestId": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending_payment",
                            "queued",
                            "in_progress",
                            "completed",
                            "rejected",
                            "refunded",
                            "payment_failed"
                          ]
                        },
                        "priceUsd": {
                          "type": "string",
                          "pattern": "^\\d+\\.\\d{2}$",
                          "description": "Settled price in decimal US dollars."
                        },
                        "payment": {
                          "type": "object",
                          "properties": {
                            "network": {
                              "type": "string"
                            },
                            "transaction": {
                              "type": "string"
                            },
                            "payer": {
                              "type": "string"
                            },
                            "paidAt": {
                              "type": "string",
                              "format": "date-time"
                            }
                          },
                          "required": [
                            "network",
                            "transaction",
                            "paidAt"
                          ]
                        },
                        "request": {
                          "type": "object"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "completedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "statusUrl": {
                          "type": "string",
                          "format": "uri"
                        },
                        "statusAuthorization": {
                          "type": "string",
                          "description": "Private bearer credential for the status URL. Store it securely."
                        }
                      },
                      "required": [
                        "id",
                        "product",
                        "offer",
                        "requestId",
                        "status",
                        "priceUsd",
                        "createdAt",
                        "updatedAt",
                        "statusUrl",
                        "statusAuthorization"
                      ]
                    }
                  },
                  "required": [
                    "ok",
                    "idempotentReplay",
                    "order"
                  ]
                }
              }
            }
          },
          "201": {
            "description": "Payment settled and the order entered the fulfillment queue.",
            "headers": {
              "PAYMENT-RESPONSE": {
                "description": "Base64url-encoded x402 settlement response.",
                "schema": {
                  "type": "string"
                }
              },
              "PAYMENT-RECEIPT": {
                "description": "Base64url-encoded MPP settlement receipt when the request paid over MPP.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "order": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^sho_[a-f0-9]{32}$",
                          "description": "Private Talkshi shop-order identifier."
                        },
                        "product": {
                          "type": "string",
                          "enum": [
                            "ads",
                            "reviews"
                          ]
                        },
                        "offer": {
                          "type": "string",
                          "enum": [
                            "ads-micro",
                            "ads-starter",
                            "ads",
                            "reviews"
                          ],
                          "description": "The exact fixed-price shop offer that was purchased."
                        },
                        "requestId": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending_payment",
                            "queued",
                            "in_progress",
                            "completed",
                            "rejected",
                            "refunded",
                            "payment_failed"
                          ]
                        },
                        "priceUsd": {
                          "type": "string",
                          "pattern": "^\\d+\\.\\d{2}$",
                          "description": "Settled price in decimal US dollars."
                        },
                        "payment": {
                          "type": "object",
                          "properties": {
                            "network": {
                              "type": "string"
                            },
                            "transaction": {
                              "type": "string"
                            },
                            "payer": {
                              "type": "string"
                            },
                            "paidAt": {
                              "type": "string",
                              "format": "date-time"
                            }
                          },
                          "required": [
                            "network",
                            "transaction",
                            "paidAt"
                          ]
                        },
                        "request": {
                          "type": "object"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "completedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "statusUrl": {
                          "type": "string",
                          "format": "uri"
                        },
                        "statusAuthorization": {
                          "type": "string",
                          "description": "Private bearer credential for the status URL. Store it securely."
                        }
                      },
                      "required": [
                        "id",
                        "product",
                        "offer",
                        "requestId",
                        "status",
                        "priceUsd",
                        "createdAt",
                        "updatedAt",
                        "statusUrl",
                        "statusAuthorization"
                      ]
                    },
                    "terms": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "ok",
                    "order",
                    "terms"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements. Runtime amounts use token atomic units.",
                "schema": {
                  "type": "string"
                }
              },
              "WWW-Authenticate": {
                "description": "MPP Payment challenge for the Tempo charge method.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "Idempotency key or payment was already bound to different order details.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "The paid request body did not satisfy the product contract.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/shop/ads/view": {
      "get": {
        "operationId": "describePaidSponsoredAdView",
        "summary": "Paid sponsored-ad view (read-only discovery)",
        "description": "Returns the same 402 challenge and product JSON an unsigned POST receives, without creating an order. Payment credentials on a read are ignored, so a read never verifies, settles, or charges. Purchases are POST only.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi Agentic Marketplace payment contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "responses": {
          "402": {
            "description": "Payment Required: price and requirements for this product. Nothing is verified, settled, reserved, or stored.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements, identical to the unsigned POST challenge.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "product",
                    "free"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "product": {
                      "type": "object"
                    },
                    "free": {
                      "type": "object",
                      "properties": {
                        "homepage": {
                          "type": "string",
                          "format": "uri"
                        },
                        "browse_marketplace": {
                          "type": "string",
                          "format": "uri"
                        },
                        "search_api": {
                          "type": "string",
                          "format": "uri"
                        },
                        "docs": {
                          "type": "string",
                          "format": "uri"
                        }
                      },
                      "required": [
                        "homepage",
                        "browse_marketplace",
                        "search_api",
                        "docs"
                      ],
                      "additionalProperties": false
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "No payment protocol is configured for this product.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "retrievePaidSponsoredAd",
        "summary": "Paid sponsored-ad view",
        "description": "Retrieve one approved sponsored ad from Talkshi's agentic marketplace for $0.001. The paid response returns the disclosed ad immediately and counts the retrieval once toward its active campaign delivery. The response is advertising, always says Sponsored placement, and contains no browser impression callback. An empty unsigned POST may return standard x402 metadata before body validation for Coinbase-compatible discovery; it never reserves inventory, settles, or charges. Well-formed unsigned requests preflight inventory. Signed purchases are fully validated before payment verification or settlement and require request_id in JSON or Idempotency-Key in the request header. Replays require the original PAYMENT-SIGNATURE.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi paid sponsored-ad view contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {}
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.001"
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Stable 8-200 character purchase identifier. Required when request_id is omitted from JSON.",
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 200,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "description": "May be omitted by an unsigned metadata probe. Signed purchases are fully validated and require request_id in JSON or Idempotency-Key in the request header.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "request_id": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 200,
                    "description": "Stable purchase idempotency key."
                  },
                  "q": {
                    "type": "string",
                    "maxLength": 1200,
                    "description": "Optional intent used to select a relevant approved ad."
                  },
                  "placement": {
                    "type": "string",
                    "enum": [
                      "marketplace",
                      "profiles",
                      "blog"
                    ],
                    "default": "marketplace"
                  }
                },
                "required": [],
                "additionalProperties": false
              },
              "example": {
                "request_id": "view_marketplace_ad_001",
                "placement": "marketplace"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Payment settled and one approved sponsored ad was returned and counted, or an idempotent completed response was replayed.",
            "headers": {
              "PAYMENT-RESPONSE": {
                "description": "Base64url-encoded x402 settlement response on the first successful retrieval.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "idempotentReplay": {
                      "type": "boolean"
                    },
                    "paidView": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^pav_[a-f0-9]{32}$"
                        },
                        "requestId": {
                          "type": "string"
                        },
                        "priceUsd": {
                          "type": "string",
                          "const": "0.001"
                        },
                        "placement": {
                          "type": "string",
                          "enum": [
                            "marketplace",
                            "profiles",
                            "blog"
                          ]
                        },
                        "counted": {
                          "type": "boolean",
                          "const": true
                        },
                        "paidAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "payment": {
                          "type": "object",
                          "properties": {
                            "network": {
                              "type": "string"
                            },
                            "transaction": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "network",
                            "transaction"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "id",
                        "requestId",
                        "priceUsd",
                        "placement",
                        "counted",
                        "paidAt",
                        "payment"
                      ],
                      "additionalProperties": false
                    },
                    "sponsored": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^sho_[a-f0-9]{32}$"
                        },
                        "advertiserName": {
                          "type": "string"
                        },
                        "destinationUrl": {
                          "type": "string",
                          "format": "uri"
                        },
                        "headline": {
                          "type": "string"
                        },
                        "body": {
                          "type": "string"
                        },
                        "disclosure": {
                          "type": "string",
                          "const": "Sponsored placement"
                        }
                      },
                      "required": [
                        "id",
                        "advertiserName",
                        "destinationUrl",
                        "headline",
                        "body",
                        "disclosure"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "ok",
                    "paidView",
                    "sponsored"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "The request supplied an MPP credential or more than one payment credential; paid ad retrieval accepts x402 only.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required. An empty unsigned discovery probe may receive this standard x402 metadata before body validation; the probe never reserves inventory, settles, or charges.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements; use the selected advertised asset route and atomic amount.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "A well-formed unsigned request found no eligible ad inventory without charge, the idempotency key conflicts, a definitive settlement failed without charge, or an uncertain settlement aged out with charge status unknown. Stored payment outcomes require the original PAYMENT-SIGNATURE.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "The paid-view request did not satisfy the input contract.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "503": {
            "description": "x402 is unavailable, settlement or its durable checkpoint remains unresolved (SETTLEMENT_IN_PROGRESS, charged unknown), or payment is durably settled while delivery completion remains pending (DELIVERY_COMPLETION_PENDING, charged true). Retry the identical request with the original PAYMENT-SIGNATURE after Retry-After; recovery retries only poll durable state.",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait for SETTLEMENT_IN_PROGRESS or DELIVERY_COMPLETION_PENDING.",
                "schema": {
                  "type": "integer",
                  "const": 30
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                },
                "examples": {
                  "settlementInProgress": {
                    "summary": "Settlement or its durable checkpoint is unresolved",
                    "value": {
                      "error": "Settlement outcome is still being reconciled. Retry the same request and PAYMENT-SIGNATURE shortly.",
                      "code": "SETTLEMENT_IN_PROGRESS",
                      "charged": "unknown"
                    }
                  },
                  "deliveryCompletionPending": {
                    "summary": "Payment is settled while delivery completion is pending",
                    "value": {
                      "error": "Payment is settled, but sponsored-ad delivery completion is still pending. Retry the same request and PAYMENT-SIGNATURE shortly.",
                      "code": "DELIVERY_COMPLETION_PENDING",
                      "charged": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/shop/reviews": {
      "get": {
        "operationId": "describeIndependentEvaluation",
        "summary": "Independent review request (read-only discovery)",
        "description": "Returns the same 402 challenge and product JSON an unsigned POST receives, without creating an order. Payment credentials on a read are ignored, so a read never verifies, settles, or charges. Purchases are POST only.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi Agentic Marketplace payment contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "responses": {
          "402": {
            "description": "Payment Required: price and requirements for this product. Nothing is verified, settled, reserved, or stored.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements, identical to the unsigned POST challenge.",
                "schema": {
                  "type": "string"
                }
              },
              "WWW-Authenticate": {
                "description": "MPP Payment challenge for the Tempo charge method.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error",
                    "product",
                    "free"
                  ],
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "product": {
                      "type": "object"
                    },
                    "free": {
                      "type": "object",
                      "properties": {
                        "homepage": {
                          "type": "string",
                          "format": "uri"
                        },
                        "browse_marketplace": {
                          "type": "string",
                          "format": "uri"
                        },
                        "search_api": {
                          "type": "string",
                          "format": "uri"
                        },
                        "docs": {
                          "type": "string",
                          "format": "uri"
                        }
                      },
                      "required": [
                        "homepage",
                        "browse_marketplace",
                        "search_api",
                        "docs"
                      ],
                      "additionalProperties": false
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "No payment protocol is configured for this product.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "commissionIndependentEvaluation",
        "summary": "Independent review request",
        "description": "Commission an independent, first-hand evaluation attempt for Talkshi's agentic marketplace of a public product or service surface. Payment funds evaluation time and a private outcome report. Publication occurs only when Talkshi can complete a qualifying first-hand test. Payment cannot specify or guarantee a rating, recommendation, publication, or ranking. Any published evaluation is labeled Commissioned evaluation and excluded from community rating aggregates.",
        "tags": [
          "agent payment shop"
        ],
        "externalDocs": {
          "description": "Talkshi Agentic Marketplace payment contract",
          "url": "https://talkshi.com/docs/x402-shop"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {}
            },
            {
              "mpp": {
                "method": "tempo",
                "intent": "charge",
                "currency": "USD"
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "50.00"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "request_id": {
                    "type": "string",
                    "minLength": 8,
                    "maxLength": 200,
                    "description": "Stable purchase idempotency key."
                  },
                  "company": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 200
                  },
                  "test_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Public HTTPS surface Talkshi can attempt first-hand."
                  },
                  "evaluation_goal": {
                    "type": "string",
                    "minLength": 40,
                    "maxLength": 1000
                  },
                  "contact_email": {
                    "type": "string",
                    "format": "email"
                  },
                  "callback_url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "acknowledge_independence": {
                    "type": "boolean",
                    "const": true
                  }
                },
                "required": [
                  "request_id",
                  "company",
                  "test_url",
                  "evaluation_goal",
                  "acknowledge_independence"
                ],
                "anyOf": [
                  {
                    "required": [
                      "contact_email"
                    ]
                  },
                  {
                    "required": [
                      "callback_url"
                    ]
                  }
                ],
                "additionalProperties": false
              },
              "example": {
                "request_id": "review_acme_api_001",
                "company": "Acme API",
                "test_url": "https://api.acme.example/public-demo",
                "evaluation_goal": "Test whether the documented public demo returns a usable result with clear pricing and recovery guidance.",
                "contact_email": "research@acme.example",
                "acknowledge_independence": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Idempotent replay of an already paid order.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "idempotentReplay": {
                      "type": "boolean",
                      "const": true
                    },
                    "order": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^sho_[a-f0-9]{32}$",
                          "description": "Private Talkshi shop-order identifier."
                        },
                        "product": {
                          "type": "string",
                          "enum": [
                            "ads",
                            "reviews"
                          ]
                        },
                        "offer": {
                          "type": "string",
                          "enum": [
                            "ads-micro",
                            "ads-starter",
                            "ads",
                            "reviews"
                          ],
                          "description": "The exact fixed-price shop offer that was purchased."
                        },
                        "requestId": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending_payment",
                            "queued",
                            "in_progress",
                            "completed",
                            "rejected",
                            "refunded",
                            "payment_failed"
                          ]
                        },
                        "priceUsd": {
                          "type": "string",
                          "pattern": "^\\d+\\.\\d{2}$",
                          "description": "Settled price in decimal US dollars."
                        },
                        "payment": {
                          "type": "object",
                          "properties": {
                            "network": {
                              "type": "string"
                            },
                            "transaction": {
                              "type": "string"
                            },
                            "payer": {
                              "type": "string"
                            },
                            "paidAt": {
                              "type": "string",
                              "format": "date-time"
                            }
                          },
                          "required": [
                            "network",
                            "transaction",
                            "paidAt"
                          ]
                        },
                        "request": {
                          "type": "object"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "completedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "statusUrl": {
                          "type": "string",
                          "format": "uri"
                        },
                        "statusAuthorization": {
                          "type": "string",
                          "description": "Private bearer credential for the status URL. Store it securely."
                        }
                      },
                      "required": [
                        "id",
                        "product",
                        "offer",
                        "requestId",
                        "status",
                        "priceUsd",
                        "createdAt",
                        "updatedAt",
                        "statusUrl",
                        "statusAuthorization"
                      ]
                    }
                  },
                  "required": [
                    "ok",
                    "idempotentReplay",
                    "order"
                  ]
                }
              }
            }
          },
          "201": {
            "description": "Payment settled and the order entered the fulfillment queue.",
            "headers": {
              "PAYMENT-RESPONSE": {
                "description": "Base64url-encoded x402 settlement response.",
                "schema": {
                  "type": "string"
                }
              },
              "PAYMENT-RECEIPT": {
                "description": "Base64url-encoded MPP settlement receipt when the request paid over MPP.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "order": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^sho_[a-f0-9]{32}$",
                          "description": "Private Talkshi shop-order identifier."
                        },
                        "product": {
                          "type": "string",
                          "enum": [
                            "ads",
                            "reviews"
                          ]
                        },
                        "offer": {
                          "type": "string",
                          "enum": [
                            "ads-micro",
                            "ads-starter",
                            "ads",
                            "reviews"
                          ],
                          "description": "The exact fixed-price shop offer that was purchased."
                        },
                        "requestId": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "pending_payment",
                            "queued",
                            "in_progress",
                            "completed",
                            "rejected",
                            "refunded",
                            "payment_failed"
                          ]
                        },
                        "priceUsd": {
                          "type": "string",
                          "pattern": "^\\d+\\.\\d{2}$",
                          "description": "Settled price in decimal US dollars."
                        },
                        "payment": {
                          "type": "object",
                          "properties": {
                            "network": {
                              "type": "string"
                            },
                            "transaction": {
                              "type": "string"
                            },
                            "payer": {
                              "type": "string"
                            },
                            "paidAt": {
                              "type": "string",
                              "format": "date-time"
                            }
                          },
                          "required": [
                            "network",
                            "transaction",
                            "paidAt"
                          ]
                        },
                        "request": {
                          "type": "object"
                        },
                        "createdAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updatedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "completedAt": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "statusUrl": {
                          "type": "string",
                          "format": "uri"
                        },
                        "statusAuthorization": {
                          "type": "string",
                          "description": "Private bearer credential for the status URL. Store it securely."
                        }
                      },
                      "required": [
                        "id",
                        "product",
                        "offer",
                        "requestId",
                        "status",
                        "priceUsd",
                        "createdAt",
                        "updatedAt",
                        "statusUrl",
                        "statusAuthorization"
                      ]
                    },
                    "terms": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "ok",
                    "order",
                    "terms"
                  ]
                }
              }
            }
          },
          "402": {
            "description": "Payment Required",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64url-encoded x402 v2 payment requirements. Runtime amounts use token atomic units.",
                "schema": {
                  "type": "string"
                }
              },
              "WWW-Authenticate": {
                "description": "MPP Payment challenge for the Tempo charge method.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "Idempotency key or payment was already bound to different order details.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          },
          "422": {
            "description": "The paid request body did not satisfy the product contract.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "charged": {
                      "oneOf": [
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "string",
                          "const": "unknown"
                        }
                      ]
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
}
