{
  "openapi": "3.1.0",
  "info": {
    "title": "API for Agents API",
    "version": "1.0.0",
    "description": "Pay-as-you-go data API for AI agents: LinkedIn, Instagram, TikTok, Google Maps, Amazon and 21 more on one key. Your agent signs itself up in one call with $0.10 free, sees the price first, gets a receipt.",
    "termsOfService": "https://apiforagents.dev/terms",
    "contact": {
      "email": "contact@apiforagents.dev"
    }
  },
  "servers": [
    {
      "url": "https://apiforagents.dev"
    }
  ],
  "externalDocs": {
    "url": "https://apiforagents.dev/llms.txt",
    "description": "Docs index for agents"
  },
  "security": [
    {
      "bearer": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer",
        "description": "An agent's access token from /oauth2/token, or an API key a person made in the dashboard."
      }
    },
    "schemas": {
      "Envelope": {
        "type": "object",
        "properties": {
          "data": {
            "description": "The rows, keyed by what they are (profiles, companies, posts, ...)."
          },
          "coverage": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "platform": {
                  "type": "string"
                },
                "requested": {
                  "type": "integer"
                },
                "returned": {
                  "type": "integer"
                },
                "omitted": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "subject": {
                        "type": "string"
                      },
                      "reason": {
                        "type": "string"
                      },
                      "note": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "provenance": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "platform": {
                  "type": "string"
                },
                "subject": {
                  "type": "string"
                },
                "measuredAt": {
                  "type": "string",
                  "format": "date-time"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "capture",
                    "cache"
                  ]
                },
                "cacheAgeSeconds": {
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              }
            }
          },
          "confidence": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "enum": [
                "measured",
                "derived",
                "unknown"
              ]
            }
          },
          "cost": {
            "type": "object",
            "properties": {
              "usd": {
                "type": "number",
                "description": "What this call charged, in US dollars."
              },
              "wouldChargeUsd": {
                "type": "number",
                "description": "The quote: the most this call could charge."
              },
              "balanceUsd": {
                "type": "number"
              },
              "perRecordUsd": {
                "type": "number"
              },
              "rows": {
                "type": "integer"
              },
              "chargedFor": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
          },
          "error_description": {
            "type": "string",
            "description": "What happened and what to do, in a sentence."
          },
          "field": {
            "type": "string",
            "description": "The input at fault, on invalid_request."
          },
          "top_up_url": {
            "type": "string",
            "format": "uri",
            "description": "On payment_required: where a person adds money."
          },
          "claim_required": {
            "type": "boolean",
            "description": "On payment_required or insufficient_scope: a person must claim this agent first."
          },
          "cost": {
            "type": "object",
            "description": "The quote, when the error is about money."
          }
        }
      },
      "Row_instagram_profiles": {
        "type": "object",
        "description": "One row of profiles. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "username",
          "igUserId",
          "fullName",
          "biography",
          "avatarUrl",
          "profileUrl",
          "externalUrl",
          "bioLinks",
          "category",
          "isVerified",
          "isPrivate",
          "isBusiness",
          "followers",
          "following",
          "mediaCount",
          "highlightReelCount",
          "engagementRate",
          "contactEmail",
          "contactPhone",
          "location",
          "businessStreet",
          "businessZip",
          "businessCityId",
          "businessLatitude",
          "businessLongitude",
          "facebookPage",
          "lastPostedAt",
          "recentPosts",
          "relatedAccounts",
          "details"
        ],
        "properties": {
          "username": {
            "type": [
              "string",
              "null"
            ]
          },
          "igUserId": {
            "type": [
              "string",
              "null"
            ]
          },
          "fullName": {
            "type": [
              "string",
              "null"
            ]
          },
          "biography": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "externalUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "bioLinks": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "isVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPrivate": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isBusiness": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "following": {
            "type": [
              "integer",
              "null"
            ]
          },
          "mediaCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "highlightReelCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "engagementRate": {
            "type": [
              "number",
              "null"
            ]
          },
          "contactEmail": {
            "type": [
              "string",
              "null"
            ]
          },
          "contactPhone": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessStreet": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessZip": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessCityId": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessLatitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "businessLongitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "facebookPage": {
            "type": [
              "object",
              "null"
            ]
          },
          "lastPostedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "recentPosts": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "relatedAccounts": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_instagram_posts": {
        "type": "object",
        "description": "One row of posts. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "shortCode",
          "igMediaId",
          "caption",
          "kind",
          "productType",
          "postedAt",
          "permalink",
          "mediaUrl",
          "videoUrl",
          "images",
          "media",
          "width",
          "height",
          "likes",
          "comments",
          "views",
          "plays",
          "saves",
          "shares",
          "videoDuration",
          "language",
          "likesHidden",
          "isPinned",
          "isPaidPartnership",
          "hashtags",
          "mentions",
          "owner",
          "taggedUsers",
          "coauthors",
          "sponsors",
          "locationName",
          "locationId",
          "music",
          "firstComment",
          "recentComments",
          "details"
        ],
        "properties": {
          "shortCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "igMediaId": {
            "type": [
              "string",
              "null"
            ]
          },
          "caption": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "productType": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "videoUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "media": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "width": {
            "type": [
              "integer",
              "null"
            ]
          },
          "height": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "comments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "views": {
            "type": [
              "integer",
              "null"
            ]
          },
          "plays": {
            "type": [
              "integer",
              "null"
            ]
          },
          "saves": {
            "type": [
              "integer",
              "null"
            ]
          },
          "shares": {
            "type": [
              "integer",
              "null"
            ]
          },
          "videoDuration": {
            "type": [
              "number",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "likesHidden": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPinned": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPaidPartnership": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "owner": {
            "type": [
              "object",
              "null"
            ]
          },
          "taggedUsers": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "coauthors": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "sponsors": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "locationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "locationId": {
            "type": [
              "string",
              "null"
            ]
          },
          "music": {
            "type": [
              "object",
              "null"
            ]
          },
          "firstComment": {
            "type": [
              "string",
              "null"
            ]
          },
          "recentComments": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_instagram_similar": {
        "type": "object",
        "description": "One row of similar. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "username",
          "fullName",
          "igUserId",
          "isVerified",
          "isPrivate",
          "avatarUrl",
          "profileUrl",
          "followers",
          "profile",
          "details"
        ],
        "properties": {
          "username": {
            "type": [
              "string",
              "null"
            ]
          },
          "fullName": {
            "type": [
              "string",
              "null"
            ]
          },
          "igUserId": {
            "type": [
              "string",
              "null"
            ]
          },
          "isVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPrivate": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "avatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "profile": {
            "type": [
              "object",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_instagram_hashtag": {
        "type": "object",
        "description": "One row of hashtag. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "shortCode",
          "igMediaId",
          "caption",
          "kind",
          "productType",
          "postedAt",
          "permalink",
          "mediaUrl",
          "videoUrl",
          "images",
          "media",
          "width",
          "height",
          "likes",
          "comments",
          "views",
          "plays",
          "saves",
          "shares",
          "videoDuration",
          "language",
          "likesHidden",
          "isPinned",
          "isPaidPartnership",
          "hashtags",
          "mentions",
          "owner",
          "taggedUsers",
          "coauthors",
          "sponsors",
          "locationName",
          "locationId",
          "music",
          "firstComment",
          "recentComments",
          "details"
        ],
        "properties": {
          "shortCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "igMediaId": {
            "type": [
              "string",
              "null"
            ]
          },
          "caption": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "productType": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "videoUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "media": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "width": {
            "type": [
              "integer",
              "null"
            ]
          },
          "height": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "comments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "views": {
            "type": [
              "integer",
              "null"
            ]
          },
          "plays": {
            "type": [
              "integer",
              "null"
            ]
          },
          "saves": {
            "type": [
              "integer",
              "null"
            ]
          },
          "shares": {
            "type": [
              "integer",
              "null"
            ]
          },
          "videoDuration": {
            "type": [
              "number",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "likesHidden": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPinned": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPaidPartnership": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "owner": {
            "type": [
              "object",
              "null"
            ]
          },
          "taggedUsers": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "coauthors": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "sponsors": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "locationName": {
            "type": [
              "string",
              "null"
            ]
          },
          "locationId": {
            "type": [
              "string",
              "null"
            ]
          },
          "music": {
            "type": [
              "object",
              "null"
            ]
          },
          "firstComment": {
            "type": [
              "string",
              "null"
            ]
          },
          "recentComments": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_instagram_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "username",
          "fullName",
          "igUserId",
          "isVerified",
          "isPrivate",
          "avatarUrl",
          "profileUrl",
          "followers",
          "profile",
          "details"
        ],
        "properties": {
          "username": {
            "type": [
              "string",
              "null"
            ]
          },
          "fullName": {
            "type": [
              "string",
              "null"
            ]
          },
          "igUserId": {
            "type": [
              "string",
              "null"
            ]
          },
          "isVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPrivate": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "avatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "profile": {
            "type": [
              "object",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_instagram_comments": {
        "type": "object",
        "description": "One row of comments. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "igCommentId",
          "author",
          "body",
          "score",
          "commentedAt",
          "commenter",
          "replyCount",
          "commentUrl",
          "postUrl",
          "details"
        ],
        "properties": {
          "igCommentId": {
            "type": [
              "string",
              "null"
            ]
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "score": {
            "type": [
              "integer",
              "null"
            ]
          },
          "commentedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenter": {
            "type": [
              "object",
              "null"
            ]
          },
          "replyCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "commentUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_instagram_followers": {
        "type": "object",
        "description": "One row of followers. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "username",
          "fullName",
          "igUserId",
          "isVerified",
          "isPrivate",
          "avatarUrl",
          "profileUrl",
          "followers",
          "profile",
          "details"
        ],
        "properties": {
          "username": {
            "type": [
              "string",
              "null"
            ]
          },
          "fullName": {
            "type": [
              "string",
              "null"
            ]
          },
          "igUserId": {
            "type": [
              "string",
              "null"
            ]
          },
          "isVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPrivate": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "avatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "profile": {
            "type": [
              "object",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_profiles": {
        "type": "object",
        "description": "One row of profiles. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "publicId",
          "urn",
          "name",
          "firstName",
          "lastName",
          "headline",
          "about",
          "location",
          "city",
          "state",
          "country",
          "profileUrl",
          "avatarUrl",
          "coverUrl",
          "followers",
          "connections",
          "isPremium",
          "isOpenToWork",
          "isHiring",
          "isVerified",
          "isCreator",
          "isInfluencer",
          "isOpenProfile",
          "skills",
          "companyName",
          "positions",
          "education",
          "certifications",
          "languages",
          "projects",
          "publications",
          "courses",
          "honors",
          "volunteering",
          "recommendations",
          "causes",
          "details"
        ],
        "properties": {
          "publicId": {
            "type": [
              "string",
              "null"
            ]
          },
          "urn": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "firstName": {
            "type": [
              "string",
              "null"
            ]
          },
          "lastName": {
            "type": [
              "string",
              "null"
            ]
          },
          "headline": {
            "type": [
              "string",
              "null"
            ]
          },
          "about": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "coverUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "connections": {
            "type": [
              "integer",
              "null"
            ]
          },
          "isPremium": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isOpenToWork": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isHiring": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isCreator": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isInfluencer": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isOpenProfile": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "companyName": {
            "type": [
              "string",
              "null"
            ]
          },
          "positions": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "education": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "certifications": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "publications": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "courses": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "honors": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "volunteering": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "recommendations": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "causes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_posts": {
        "type": "object",
        "description": "One row of posts. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "urn",
          "body",
          "kind",
          "postedAt",
          "permalink",
          "mediaUrl",
          "mediaType",
          "likes",
          "comments",
          "reposts",
          "author",
          "mentions",
          "details"
        ],
        "properties": {
          "urn": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaType": {
            "type": [
              "string",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "comments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reposts": {
            "type": [
              "integer",
              "null"
            ]
          },
          "author": {
            "type": [
              "object",
              "null"
            ]
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_companies": {
        "type": "object",
        "description": "One row of companies. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "universalName",
          "urn",
          "name",
          "industry",
          "sizeBucket",
          "employeesCount",
          "followers",
          "website",
          "linkedinUrl",
          "hqLocation",
          "hqStreet",
          "hqCity",
          "hqState",
          "hqPostalCode",
          "hqCountry",
          "about",
          "founded",
          "specialities",
          "logoUrl",
          "pageType",
          "isVerified",
          "isActive",
          "jobsUrl",
          "callToActionUrl",
          "locations",
          "employeesByLocation",
          "details"
        ],
        "properties": {
          "universalName": {
            "type": [
              "string",
              "null"
            ]
          },
          "urn": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "industry": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizeBucket": {
            "type": [
              "string",
              "null"
            ]
          },
          "employeesCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "linkedinUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqLocation": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqStreet": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqCity": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqState": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqPostalCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqCountry": {
            "type": [
              "string",
              "null"
            ]
          },
          "about": {
            "type": [
              "string",
              "null"
            ]
          },
          "founded": {
            "type": [
              "integer",
              "null"
            ]
          },
          "specialities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "logoUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "pageType": {
            "type": [
              "string",
              "null"
            ]
          },
          "isVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isActive": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "jobsUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "callToActionUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "locations": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "employeesByLocation": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_searchPeople": {
        "type": "object",
        "description": "One row of searchPeople. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "publicId",
          "urn",
          "name",
          "firstName",
          "lastName",
          "headline",
          "about",
          "location",
          "city",
          "state",
          "country",
          "profileUrl",
          "avatarUrl",
          "coverUrl",
          "followers",
          "connections",
          "isPremium",
          "isOpenToWork",
          "isHiring",
          "isVerified",
          "isCreator",
          "isInfluencer",
          "isOpenProfile",
          "skills",
          "companyName",
          "positions",
          "education",
          "certifications",
          "languages",
          "projects",
          "publications",
          "courses",
          "honors",
          "volunteering",
          "recommendations",
          "causes",
          "details"
        ],
        "properties": {
          "publicId": {
            "type": [
              "string",
              "null"
            ]
          },
          "urn": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "firstName": {
            "type": [
              "string",
              "null"
            ]
          },
          "lastName": {
            "type": [
              "string",
              "null"
            ]
          },
          "headline": {
            "type": [
              "string",
              "null"
            ]
          },
          "about": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "coverUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "connections": {
            "type": [
              "integer",
              "null"
            ]
          },
          "isPremium": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isOpenToWork": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isHiring": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isCreator": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isInfluencer": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isOpenProfile": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "companyName": {
            "type": [
              "string",
              "null"
            ]
          },
          "positions": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "education": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "certifications": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "projects": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "publications": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "courses": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "honors": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "volunteering": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "recommendations": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "causes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_searchCompanies": {
        "type": "object",
        "description": "One row of searchCompanies. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "universalName",
          "urn",
          "name",
          "industry",
          "sizeBucket",
          "employeesCount",
          "followers",
          "website",
          "linkedinUrl",
          "hqLocation",
          "hqStreet",
          "hqCity",
          "hqState",
          "hqPostalCode",
          "hqCountry",
          "about",
          "founded",
          "specialities",
          "logoUrl",
          "pageType",
          "isVerified",
          "isActive",
          "jobsUrl",
          "callToActionUrl",
          "locations",
          "employeesByLocation",
          "details"
        ],
        "properties": {
          "universalName": {
            "type": [
              "string",
              "null"
            ]
          },
          "urn": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "industry": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizeBucket": {
            "type": [
              "string",
              "null"
            ]
          },
          "employeesCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "linkedinUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqLocation": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqStreet": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqCity": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqState": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqPostalCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqCountry": {
            "type": [
              "string",
              "null"
            ]
          },
          "about": {
            "type": [
              "string",
              "null"
            ]
          },
          "founded": {
            "type": [
              "integer",
              "null"
            ]
          },
          "specialities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "logoUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "pageType": {
            "type": [
              "string",
              "null"
            ]
          },
          "isVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isActive": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "jobsUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "callToActionUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "locations": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "employeesByLocation": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_jobs": {
        "type": "object",
        "description": "One row of jobs. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "jobId",
          "title",
          "companyName",
          "location",
          "city",
          "state",
          "country",
          "employmentType",
          "workplaceType",
          "isRemoteAllowed",
          "experienceLevel",
          "industries",
          "functions",
          "salaryText",
          "listedAt",
          "expiresAt",
          "applicants",
          "url",
          "applyUrl",
          "applicantTrackingSystem",
          "description",
          "descriptionHtml",
          "companyUrn",
          "companySlug",
          "companyUrl",
          "companyLogoUrl",
          "companyWebsite",
          "companyDescription",
          "companyEmployees",
          "companyFollowers",
          "details"
        ],
        "properties": {
          "jobId": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyName": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "employmentType": {
            "type": [
              "string",
              "null"
            ]
          },
          "workplaceType": {
            "type": [
              "string",
              "null"
            ]
          },
          "isRemoteAllowed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "experienceLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "industries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "functions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "salaryText": {
            "type": [
              "string",
              "null"
            ]
          },
          "listedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "applicants": {
            "type": [
              "integer",
              "null"
            ]
          },
          "url": {
            "type": [
              "string",
              "null"
            ]
          },
          "applyUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "applicantTrackingSystem": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "descriptionHtml": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyUrn": {
            "type": [
              "string",
              "null"
            ]
          },
          "companySlug": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyLogoUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyWebsite": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyDescription": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyEmployees": {
            "type": [
              "integer",
              "null"
            ]
          },
          "companyFollowers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_searchPosts": {
        "type": "object",
        "description": "One row of searchPosts. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "urn",
          "body",
          "kind",
          "postedAt",
          "permalink",
          "mediaUrl",
          "mediaType",
          "likes",
          "comments",
          "reposts",
          "author",
          "mentions",
          "details"
        ],
        "properties": {
          "urn": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaType": {
            "type": [
              "string",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "comments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reposts": {
            "type": [
              "integer",
              "null"
            ]
          },
          "author": {
            "type": [
              "object",
              "null"
            ]
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_postComments": {
        "type": "object",
        "description": "One row of postComments. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "commentId",
          "commentUrl",
          "postUrl",
          "postUrn",
          "commenterProfileId",
          "commenterHandle",
          "commenterName",
          "commenterHeadline",
          "commenterUrl",
          "commenterAvatarUrl",
          "commenterType",
          "commenterFollowers",
          "isAuthor",
          "edited",
          "likes",
          "replies",
          "reactions",
          "body",
          "commentedAt",
          "mentions",
          "postAuthor",
          "postAuthorHandle",
          "postAuthorUrl",
          "postAuthorHeadline",
          "postAuthorAvatarUrl",
          "postAuthorProfileId",
          "postAuthorType",
          "postText",
          "postPostedAt",
          "postMediaUrl",
          "postLikes",
          "postComments",
          "postReposts",
          "details"
        ],
        "properties": {
          "commentId": {
            "type": [
              "string",
              "null"
            ]
          },
          "commentUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrn": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterProfileId": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterName": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterHeadline": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterAvatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterType": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterFollowers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "isAuthor": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "edited": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "replies": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reactions": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "commentedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "postAuthor": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorHeadline": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorAvatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorProfileId": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorType": {
            "type": [
              "string",
              "null"
            ]
          },
          "postText": {
            "type": [
              "string",
              "null"
            ]
          },
          "postPostedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "postMediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postLikes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postComments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postReposts": {
            "type": [
              "integer",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_profileComments": {
        "type": "object",
        "description": "One row of profileComments. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "commentId",
          "commentUrl",
          "postUrl",
          "postUrn",
          "commenterProfileId",
          "commenterHandle",
          "commenterName",
          "commenterHeadline",
          "commenterUrl",
          "commenterAvatarUrl",
          "commenterType",
          "commenterFollowers",
          "isAuthor",
          "edited",
          "likes",
          "replies",
          "reactions",
          "body",
          "commentedAt",
          "mentions",
          "postAuthor",
          "postAuthorHandle",
          "postAuthorUrl",
          "postAuthorHeadline",
          "postAuthorAvatarUrl",
          "postAuthorProfileId",
          "postAuthorType",
          "postText",
          "postPostedAt",
          "postMediaUrl",
          "postLikes",
          "postComments",
          "postReposts",
          "details"
        ],
        "properties": {
          "commentId": {
            "type": [
              "string",
              "null"
            ]
          },
          "commentUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrn": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterProfileId": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterName": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterHeadline": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterAvatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterType": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterFollowers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "isAuthor": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "edited": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "replies": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reactions": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "commentedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "postAuthor": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorHeadline": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorAvatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorProfileId": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorType": {
            "type": [
              "string",
              "null"
            ]
          },
          "postText": {
            "type": [
              "string",
              "null"
            ]
          },
          "postPostedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "postMediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postLikes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postComments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postReposts": {
            "type": [
              "integer",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_postReactions": {
        "type": "object",
        "description": "One row of postReactions. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reactorProfileId",
          "reactorHandle",
          "reactorName",
          "reactorHeadline",
          "reactorUrl",
          "reactorAvatarUrl",
          "reactorLocation",
          "reactionType",
          "postUrn",
          "postUrl",
          "postAuthor",
          "postAuthorHandle",
          "postAuthorUrl",
          "postAuthorHeadline",
          "postAuthorProfileId",
          "postAuthorType",
          "postText",
          "postPostedAt",
          "postMediaUrl",
          "postLikes",
          "postComments",
          "postReposts",
          "reactedAt",
          "details"
        ],
        "properties": {
          "reactorProfileId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorName": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorHeadline": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorAvatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorLocation": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactionType": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrn": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthor": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorHeadline": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorProfileId": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorType": {
            "type": [
              "string",
              "null"
            ]
          },
          "postText": {
            "type": [
              "string",
              "null"
            ]
          },
          "postPostedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "postMediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postLikes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postComments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postReposts": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reactedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_profileReactions": {
        "type": "object",
        "description": "One row of profileReactions. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reactorProfileId",
          "reactorHandle",
          "reactorName",
          "reactorHeadline",
          "reactorUrl",
          "reactorAvatarUrl",
          "reactorLocation",
          "reactionType",
          "postUrn",
          "postUrl",
          "postAuthor",
          "postAuthorHandle",
          "postAuthorUrl",
          "postAuthorHeadline",
          "postAuthorProfileId",
          "postAuthorType",
          "postText",
          "postPostedAt",
          "postMediaUrl",
          "postLikes",
          "postComments",
          "postReposts",
          "reactedAt",
          "details"
        ],
        "properties": {
          "reactorProfileId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorName": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorHeadline": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorAvatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactorLocation": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactionType": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrn": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthor": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorHeadline": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorProfileId": {
            "type": [
              "string",
              "null"
            ]
          },
          "postAuthorType": {
            "type": [
              "string",
              "null"
            ]
          },
          "postText": {
            "type": [
              "string",
              "null"
            ]
          },
          "postPostedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "postMediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postLikes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postComments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postReposts": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reactedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_linkedin_adsLibrary": {
        "type": "object",
        "description": "One row of adsLibrary. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "adId",
          "adUrl",
          "advertiserUrl",
          "paidBy",
          "headline",
          "body",
          "format",
          "mediaType",
          "mediaUrl",
          "clickUrl",
          "impressions",
          "targetingLocation",
          "started",
          "ended",
          "daysActive",
          "details"
        ],
        "properties": {
          "adId": {
            "type": [
              "string",
              "null"
            ]
          },
          "adUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "advertiserUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "paidBy": {
            "type": [
              "string",
              "null"
            ]
          },
          "headline": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "format": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaType": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "clickUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "impressions": {
            "type": [
              "integer",
              "null"
            ]
          },
          "targetingLocation": {
            "type": [
              "string",
              "null"
            ]
          },
          "started": {
            "type": [
              "string",
              "null"
            ]
          },
          "ended": {
            "type": [
              "string",
              "null"
            ]
          },
          "daysActive": {
            "type": [
              "integer",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_youtube_channels": {
        "type": "object",
        "description": "One row of channels. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "handle",
          "channelId",
          "name",
          "description",
          "avatarUrl",
          "bannerUrl",
          "country",
          "isVerified",
          "joinedOn",
          "links",
          "subscribers",
          "totalVideos",
          "totalViews",
          "channelUrl",
          "canonicalHandle",
          "details"
        ],
        "properties": {
          "handle": {
            "type": [
              "string",
              "null"
            ]
          },
          "channelId": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "bannerUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "isVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "joinedOn": {
            "type": [
              "string",
              "null"
            ]
          },
          "links": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "subscribers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "totalVideos": {
            "type": [
              "integer",
              "null"
            ]
          },
          "totalViews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "channelUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "canonicalHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_youtube_videos": {
        "type": "object",
        "description": "One row of videos. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "videoId",
          "title",
          "description",
          "kind",
          "publishedAt",
          "durationS",
          "category",
          "keywords",
          "isLive",
          "thumbnailUrl",
          "permalink",
          "views",
          "likes",
          "comments",
          "channelHandle",
          "channelNativeId",
          "channelName",
          "channelUrl",
          "channelSubscribers",
          "channelBadges",
          "captions",
          "details"
        ],
        "properties": {
          "videoId": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "publishedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "durationS": {
            "type": [
              "integer",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isLive": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "thumbnailUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "views": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "comments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "channelHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "channelNativeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "channelName": {
            "type": [
              "string",
              "null"
            ]
          },
          "channelUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "channelSubscribers": {
            "type": [
              "string",
              "null"
            ]
          },
          "channelBadges": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "captions": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_youtube_comments": {
        "type": "object",
        "description": "One row of comments. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "commentId",
          "author",
          "authorChannelId",
          "body",
          "likes",
          "replies",
          "postedAt",
          "isOwner",
          "details"
        ],
        "properties": {
          "commentId": {
            "type": [
              "string",
              "null"
            ]
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "authorChannelId": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "replies": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "isOwner": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_x_twitter_profiles": {
        "type": "object",
        "description": "One row of profiles. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "username",
          "accountId",
          "displayName",
          "bio",
          "location",
          "website",
          "avatarUrl",
          "bannerUrl",
          "isProtected",
          "isBlueVerified",
          "verifiedType",
          "accountType",
          "joinedAt",
          "pinnedPostUrl",
          "followers",
          "following",
          "postsCount",
          "mediaCount",
          "likesGiven",
          "canonicalUsername",
          "details"
        ],
        "properties": {
          "username": {
            "type": [
              "string",
              "null"
            ]
          },
          "accountId": {
            "type": [
              "string",
              "null"
            ]
          },
          "displayName": {
            "type": [
              "string",
              "null"
            ]
          },
          "bio": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "bannerUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "isProtected": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isBlueVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "verifiedType": {
            "type": [
              "string",
              "null"
            ]
          },
          "accountType": {
            "type": [
              "string",
              "null"
            ]
          },
          "joinedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "pinnedPostUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "following": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postsCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "mediaCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likesGiven": {
            "type": [
              "integer",
              "null"
            ]
          },
          "canonicalUsername": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_x_twitter_posts": {
        "type": "object",
        "description": "One row of posts. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "postId",
          "body",
          "kind",
          "postedAt",
          "permalink",
          "language",
          "mediaUrl",
          "likes",
          "replies",
          "reposts",
          "quotes",
          "views",
          "bookmarks",
          "isReply",
          "isQuote",
          "isPinned",
          "replyToHandle",
          "quotedPostUrl",
          "repostedPostUrl",
          "hashtags",
          "mentions",
          "authorUsername",
          "authorId",
          "author",
          "conversationId",
          "media",
          "outboundLinks",
          "details"
        ],
        "properties": {
          "postId": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "replies": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reposts": {
            "type": [
              "integer",
              "null"
            ]
          },
          "quotes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "views": {
            "type": [
              "integer",
              "null"
            ]
          },
          "bookmarks": {
            "type": [
              "integer",
              "null"
            ]
          },
          "isReply": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isQuote": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPinned": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "replyToHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "quotedPostUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "repostedPostUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "authorUsername": {
            "type": [
              "string",
              "null"
            ]
          },
          "authorId": {
            "type": [
              "string",
              "null"
            ]
          },
          "author": {
            "type": [
              "object",
              "null"
            ]
          },
          "conversationId": {
            "type": [
              "string",
              "null"
            ]
          },
          "media": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "outboundLinks": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_x_twitter_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "username",
          "accountId",
          "displayName",
          "bio",
          "location",
          "website",
          "avatarUrl",
          "bannerUrl",
          "isProtected",
          "isBlueVerified",
          "verifiedType",
          "accountType",
          "joinedAt",
          "pinnedPostUrl",
          "followers",
          "following",
          "postsCount",
          "mediaCount",
          "likesGiven",
          "canonicalUsername",
          "details"
        ],
        "properties": {
          "username": {
            "type": [
              "string",
              "null"
            ]
          },
          "accountId": {
            "type": [
              "string",
              "null"
            ]
          },
          "displayName": {
            "type": [
              "string",
              "null"
            ]
          },
          "bio": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "bannerUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "isProtected": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isBlueVerified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "verifiedType": {
            "type": [
              "string",
              "null"
            ]
          },
          "accountType": {
            "type": [
              "string",
              "null"
            ]
          },
          "joinedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "pinnedPostUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "following": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postsCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "mediaCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likesGiven": {
            "type": [
              "integer",
              "null"
            ]
          },
          "canonicalUsername": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_x_twitter_searchPosts": {
        "type": "object",
        "description": "One row of searchPosts. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "postId",
          "body",
          "kind",
          "postedAt",
          "permalink",
          "language",
          "mediaUrl",
          "likes",
          "replies",
          "reposts",
          "quotes",
          "views",
          "bookmarks",
          "isReply",
          "isQuote",
          "isPinned",
          "replyToHandle",
          "quotedPostUrl",
          "repostedPostUrl",
          "hashtags",
          "mentions",
          "authorUsername",
          "authorId",
          "author",
          "conversationId",
          "media",
          "outboundLinks",
          "details"
        ],
        "properties": {
          "postId": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "replies": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reposts": {
            "type": [
              "integer",
              "null"
            ]
          },
          "quotes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "views": {
            "type": [
              "integer",
              "null"
            ]
          },
          "bookmarks": {
            "type": [
              "integer",
              "null"
            ]
          },
          "isReply": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isQuote": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPinned": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "replyToHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "quotedPostUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "repostedPostUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "authorUsername": {
            "type": [
              "string",
              "null"
            ]
          },
          "authorId": {
            "type": [
              "string",
              "null"
            ]
          },
          "author": {
            "type": [
              "object",
              "null"
            ]
          },
          "conversationId": {
            "type": [
              "string",
              "null"
            ]
          },
          "media": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "outboundLinks": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_reddit_posts": {
        "type": "object",
        "description": "One row of posts. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "postId",
          "author",
          "subreddit",
          "title",
          "body",
          "kind",
          "flair",
          "isNsfw",
          "permalink",
          "externalUrl",
          "mediaUrl",
          "thumbnailUrl",
          "postedAt",
          "editedAt",
          "score",
          "upvoteRatio",
          "commentsCount",
          "subredditSubscribers",
          "fullname",
          "gallery",
          "details"
        ],
        "properties": {
          "postId": {
            "type": [
              "string",
              "null"
            ]
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "subreddit": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "flair": {
            "type": [
              "string",
              "null"
            ]
          },
          "isNsfw": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "externalUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnailUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "editedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "score": {
            "type": [
              "integer",
              "null"
            ]
          },
          "upvoteRatio": {
            "type": [
              "number",
              "null"
            ]
          },
          "commentsCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "subredditSubscribers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "fullname": {
            "type": [
              "string",
              "null"
            ]
          },
          "gallery": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_reddit_subreddit": {
        "type": "object",
        "description": "One row of subreddit. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "postId",
          "author",
          "subreddit",
          "title",
          "body",
          "kind",
          "flair",
          "isNsfw",
          "permalink",
          "externalUrl",
          "mediaUrl",
          "thumbnailUrl",
          "postedAt",
          "editedAt",
          "score",
          "upvoteRatio",
          "commentsCount",
          "subredditSubscribers",
          "fullname",
          "gallery",
          "details"
        ],
        "properties": {
          "postId": {
            "type": [
              "string",
              "null"
            ]
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "subreddit": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "flair": {
            "type": [
              "string",
              "null"
            ]
          },
          "isNsfw": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "externalUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnailUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "editedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "score": {
            "type": [
              "integer",
              "null"
            ]
          },
          "upvoteRatio": {
            "type": [
              "number",
              "null"
            ]
          },
          "commentsCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "subredditSubscribers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "fullname": {
            "type": [
              "string",
              "null"
            ]
          },
          "gallery": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_reddit_comments": {
        "type": "object",
        "description": "One row of comments. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "commentId",
          "parentId",
          "author",
          "body",
          "score",
          "depth",
          "postedAt",
          "isOp",
          "permalink",
          "parentFullname",
          "details"
        ],
        "properties": {
          "commentId": {
            "type": [
              "string",
              "null"
            ]
          },
          "parentId": {
            "type": [
              "string",
              "null"
            ]
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "score": {
            "type": [
              "integer",
              "null"
            ]
          },
          "depth": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "isOp": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "parentFullname": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_reddit_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "postId",
          "author",
          "subreddit",
          "title",
          "body",
          "kind",
          "flair",
          "isNsfw",
          "permalink",
          "externalUrl",
          "mediaUrl",
          "thumbnailUrl",
          "postedAt",
          "editedAt",
          "score",
          "upvoteRatio",
          "commentsCount",
          "subredditSubscribers",
          "fullname",
          "gallery",
          "details"
        ],
        "properties": {
          "postId": {
            "type": [
              "string",
              "null"
            ]
          },
          "author": {
            "type": [
              "string",
              "null"
            ]
          },
          "subreddit": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "body": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "flair": {
            "type": [
              "string",
              "null"
            ]
          },
          "isNsfw": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "permalink": {
            "type": [
              "string",
              "null"
            ]
          },
          "externalUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnailUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "editedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "score": {
            "type": [
              "integer",
              "null"
            ]
          },
          "upvoteRatio": {
            "type": [
              "number",
              "null"
            ]
          },
          "commentsCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "subredditSubscribers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "fullname": {
            "type": [
              "string",
              "null"
            ]
          },
          "gallery": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tiktok_profiles": {
        "type": "object",
        "description": "One row of profiles. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "handle",
          "tiktokId",
          "displayName",
          "profileUrl",
          "avatar",
          "bio",
          "bioLink",
          "verified",
          "private",
          "businessAccount",
          "businessCategory",
          "tiktokSeller",
          "followers",
          "following",
          "totalLikes",
          "likesGiven",
          "videos",
          "mutualFollows",
          "accountCreated",
          "details"
        ],
        "properties": {
          "handle": {
            "type": [
              "string",
              "null"
            ]
          },
          "tiktokId": {
            "type": [
              "string",
              "null"
            ]
          },
          "displayName": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatar": {
            "type": [
              "string",
              "null"
            ]
          },
          "bio": {
            "type": [
              "string",
              "null"
            ]
          },
          "bioLink": {
            "type": [
              "string",
              "null"
            ]
          },
          "verified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "private": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "businessAccount": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "businessCategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "tiktokSeller": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "following": {
            "type": [
              "integer",
              "null"
            ]
          },
          "totalLikes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likesGiven": {
            "type": [
              "integer",
              "null"
            ]
          },
          "videos": {
            "type": [
              "integer",
              "null"
            ]
          },
          "mutualFollows": {
            "type": [
              "integer",
              "null"
            ]
          },
          "accountCreated": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tiktok_posts": {
        "type": "object",
        "description": "One row of posts. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "postId",
          "postUrl",
          "authorHandle",
          "caption",
          "postedDate",
          "views",
          "likes",
          "comments",
          "shares",
          "saves",
          "durationS",
          "language",
          "isSlideshow",
          "isSponsored",
          "isAd",
          "hashtags",
          "mentions",
          "sound",
          "location",
          "locationAddress",
          "country",
          "thumbnail",
          "resolution",
          "effects",
          "slideshowImages",
          "hashtagViews",
          "sourceQuery",
          "details"
        ],
        "properties": {
          "postId": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "authorHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "caption": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "views": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "comments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "shares": {
            "type": [
              "integer",
              "null"
            ]
          },
          "saves": {
            "type": [
              "integer",
              "null"
            ]
          },
          "durationS": {
            "type": [
              "integer",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "isSlideshow": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isSponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isAd": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sound": {},
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "locationAddress": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail": {
            "type": [
              "string",
              "null"
            ]
          },
          "resolution": {
            "type": [
              "string",
              "null"
            ]
          },
          "effects": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "slideshowImages": {},
          "hashtagViews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sourceQuery": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tiktok_videos": {
        "type": "object",
        "description": "One row of videos. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "postId",
          "postUrl",
          "authorHandle",
          "caption",
          "postedDate",
          "views",
          "likes",
          "comments",
          "shares",
          "saves",
          "durationS",
          "language",
          "isSlideshow",
          "isSponsored",
          "isAd",
          "hashtags",
          "mentions",
          "sound",
          "location",
          "locationAddress",
          "country",
          "thumbnail",
          "resolution",
          "effects",
          "slideshowImages",
          "hashtagViews",
          "sourceQuery",
          "details"
        ],
        "properties": {
          "postId": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "authorHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "caption": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "views": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "comments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "shares": {
            "type": [
              "integer",
              "null"
            ]
          },
          "saves": {
            "type": [
              "integer",
              "null"
            ]
          },
          "durationS": {
            "type": [
              "integer",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "isSlideshow": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isSponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isAd": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sound": {},
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "locationAddress": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail": {
            "type": [
              "string",
              "null"
            ]
          },
          "resolution": {
            "type": [
              "string",
              "null"
            ]
          },
          "effects": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "slideshowImages": {},
          "hashtagViews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sourceQuery": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tiktok_searchPosts": {
        "type": "object",
        "description": "One row of searchPosts. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "postId",
          "postUrl",
          "authorHandle",
          "caption",
          "postedDate",
          "views",
          "likes",
          "comments",
          "shares",
          "saves",
          "durationS",
          "language",
          "isSlideshow",
          "isSponsored",
          "isAd",
          "hashtags",
          "mentions",
          "sound",
          "location",
          "locationAddress",
          "country",
          "thumbnail",
          "resolution",
          "effects",
          "slideshowImages",
          "hashtagViews",
          "sourceQuery",
          "details"
        ],
        "properties": {
          "postId": {
            "type": [
              "string",
              "null"
            ]
          },
          "postUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "authorHandle": {
            "type": [
              "string",
              "null"
            ]
          },
          "caption": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "views": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "comments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "shares": {
            "type": [
              "integer",
              "null"
            ]
          },
          "saves": {
            "type": [
              "integer",
              "null"
            ]
          },
          "durationS": {
            "type": [
              "integer",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "isSlideshow": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isSponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isAd": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sound": {},
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "locationAddress": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnail": {
            "type": [
              "string",
              "null"
            ]
          },
          "resolution": {
            "type": [
              "string",
              "null"
            ]
          },
          "effects": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "slideshowImages": {},
          "hashtagViews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sourceQuery": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tiktok_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "handle",
          "tiktokId",
          "displayName",
          "profileUrl",
          "avatar",
          "bio",
          "bioLink",
          "verified",
          "private",
          "businessAccount",
          "businessCategory",
          "tiktokSeller",
          "followers",
          "following",
          "totalLikes",
          "likesGiven",
          "videos",
          "mutualFollows",
          "accountCreated",
          "details"
        ],
        "properties": {
          "handle": {
            "type": [
              "string",
              "null"
            ]
          },
          "tiktokId": {
            "type": [
              "string",
              "null"
            ]
          },
          "displayName": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatar": {
            "type": [
              "string",
              "null"
            ]
          },
          "bio": {
            "type": [
              "string",
              "null"
            ]
          },
          "bioLink": {
            "type": [
              "string",
              "null"
            ]
          },
          "verified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "private": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "businessAccount": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "businessCategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "tiktokSeller": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "following": {
            "type": [
              "integer",
              "null"
            ]
          },
          "totalLikes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likesGiven": {
            "type": [
              "integer",
              "null"
            ]
          },
          "videos": {
            "type": [
              "integer",
              "null"
            ]
          },
          "mutualFollows": {
            "type": [
              "integer",
              "null"
            ]
          },
          "accountCreated": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tiktok_comments": {
        "type": "object",
        "description": "One row of comments. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "commentId",
          "comment",
          "likes",
          "replies",
          "postedDate",
          "commenter",
          "commenterId",
          "commenterUrl",
          "commenterAvatar",
          "pinnedByCreator",
          "likedByCreator",
          "mentions",
          "details"
        ],
        "properties": {
          "commentId": {
            "type": [
              "string",
              "null"
            ]
          },
          "comment": {
            "type": [
              "string",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "replies": {
            "type": [
              "integer",
              "null"
            ]
          },
          "postedDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenter": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterId": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterAvatar": {
            "type": [
              "string",
              "null"
            ]
          },
          "pinnedByCreator": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "likedByCreator": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tiktok_followers": {
        "type": "object",
        "description": "One row of followers. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "handle",
          "userId",
          "displayName",
          "profileUrl",
          "avatar",
          "bio",
          "verified",
          "private",
          "followers",
          "following",
          "videos",
          "totalLikes",
          "tiktokSeller",
          "connectionType",
          "connectedAccount",
          "details"
        ],
        "properties": {
          "handle": {
            "type": [
              "string",
              "null"
            ]
          },
          "userId": {
            "type": [
              "string",
              "null"
            ]
          },
          "displayName": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatar": {
            "type": [
              "string",
              "null"
            ]
          },
          "bio": {
            "type": [
              "string",
              "null"
            ]
          },
          "verified": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "private": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "following": {
            "type": [
              "integer",
              "null"
            ]
          },
          "videos": {
            "type": [
              "integer",
              "null"
            ]
          },
          "totalLikes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tiktokSeller": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "connectionType": {
            "type": [
              "string",
              "null"
            ]
          },
          "connectedAccount": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tiktok_shop": {
        "type": "object",
        "description": "One row of shop. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "productUrl",
          "title",
          "description",
          "salePrice",
          "originalPrice",
          "discount",
          "currency",
          "rating",
          "reviewCount",
          "soldCount",
          "seller",
          "image",
          "labels",
          "variants",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "salePrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "originalPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "discount": {
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviewCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "soldCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "seller": {},
          "image": {
            "type": [
              "string",
              "null"
            ]
          },
          "labels": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "variants": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_facebook_pages": {
        "type": "object",
        "description": "One row of pages. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "pageKey",
          "pageId",
          "pageUrl",
          "pageName",
          "username",
          "category",
          "intro",
          "followers",
          "likes",
          "following",
          "talkingAbout",
          "wereHere",
          "reviewCount",
          "recommendPercent",
          "phone",
          "email",
          "website",
          "otherWebsites",
          "address",
          "addressMapUrl",
          "businessHours",
          "priceRange",
          "services",
          "profilePictureUrl",
          "coverPhotoUrl",
          "pageCreated",
          "confirmedOwner",
          "runningAds",
          "adLibraryId",
          "socialLinks",
          "personalProfile",
          "profilePhotoLink",
          "details"
        ],
        "properties": {
          "pageKey": {
            "type": [
              "string",
              "null"
            ]
          },
          "pageId": {
            "type": [
              "string",
              "null"
            ]
          },
          "pageUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "pageName": {
            "type": [
              "string",
              "null"
            ]
          },
          "username": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "intro": {
            "type": [
              "string",
              "null"
            ]
          },
          "followers": {
            "type": [
              "integer",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "following": {
            "type": [
              "integer",
              "null"
            ]
          },
          "talkingAbout": {
            "type": [
              "integer",
              "null"
            ]
          },
          "wereHere": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reviewCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "recommendPercent": {
            "type": [
              "number",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "otherWebsites": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "addressMapUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessHours": {},
          "priceRange": {
            "type": [
              "string",
              "null"
            ]
          },
          "services": {
            "type": [
              "string",
              "null"
            ]
          },
          "profilePictureUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "coverPhotoUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "pageCreated": {
            "type": [
              "string",
              "null"
            ]
          },
          "confirmedOwner": {
            "type": [
              "string",
              "null"
            ]
          },
          "runningAds": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "adLibraryId": {
            "type": [
              "string",
              "null"
            ]
          },
          "socialLinks": {},
          "personalProfile": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "profilePhotoLink": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_facebook_posts": {
        "type": "object",
        "description": "One row of posts. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "postUrl",
          "postId",
          "authorKey",
          "author",
          "text",
          "postedAt",
          "contentType",
          "reactions",
          "reactionBreakdown",
          "comments",
          "shares",
          "views",
          "media",
          "videoDuration",
          "hashtags",
          "mentions",
          "linkPreview",
          "source",
          "topComments",
          "collaborators",
          "details"
        ],
        "properties": {
          "postUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "postId": {
            "type": [
              "string",
              "null"
            ]
          },
          "authorKey": {
            "type": [
              "string",
              "null"
            ]
          },
          "author": {},
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "contentType": {
            "type": [
              "string",
              "null"
            ]
          },
          "reactions": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reactionBreakdown": {},
          "comments": {
            "type": [
              "integer",
              "null"
            ]
          },
          "shares": {
            "type": [
              "integer",
              "null"
            ]
          },
          "views": {
            "type": [
              "integer",
              "null"
            ]
          },
          "media": {},
          "videoDuration": {
            "type": [
              "string",
              "null"
            ]
          },
          "hashtags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "linkPreview": {},
          "source": {},
          "topComments": {},
          "collaborators": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_facebook_reels": {
        "type": "object",
        "description": "One row of reels. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reelId",
          "reelUrl",
          "plays",
          "playsLabel",
          "publishedAt",
          "durationSec",
          "audioTitle",
          "audioArtist",
          "audioTrack",
          "audioTrackId",
          "audioType",
          "audioMuted",
          "remixable",
          "videoUrl",
          "thumbnailUrl",
          "dimensions",
          "captionLanguages",
          "dubbedAudioLanguages",
          "captionsFileUrl",
          "page",
          "details"
        ],
        "properties": {
          "reelId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reelUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "plays": {
            "type": [
              "integer",
              "null"
            ]
          },
          "playsLabel": {
            "type": [
              "string",
              "null"
            ]
          },
          "publishedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "durationSec": {
            "type": [
              "number",
              "null"
            ]
          },
          "audioTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "audioArtist": {
            "type": [
              "string",
              "null"
            ]
          },
          "audioTrack": {
            "type": [
              "string",
              "null"
            ]
          },
          "audioTrackId": {
            "type": [
              "string",
              "null"
            ]
          },
          "audioType": {
            "type": [
              "string",
              "null"
            ]
          },
          "audioMuted": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "remixable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "videoUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnailUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "dimensions": {
            "type": [
              "string",
              "null"
            ]
          },
          "captionLanguages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "dubbedAudioLanguages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "captionsFileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "page": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_facebook_comments": {
        "type": "object",
        "description": "One row of comments. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "commentUrl",
          "commentText",
          "commenter",
          "commenterId",
          "commenterUrl",
          "commenterPicture",
          "likes",
          "replies",
          "replyDepth",
          "isReply",
          "replyingTo",
          "threadRootAuthor",
          "commentDate",
          "commentMediaType",
          "commentMediaUrl",
          "details"
        ],
        "properties": {
          "commentUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "commentText": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenter": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterId": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "commenterPicture": {
            "type": [
              "string",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "replies": {
            "type": [
              "integer",
              "null"
            ]
          },
          "replyDepth": {
            "type": [
              "integer",
              "null"
            ]
          },
          "isReply": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "replyingTo": {
            "type": [
              "string",
              "null"
            ]
          },
          "threadRootAuthor": {
            "type": [
              "string",
              "null"
            ]
          },
          "commentDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "commentMediaType": {
            "type": [
              "string",
              "null"
            ]
          },
          "commentMediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_facebook_reviews": {
        "type": "object",
        "description": "One row of reviews. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reviewId",
          "reviewUrl",
          "reviewText",
          "recommended",
          "reviewDate",
          "reviewerName",
          "reviewerAvatar",
          "reviewerProfileUrl",
          "likes",
          "commentCount",
          "photos",
          "tags",
          "details"
        ],
        "properties": {
          "reviewId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewText": {
            "type": [
              "string",
              "null"
            ]
          },
          "recommended": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "reviewDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerName": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerAvatar": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerProfileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "likes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "commentCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_facebook_followers": {
        "type": "object",
        "description": "One row of followers. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "profileId",
          "followerName",
          "profileUrl",
          "avatarUrl",
          "bio",
          "relationship",
          "details"
        ],
        "properties": {
          "profileId": {
            "type": [
              "string",
              "null"
            ]
          },
          "followerName": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "avatarUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "bio": {
            "type": [
              "string",
              "null"
            ]
          },
          "relationship": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_facebook_ads": {
        "type": "object",
        "description": "One row of ads. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "libraryId",
          "adUrl",
          "pageUrl",
          "advertiser",
          "isActive",
          "startDate",
          "endDate",
          "daysActive",
          "headline",
          "bodyText",
          "linkDescription",
          "ctaText",
          "destinationUrl",
          "mediaType",
          "mediaUrl",
          "format",
          "variantCount",
          "platforms",
          "euReach",
          "reachBreakdown",
          "cards",
          "details"
        ],
        "properties": {
          "libraryId": {
            "type": [
              "string",
              "null"
            ]
          },
          "adUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "pageUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "advertiser": {},
          "isActive": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "startDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "endDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "daysActive": {
            "type": [
              "integer",
              "null"
            ]
          },
          "headline": {
            "type": [
              "string",
              "null"
            ]
          },
          "bodyText": {
            "type": [
              "string",
              "null"
            ]
          },
          "linkDescription": {
            "type": [
              "string",
              "null"
            ]
          },
          "ctaText": {
            "type": [
              "string",
              "null"
            ]
          },
          "destinationUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaType": {
            "type": [
              "string",
              "null"
            ]
          },
          "mediaUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "format": {
            "type": [
              "string",
              "null"
            ]
          },
          "variantCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "platforms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "euReach": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reachBreakdown": {},
          "cards": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_facebook_events": {
        "type": "object",
        "description": "One row of events. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "eventId",
          "eventUrl",
          "eventName",
          "description",
          "dateTime",
          "startDate",
          "duration",
          "frequency",
          "occurrences",
          "category",
          "venueName",
          "venueUrl",
          "address",
          "street",
          "city",
          "country",
          "latitude",
          "longitude",
          "isOnline",
          "isPast",
          "isCanceled",
          "host",
          "hosts",
          "going",
          "interested",
          "tickets",
          "externalLinks",
          "coverImageUrl",
          "imageCaption",
          "details"
        ],
        "properties": {
          "eventId": {
            "type": [
              "string",
              "null"
            ]
          },
          "eventUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "eventName": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "dateTime": {
            "type": [
              "string",
              "null"
            ]
          },
          "startDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "duration": {
            "type": [
              "string",
              "null"
            ]
          },
          "frequency": {
            "type": [
              "string",
              "null"
            ]
          },
          "occurrences": {},
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "venueName": {
            "type": [
              "string",
              "null"
            ]
          },
          "venueUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "street": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "isOnline": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isPast": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "isCanceled": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "host": {
            "type": [
              "string",
              "null"
            ]
          },
          "hosts": {},
          "going": {
            "type": [
              "integer",
              "null"
            ]
          },
          "interested": {
            "type": [
              "integer",
              "null"
            ]
          },
          "tickets": {},
          "externalLinks": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "coverImageUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "imageCaption": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_facebook_marketplace": {
        "type": "object",
        "description": "One row of marketplace. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "listingId",
          "listingUrl",
          "listingTitle",
          "description",
          "price",
          "priceValue",
          "originalPrice",
          "currency",
          "condition",
          "location",
          "city",
          "state",
          "country",
          "postalCode",
          "latitude",
          "longitude",
          "listedAt",
          "primaryPhoto",
          "photos",
          "videoUrl",
          "attributes",
          "deliveryOptions",
          "mileage",
          "details"
        ],
        "properties": {
          "listingId": {
            "type": [
              "string",
              "null"
            ]
          },
          "listingUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "listingTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceValue": {
            "type": [
              "number",
              "null"
            ]
          },
          "originalPrice": {
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "postalCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "listedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "primaryPhoto": {
            "type": [
              "string",
              "null"
            ]
          },
          "photos": {},
          "videoUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "attributes": {},
          "deliveryOptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mileage": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_amazon_products": {
        "type": "object",
        "description": "One row of products. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "asin",
          "marketplace",
          "title",
          "brand",
          "productUrl",
          "price",
          "currency",
          "listPrice",
          "discount",
          "onDeal",
          "prime",
          "availability",
          "rating",
          "ratingsCount",
          "reviewsCount",
          "ratingBreakdown",
          "boughtPastMonth",
          "boughtPastMonthMin",
          "bestSellersRank",
          "bsrCategory",
          "soldBy",
          "fulfilledBy",
          "sellerId",
          "usedOffer",
          "features",
          "description",
          "categoryPath",
          "browseNodeId",
          "productDetails",
          "keySpecs",
          "bookEditions",
          "variants",
          "mainImage",
          "images",
          "videos",
          "reviewSummary",
          "reviewTopics",
          "details"
        ],
        "properties": {
          "asin": {
            "type": [
              "string",
              "null"
            ]
          },
          "marketplace": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "listPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "discount": {
            "type": [
              "string",
              "null"
            ]
          },
          "onDeal": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "prime": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "availability": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingsCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reviewsCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ratingBreakdown": {},
          "boughtPastMonth": {
            "type": [
              "string",
              "null"
            ]
          },
          "boughtPastMonthMin": {
            "type": [
              "integer",
              "null"
            ]
          },
          "bestSellersRank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "bsrCategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "soldBy": {
            "type": [
              "string",
              "null"
            ]
          },
          "fulfilledBy": {
            "type": [
              "string",
              "null"
            ]
          },
          "sellerId": {
            "type": [
              "string",
              "null"
            ]
          },
          "usedOffer": {},
          "features": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "browseNodeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productDetails": {},
          "keySpecs": {},
          "bookEditions": {},
          "variants": {},
          "mainImage": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "videos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "reviewSummary": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewTopics": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_amazon_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "asin",
          "marketplace",
          "title",
          "brand",
          "productUrl",
          "price",
          "currency",
          "listPrice",
          "discount",
          "onDeal",
          "prime",
          "availability",
          "rating",
          "ratingsCount",
          "reviewsCount",
          "ratingBreakdown",
          "boughtPastMonth",
          "boughtPastMonthMin",
          "bestSellersRank",
          "bsrCategory",
          "soldBy",
          "fulfilledBy",
          "sellerId",
          "usedOffer",
          "features",
          "description",
          "categoryPath",
          "browseNodeId",
          "productDetails",
          "keySpecs",
          "bookEditions",
          "variants",
          "mainImage",
          "images",
          "videos",
          "reviewSummary",
          "reviewTopics",
          "details"
        ],
        "properties": {
          "asin": {
            "type": [
              "string",
              "null"
            ]
          },
          "marketplace": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "listPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "discount": {
            "type": [
              "string",
              "null"
            ]
          },
          "onDeal": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "prime": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "availability": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingsCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reviewsCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ratingBreakdown": {},
          "boughtPastMonth": {
            "type": [
              "string",
              "null"
            ]
          },
          "boughtPastMonthMin": {
            "type": [
              "integer",
              "null"
            ]
          },
          "bestSellersRank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "bsrCategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "soldBy": {
            "type": [
              "string",
              "null"
            ]
          },
          "fulfilledBy": {
            "type": [
              "string",
              "null"
            ]
          },
          "sellerId": {
            "type": [
              "string",
              "null"
            ]
          },
          "usedOffer": {},
          "features": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "browseNodeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productDetails": {},
          "keySpecs": {},
          "bookEditions": {},
          "variants": {},
          "mainImage": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "videos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "reviewSummary": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewTopics": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_amazon_reviews": {
        "type": "object",
        "description": "One row of reviews. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reviewId",
          "reviewTitle",
          "reviewText",
          "rating",
          "posted",
          "reviewer",
          "reviewerUrl",
          "verifiedPurchase",
          "amazonVine",
          "helpfulVotes",
          "language",
          "variant",
          "variantAsin",
          "images",
          "videos",
          "mediaType",
          "reviewUrl",
          "country",
          "details"
        ],
        "properties": {
          "reviewId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewText": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "posted": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewer": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "verifiedPurchase": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "amazonVine": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "helpfulVotes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "variant": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "variantAsin": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "videos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mediaType": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_shopify_products": {
        "type": "object",
        "description": "One row of products. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "storeUrl",
          "productId",
          "productUrl",
          "title",
          "brand",
          "category",
          "description",
          "tags",
          "currency",
          "priceFrom",
          "priceTo",
          "onSale",
          "inStock",
          "variantCount",
          "variants",
          "options",
          "imageUrl",
          "media",
          "createdDate",
          "publishedDate",
          "details"
        ],
        "properties": {
          "storeUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceFrom": {
            "type": [
              "number",
              "null"
            ]
          },
          "priceTo": {
            "type": [
              "number",
              "null"
            ]
          },
          "onSale": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "inStock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "variantCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "variants": {},
          "options": {},
          "imageUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "media": {},
          "createdDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "publishedDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_farfetch_products": {
        "type": "object",
        "description": "One row of products. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "productName",
          "brand",
          "productUrl",
          "description",
          "color",
          "category",
          "categoryPath",
          "gender",
          "season",
          "price",
          "fullPrice",
          "discountPercent",
          "currency",
          "seller",
          "sizes",
          "variants",
          "measurements",
          "returns",
          "stockQuantity",
          "availability",
          "label",
          "condition",
          "images",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "color": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "gender": {
            "type": [
              "string",
              "null"
            ]
          },
          "season": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "fullPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPercent": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "variants": {},
          "measurements": {},
          "returns": {},
          "stockQuantity": {
            "type": [
              "integer",
              "null"
            ]
          },
          "availability": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "label": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_farfetch_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "productName",
          "brand",
          "productUrl",
          "description",
          "color",
          "category",
          "categoryPath",
          "gender",
          "season",
          "price",
          "fullPrice",
          "discountPercent",
          "currency",
          "seller",
          "sizes",
          "variants",
          "measurements",
          "returns",
          "stockQuantity",
          "availability",
          "label",
          "condition",
          "images",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "color": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "gender": {
            "type": [
              "string",
              "null"
            ]
          },
          "season": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "fullPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPercent": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "variants": {},
          "measurements": {},
          "returns": {},
          "stockQuantity": {
            "type": [
              "integer",
              "null"
            ]
          },
          "availability": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "label": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_farfetch_listing": {
        "type": "object",
        "description": "One row of listing. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "productName",
          "brand",
          "productUrl",
          "description",
          "color",
          "category",
          "categoryPath",
          "gender",
          "season",
          "price",
          "fullPrice",
          "discountPercent",
          "currency",
          "seller",
          "sizes",
          "variants",
          "measurements",
          "returns",
          "stockQuantity",
          "availability",
          "label",
          "condition",
          "images",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "color": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "gender": {
            "type": [
              "string",
              "null"
            ]
          },
          "season": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "fullPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPercent": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "variants": {},
          "measurements": {},
          "returns": {},
          "stockQuantity": {
            "type": [
              "integer",
              "null"
            ]
          },
          "availability": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "label": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_goat_products": {
        "type": "object",
        "description": "One row of products. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "slug",
          "productId",
          "productName",
          "sku",
          "productUrl",
          "brand",
          "colorway",
          "color",
          "category",
          "subcategory",
          "categoryLevel3",
          "categoryLevel4",
          "activities",
          "gender",
          "releaseDate",
          "season",
          "story",
          "styleTags",
          "detailTags",
          "merchandisingTags",
          "specialType",
          "isResellable",
          "directShipping",
          "maxOffer",
          "sizeType",
          "sizeUnit",
          "retailPrice",
          "images",
          "attributes",
          "listings",
          "lowestAsk",
          "details"
        ],
        "properties": {
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "sku": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "colorway": {
            "type": [
              "string",
              "null"
            ]
          },
          "color": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "subcategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryLevel3": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryLevel4": {
            "type": [
              "string",
              "null"
            ]
          },
          "activities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "gender": {
            "type": [
              "string",
              "null"
            ]
          },
          "releaseDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "season": {
            "type": [
              "string",
              "null"
            ]
          },
          "story": {
            "type": [
              "string",
              "null"
            ]
          },
          "styleTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "detailTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "merchandisingTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "specialType": {
            "type": [
              "string",
              "null"
            ]
          },
          "isResellable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "directShipping": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "maxOffer": {
            "type": [
              "number",
              "null"
            ]
          },
          "sizeType": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizeUnit": {
            "type": [
              "string",
              "null"
            ]
          },
          "retailPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "attributes": {},
          "listings": {},
          "lowestAsk": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_goat_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "slug",
          "productId",
          "productName",
          "sku",
          "productUrl",
          "brand",
          "colorway",
          "color",
          "category",
          "subcategory",
          "categoryLevel3",
          "categoryLevel4",
          "activities",
          "gender",
          "releaseDate",
          "season",
          "story",
          "styleTags",
          "detailTags",
          "merchandisingTags",
          "specialType",
          "isResellable",
          "directShipping",
          "maxOffer",
          "sizeType",
          "sizeUnit",
          "retailPrice",
          "images",
          "attributes",
          "listings",
          "lowestAsk",
          "details"
        ],
        "properties": {
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "sku": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "colorway": {
            "type": [
              "string",
              "null"
            ]
          },
          "color": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "subcategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryLevel3": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryLevel4": {
            "type": [
              "string",
              "null"
            ]
          },
          "activities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "gender": {
            "type": [
              "string",
              "null"
            ]
          },
          "releaseDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "season": {
            "type": [
              "string",
              "null"
            ]
          },
          "story": {
            "type": [
              "string",
              "null"
            ]
          },
          "styleTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "detailTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "merchandisingTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "specialType": {
            "type": [
              "string",
              "null"
            ]
          },
          "isResellable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "directShipping": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "maxOffer": {
            "type": [
              "number",
              "null"
            ]
          },
          "sizeType": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizeUnit": {
            "type": [
              "string",
              "null"
            ]
          },
          "retailPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "attributes": {},
          "listings": {},
          "lowestAsk": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_goat_listing": {
        "type": "object",
        "description": "One row of listing. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "slug",
          "productId",
          "productName",
          "sku",
          "productUrl",
          "brand",
          "colorway",
          "color",
          "category",
          "subcategory",
          "categoryLevel3",
          "categoryLevel4",
          "activities",
          "gender",
          "releaseDate",
          "season",
          "story",
          "styleTags",
          "detailTags",
          "merchandisingTags",
          "specialType",
          "isResellable",
          "directShipping",
          "maxOffer",
          "sizeType",
          "sizeUnit",
          "retailPrice",
          "images",
          "attributes",
          "listings",
          "lowestAsk",
          "details"
        ],
        "properties": {
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "sku": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "colorway": {
            "type": [
              "string",
              "null"
            ]
          },
          "color": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "subcategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryLevel3": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryLevel4": {
            "type": [
              "string",
              "null"
            ]
          },
          "activities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "gender": {
            "type": [
              "string",
              "null"
            ]
          },
          "releaseDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "season": {
            "type": [
              "string",
              "null"
            ]
          },
          "story": {
            "type": [
              "string",
              "null"
            ]
          },
          "styleTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "detailTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "merchandisingTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "specialType": {
            "type": [
              "string",
              "null"
            ]
          },
          "isResellable": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "directShipping": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "maxOffer": {
            "type": [
              "number",
              "null"
            ]
          },
          "sizeType": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizeUnit": {
            "type": [
              "string",
              "null"
            ]
          },
          "retailPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "attributes": {},
          "listings": {},
          "lowestAsk": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_stockx_products": {
        "type": "object",
        "description": "One row of products. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "slug",
          "productId",
          "productUrl",
          "primaryTitle",
          "secondaryTitle",
          "brand",
          "model",
          "colorway",
          "styleId",
          "category",
          "subCategory",
          "categoryPath",
          "contentGroup",
          "gender",
          "condition",
          "sizeConvention",
          "retailPrice",
          "releaseDate",
          "description",
          "tags",
          "lastSale",
          "sales72Hours",
          "averagePrice90Days",
          "sales90Days",
          "priceVolatility",
          "sales12Months",
          "averagePrice12Months",
          "bids",
          "askInventoryType",
          "expressAskCount",
          "expressShipLowestAsk",
          "expressDeliveryDate",
          "expressLatestDeliveryDate",
          "images",
          "sizes",
          "attributes",
          "lowestAsk",
          "highestBid",
          "details"
        ],
        "properties": {
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "primaryTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "secondaryTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "model": {
            "type": [
              "string",
              "null"
            ]
          },
          "colorway": {
            "type": [
              "string",
              "null"
            ]
          },
          "styleId": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "subCategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "contentGroup": {
            "type": [
              "string",
              "null"
            ]
          },
          "gender": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizeConvention": {
            "type": [
              "string",
              "null"
            ]
          },
          "retailPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "releaseDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "lastSale": {
            "type": [
              "number",
              "null"
            ]
          },
          "sales72Hours": {
            "type": [
              "integer",
              "null"
            ]
          },
          "averagePrice90Days": {
            "type": [
              "number",
              "null"
            ]
          },
          "sales90Days": {
            "type": [
              "integer",
              "null"
            ]
          },
          "priceVolatility": {
            "type": [
              "number",
              "null"
            ]
          },
          "sales12Months": {
            "type": [
              "integer",
              "null"
            ]
          },
          "averagePrice12Months": {
            "type": [
              "number",
              "null"
            ]
          },
          "bids": {
            "type": [
              "integer",
              "null"
            ]
          },
          "askInventoryType": {
            "type": [
              "string",
              "null"
            ]
          },
          "expressAskCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "expressShipLowestAsk": {
            "type": [
              "number",
              "null"
            ]
          },
          "expressDeliveryDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "expressLatestDeliveryDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sizes": {},
          "attributes": {},
          "lowestAsk": {
            "type": [
              "number",
              "null"
            ]
          },
          "highestBid": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_stockx_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "slug",
          "productId",
          "productUrl",
          "primaryTitle",
          "secondaryTitle",
          "brand",
          "model",
          "colorway",
          "styleId",
          "category",
          "subCategory",
          "categoryPath",
          "contentGroup",
          "gender",
          "condition",
          "sizeConvention",
          "retailPrice",
          "releaseDate",
          "description",
          "tags",
          "lastSale",
          "sales72Hours",
          "averagePrice90Days",
          "sales90Days",
          "priceVolatility",
          "sales12Months",
          "averagePrice12Months",
          "bids",
          "askInventoryType",
          "expressAskCount",
          "expressShipLowestAsk",
          "expressDeliveryDate",
          "expressLatestDeliveryDate",
          "images",
          "sizes",
          "attributes",
          "lowestAsk",
          "highestBid",
          "details"
        ],
        "properties": {
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "primaryTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "secondaryTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "model": {
            "type": [
              "string",
              "null"
            ]
          },
          "colorway": {
            "type": [
              "string",
              "null"
            ]
          },
          "styleId": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "subCategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "contentGroup": {
            "type": [
              "string",
              "null"
            ]
          },
          "gender": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizeConvention": {
            "type": [
              "string",
              "null"
            ]
          },
          "retailPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "releaseDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "lastSale": {
            "type": [
              "number",
              "null"
            ]
          },
          "sales72Hours": {
            "type": [
              "integer",
              "null"
            ]
          },
          "averagePrice90Days": {
            "type": [
              "number",
              "null"
            ]
          },
          "sales90Days": {
            "type": [
              "integer",
              "null"
            ]
          },
          "priceVolatility": {
            "type": [
              "number",
              "null"
            ]
          },
          "sales12Months": {
            "type": [
              "integer",
              "null"
            ]
          },
          "averagePrice12Months": {
            "type": [
              "number",
              "null"
            ]
          },
          "bids": {
            "type": [
              "integer",
              "null"
            ]
          },
          "askInventoryType": {
            "type": [
              "string",
              "null"
            ]
          },
          "expressAskCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "expressShipLowestAsk": {
            "type": [
              "number",
              "null"
            ]
          },
          "expressDeliveryDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "expressLatestDeliveryDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sizes": {},
          "attributes": {},
          "lowestAsk": {
            "type": [
              "number",
              "null"
            ]
          },
          "highestBid": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_stockx_listing": {
        "type": "object",
        "description": "One row of listing. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "slug",
          "productId",
          "productUrl",
          "primaryTitle",
          "secondaryTitle",
          "brand",
          "model",
          "colorway",
          "styleId",
          "category",
          "subCategory",
          "categoryPath",
          "contentGroup",
          "gender",
          "condition",
          "sizeConvention",
          "retailPrice",
          "releaseDate",
          "description",
          "tags",
          "lastSale",
          "sales72Hours",
          "averagePrice90Days",
          "sales90Days",
          "priceVolatility",
          "sales12Months",
          "averagePrice12Months",
          "bids",
          "askInventoryType",
          "expressAskCount",
          "expressShipLowestAsk",
          "expressDeliveryDate",
          "expressLatestDeliveryDate",
          "images",
          "sizes",
          "attributes",
          "lowestAsk",
          "highestBid",
          "details"
        ],
        "properties": {
          "slug": {
            "type": [
              "string",
              "null"
            ]
          },
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "primaryTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "secondaryTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "model": {
            "type": [
              "string",
              "null"
            ]
          },
          "colorway": {
            "type": [
              "string",
              "null"
            ]
          },
          "styleId": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "subCategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "contentGroup": {
            "type": [
              "string",
              "null"
            ]
          },
          "gender": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizeConvention": {
            "type": [
              "string",
              "null"
            ]
          },
          "retailPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "releaseDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "lastSale": {
            "type": [
              "number",
              "null"
            ]
          },
          "sales72Hours": {
            "type": [
              "integer",
              "null"
            ]
          },
          "averagePrice90Days": {
            "type": [
              "number",
              "null"
            ]
          },
          "sales90Days": {
            "type": [
              "integer",
              "null"
            ]
          },
          "priceVolatility": {
            "type": [
              "number",
              "null"
            ]
          },
          "sales12Months": {
            "type": [
              "integer",
              "null"
            ]
          },
          "averagePrice12Months": {
            "type": [
              "number",
              "null"
            ]
          },
          "bids": {
            "type": [
              "integer",
              "null"
            ]
          },
          "askInventoryType": {
            "type": [
              "string",
              "null"
            ]
          },
          "expressAskCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "expressShipLowestAsk": {
            "type": [
              "number",
              "null"
            ]
          },
          "expressDeliveryDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "expressLatestDeliveryDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sizes": {},
          "attributes": {},
          "lowestAsk": {
            "type": [
              "number",
              "null"
            ]
          },
          "highestBid": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_blinkit_products": {
        "type": "object",
        "description": "One row of products. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "variantId",
          "storeScope",
          "storeId",
          "vendorProductId",
          "productName",
          "brand",
          "price",
          "mrp",
          "discountPct",
          "packSize",
          "inStock",
          "stockCount",
          "rating",
          "ratingCount",
          "category",
          "rank",
          "sponsored",
          "images",
          "productUrl",
          "description",
          "countryOfOrigin",
          "manufacturer",
          "seller",
          "specifications",
          "latitude",
          "longitude",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "variantId": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeScope": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "vendorProductId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "mrp": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "packSize": {
            "type": [
              "string",
              "null"
            ]
          },
          "inStock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "stockCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "countryOfOrigin": {
            "type": [
              "string",
              "null"
            ]
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "specifications": {},
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_blinkit_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "variantId",
          "storeScope",
          "storeId",
          "vendorProductId",
          "productName",
          "brand",
          "price",
          "mrp",
          "discountPct",
          "packSize",
          "inStock",
          "stockCount",
          "rating",
          "ratingCount",
          "category",
          "rank",
          "sponsored",
          "images",
          "productUrl",
          "description",
          "countryOfOrigin",
          "manufacturer",
          "seller",
          "specifications",
          "latitude",
          "longitude",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "variantId": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeScope": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "vendorProductId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "mrp": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "packSize": {
            "type": [
              "string",
              "null"
            ]
          },
          "inStock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "stockCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "countryOfOrigin": {
            "type": [
              "string",
              "null"
            ]
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "specifications": {},
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_blinkit_category": {
        "type": "object",
        "description": "One row of category. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "variantId",
          "storeScope",
          "storeId",
          "vendorProductId",
          "productName",
          "brand",
          "price",
          "mrp",
          "discountPct",
          "packSize",
          "inStock",
          "stockCount",
          "rating",
          "ratingCount",
          "category",
          "rank",
          "sponsored",
          "images",
          "productUrl",
          "description",
          "countryOfOrigin",
          "manufacturer",
          "seller",
          "specifications",
          "latitude",
          "longitude",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "variantId": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeScope": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "vendorProductId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "mrp": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "packSize": {
            "type": [
              "string",
              "null"
            ]
          },
          "inStock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "stockCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "countryOfOrigin": {
            "type": [
              "string",
              "null"
            ]
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "specifications": {},
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_instamart_products": {
        "type": "object",
        "description": "One row of products. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "variantId",
          "storeScope",
          "storeId",
          "vendorProductId",
          "productName",
          "brand",
          "price",
          "mrp",
          "discountPct",
          "packSize",
          "inStock",
          "stockCount",
          "rating",
          "ratingCount",
          "category",
          "rank",
          "sponsored",
          "images",
          "productUrl",
          "description",
          "countryOfOrigin",
          "manufacturer",
          "seller",
          "specifications",
          "latitude",
          "longitude",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "variantId": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeScope": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "vendorProductId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "mrp": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "packSize": {
            "type": [
              "string",
              "null"
            ]
          },
          "inStock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "stockCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "countryOfOrigin": {
            "type": [
              "string",
              "null"
            ]
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "specifications": {},
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_instamart_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "variantId",
          "storeScope",
          "storeId",
          "vendorProductId",
          "productName",
          "brand",
          "price",
          "mrp",
          "discountPct",
          "packSize",
          "inStock",
          "stockCount",
          "rating",
          "ratingCount",
          "category",
          "rank",
          "sponsored",
          "images",
          "productUrl",
          "description",
          "countryOfOrigin",
          "manufacturer",
          "seller",
          "specifications",
          "latitude",
          "longitude",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "variantId": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeScope": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "vendorProductId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "mrp": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "packSize": {
            "type": [
              "string",
              "null"
            ]
          },
          "inStock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "stockCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "countryOfOrigin": {
            "type": [
              "string",
              "null"
            ]
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "specifications": {},
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_instamart_category": {
        "type": "object",
        "description": "One row of category. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "variantId",
          "storeScope",
          "storeId",
          "vendorProductId",
          "productName",
          "brand",
          "price",
          "mrp",
          "discountPct",
          "packSize",
          "inStock",
          "stockCount",
          "rating",
          "ratingCount",
          "category",
          "rank",
          "sponsored",
          "images",
          "productUrl",
          "description",
          "countryOfOrigin",
          "manufacturer",
          "seller",
          "specifications",
          "latitude",
          "longitude",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "variantId": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeScope": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "vendorProductId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "mrp": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "packSize": {
            "type": [
              "string",
              "null"
            ]
          },
          "inStock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "stockCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "countryOfOrigin": {
            "type": [
              "string",
              "null"
            ]
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "specifications": {},
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_zepto_products": {
        "type": "object",
        "description": "One row of products. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "variantId",
          "storeScope",
          "storeId",
          "vendorProductId",
          "productName",
          "brand",
          "price",
          "mrp",
          "discountPct",
          "packSize",
          "inStock",
          "stockCount",
          "rating",
          "ratingCount",
          "category",
          "rank",
          "sponsored",
          "images",
          "productUrl",
          "description",
          "countryOfOrigin",
          "manufacturer",
          "seller",
          "specifications",
          "latitude",
          "longitude",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "variantId": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeScope": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "vendorProductId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "mrp": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "packSize": {
            "type": [
              "string",
              "null"
            ]
          },
          "inStock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "stockCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "countryOfOrigin": {
            "type": [
              "string",
              "null"
            ]
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "specifications": {},
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_zepto_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "variantId",
          "storeScope",
          "storeId",
          "vendorProductId",
          "productName",
          "brand",
          "price",
          "mrp",
          "discountPct",
          "packSize",
          "inStock",
          "stockCount",
          "rating",
          "ratingCount",
          "category",
          "rank",
          "sponsored",
          "images",
          "productUrl",
          "description",
          "countryOfOrigin",
          "manufacturer",
          "seller",
          "specifications",
          "latitude",
          "longitude",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "variantId": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeScope": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "vendorProductId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "mrp": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "packSize": {
            "type": [
              "string",
              "null"
            ]
          },
          "inStock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "stockCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "countryOfOrigin": {
            "type": [
              "string",
              "null"
            ]
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "specifications": {},
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_zepto_category": {
        "type": "object",
        "description": "One row of category. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "variantId",
          "storeScope",
          "storeId",
          "vendorProductId",
          "productName",
          "brand",
          "price",
          "mrp",
          "discountPct",
          "packSize",
          "inStock",
          "stockCount",
          "rating",
          "ratingCount",
          "category",
          "rank",
          "sponsored",
          "images",
          "productUrl",
          "description",
          "countryOfOrigin",
          "manufacturer",
          "seller",
          "specifications",
          "latitude",
          "longitude",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "variantId": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeScope": {
            "type": [
              "string",
              "null"
            ]
          },
          "storeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "vendorProductId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productName": {
            "type": [
              "string",
              "null"
            ]
          },
          "brand": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "number",
              "null"
            ]
          },
          "mrp": {
            "type": [
              "number",
              "null"
            ]
          },
          "discountPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "packSize": {
            "type": [
              "string",
              "null"
            ]
          },
          "inStock": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "stockCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "ratingCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "countryOfOrigin": {
            "type": [
              "string",
              "null"
            ]
          },
          "manufacturer": {
            "type": [
              "string",
              "null"
            ]
          },
          "seller": {
            "type": [
              "string",
              "null"
            ]
          },
          "specifications": {},
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_indeed_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "jobId",
          "jobUrl",
          "applyUrl",
          "jobTitle",
          "normalizedTitle",
          "companyName",
          "companyKey",
          "company",
          "jobDescription",
          "employmentType",
          "workplaceType",
          "workSetting",
          "shift",
          "experienceLevel",
          "educationLevel",
          "salaryText",
          "salaryMin",
          "salaryMax",
          "salaryCurrency",
          "salaryPeriod",
          "posted",
          "applyStarts",
          "city",
          "state",
          "country",
          "postalCode",
          "streetAddress",
          "fullAddress",
          "latitude",
          "longitude",
          "skills",
          "certifications",
          "benefits",
          "eligibility",
          "physicalRequirements",
          "travel",
          "occupation",
          "occupationCategories",
          "sponsored",
          "urgentHire",
          "highVolumeHiring",
          "numberOfHires",
          "employerResponseRate",
          "employerAvgResponseTimeDays",
          "employerResponsive",
          "sourceName",
          "sourceType",
          "language",
          "details"
        ],
        "properties": {
          "jobId": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "applyUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "normalizedTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyName": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyKey": {
            "type": [
              "string",
              "null"
            ]
          },
          "company": {},
          "jobDescription": {
            "type": [
              "string",
              "null"
            ]
          },
          "employmentType": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "workplaceType": {
            "type": [
              "string",
              "null"
            ]
          },
          "workSetting": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "shift": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "experienceLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "educationLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "salaryText": {
            "type": [
              "string",
              "null"
            ]
          },
          "salaryMin": {
            "type": [
              "number",
              "null"
            ]
          },
          "salaryMax": {
            "type": [
              "number",
              "null"
            ]
          },
          "salaryCurrency": {
            "type": [
              "string",
              "null"
            ]
          },
          "salaryPeriod": {
            "type": [
              "string",
              "null"
            ]
          },
          "posted": {
            "type": [
              "string",
              "null"
            ]
          },
          "applyStarts": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "postalCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "streetAddress": {
            "type": [
              "string",
              "null"
            ]
          },
          "fullAddress": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "certifications": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "benefits": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "eligibility": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "physicalRequirements": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "travel": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "occupation": {
            "type": [
              "string",
              "null"
            ]
          },
          "occupationCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "urgentHire": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "highVolumeHiring": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "numberOfHires": {
            "type": [
              "string",
              "null"
            ]
          },
          "employerResponseRate": {
            "type": [
              "number",
              "null"
            ]
          },
          "employerAvgResponseTimeDays": {
            "type": [
              "number",
              "null"
            ]
          },
          "employerResponsive": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "sourceName": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourceType": {
            "type": [
              "string",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_indeed_jobs": {
        "type": "object",
        "description": "One row of jobs. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "jobId",
          "jobUrl",
          "applyUrl",
          "jobTitle",
          "normalizedTitle",
          "companyName",
          "companyKey",
          "company",
          "jobDescription",
          "employmentType",
          "workplaceType",
          "workSetting",
          "shift",
          "experienceLevel",
          "educationLevel",
          "salaryText",
          "salaryMin",
          "salaryMax",
          "salaryCurrency",
          "salaryPeriod",
          "posted",
          "applyStarts",
          "city",
          "state",
          "country",
          "postalCode",
          "streetAddress",
          "fullAddress",
          "latitude",
          "longitude",
          "skills",
          "certifications",
          "benefits",
          "eligibility",
          "physicalRequirements",
          "travel",
          "occupation",
          "occupationCategories",
          "sponsored",
          "urgentHire",
          "highVolumeHiring",
          "numberOfHires",
          "employerResponseRate",
          "employerAvgResponseTimeDays",
          "employerResponsive",
          "sourceName",
          "sourceType",
          "language",
          "details"
        ],
        "properties": {
          "jobId": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "applyUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "normalizedTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyName": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyKey": {
            "type": [
              "string",
              "null"
            ]
          },
          "company": {},
          "jobDescription": {
            "type": [
              "string",
              "null"
            ]
          },
          "employmentType": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "workplaceType": {
            "type": [
              "string",
              "null"
            ]
          },
          "workSetting": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "shift": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "experienceLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "educationLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "salaryText": {
            "type": [
              "string",
              "null"
            ]
          },
          "salaryMin": {
            "type": [
              "number",
              "null"
            ]
          },
          "salaryMax": {
            "type": [
              "number",
              "null"
            ]
          },
          "salaryCurrency": {
            "type": [
              "string",
              "null"
            ]
          },
          "salaryPeriod": {
            "type": [
              "string",
              "null"
            ]
          },
          "posted": {
            "type": [
              "string",
              "null"
            ]
          },
          "applyStarts": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "postalCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "streetAddress": {
            "type": [
              "string",
              "null"
            ]
          },
          "fullAddress": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "certifications": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "benefits": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "eligibility": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "physicalRequirements": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "travel": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "occupation": {
            "type": [
              "string",
              "null"
            ]
          },
          "occupationCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sponsored": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "urgentHire": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "highVolumeHiring": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "numberOfHires": {
            "type": [
              "string",
              "null"
            ]
          },
          "employerResponseRate": {
            "type": [
              "number",
              "null"
            ]
          },
          "employerAvgResponseTimeDays": {
            "type": [
              "number",
              "null"
            ]
          },
          "employerResponsive": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "sourceName": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourceType": {
            "type": [
              "string",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_naukri_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "jobId",
          "jobUrl",
          "applyUrl",
          "jobTitle",
          "company",
          "companyId",
          "companyDetails",
          "hiringFor",
          "location",
          "description",
          "requirementsSummary",
          "skills",
          "role",
          "roleCategory",
          "department",
          "industry",
          "jobType",
          "workplaceType",
          "hybridDetail",
          "minExperienceYrs",
          "maxExperienceYrs",
          "salaryMin",
          "salaryMax",
          "benchmarkMinCtcLakhs",
          "benchmarkAvgCtcLakhs",
          "benchmarkMaxCtcLakhs",
          "benchmarkRole",
          "benchmarkSalariesUrl",
          "educationUg",
          "educationPg",
          "posted",
          "applicants",
          "views",
          "vacancies",
          "appliesOnCompanySite",
          "postedByConsultant",
          "listingSource",
          "referenceCode",
          "hasQuestionnaire",
          "walkInJob",
          "walkInStart",
          "walkInEnd",
          "walkInVenue",
          "walkInTiming",
          "walkInContact",
          "walkInPhone",
          "internshipDuration",
          "diversityTags",
          "benefits",
          "employeeReviews",
          "details"
        ],
        "properties": {
          "jobId": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "applyUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "company": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyId": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyDetails": {},
          "hiringFor": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "requirementsSummary": {
            "type": [
              "string",
              "null"
            ]
          },
          "skills": {
            "type": [
              "string",
              "null"
            ]
          },
          "role": {
            "type": [
              "string",
              "null"
            ]
          },
          "roleCategory": {
            "type": [
              "string",
              "null"
            ]
          },
          "department": {
            "type": [
              "string",
              "null"
            ]
          },
          "industry": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobType": {
            "type": [
              "string",
              "null"
            ]
          },
          "workplaceType": {
            "type": [
              "string",
              "null"
            ]
          },
          "hybridDetail": {
            "type": [
              "string",
              "null"
            ]
          },
          "minExperienceYrs": {
            "type": [
              "integer",
              "null"
            ]
          },
          "maxExperienceYrs": {
            "type": [
              "integer",
              "null"
            ]
          },
          "salaryMin": {
            "type": [
              "number",
              "null"
            ]
          },
          "salaryMax": {
            "type": [
              "number",
              "null"
            ]
          },
          "benchmarkMinCtcLakhs": {
            "type": [
              "number",
              "null"
            ]
          },
          "benchmarkAvgCtcLakhs": {
            "type": [
              "number",
              "null"
            ]
          },
          "benchmarkMaxCtcLakhs": {
            "type": [
              "number",
              "null"
            ]
          },
          "benchmarkRole": {
            "type": [
              "string",
              "null"
            ]
          },
          "benchmarkSalariesUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "educationUg": {
            "type": [
              "string",
              "null"
            ]
          },
          "educationPg": {
            "type": [
              "string",
              "null"
            ]
          },
          "posted": {
            "type": [
              "string",
              "null"
            ]
          },
          "applicants": {
            "type": [
              "integer",
              "null"
            ]
          },
          "views": {
            "type": [
              "integer",
              "null"
            ]
          },
          "vacancies": {
            "type": [
              "integer",
              "null"
            ]
          },
          "appliesOnCompanySite": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "postedByConsultant": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "listingSource": {
            "type": [
              "string",
              "null"
            ]
          },
          "referenceCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "hasQuestionnaire": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "walkInJob": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "walkInStart": {
            "type": [
              "string",
              "null"
            ]
          },
          "walkInEnd": {
            "type": [
              "string",
              "null"
            ]
          },
          "walkInVenue": {
            "type": [
              "string",
              "null"
            ]
          },
          "walkInTiming": {
            "type": [
              "string",
              "null"
            ]
          },
          "walkInContact": {
            "type": [
              "string",
              "null"
            ]
          },
          "walkInPhone": {
            "type": [
              "string",
              "null"
            ]
          },
          "internshipDuration": {
            "type": [
              "string",
              "null"
            ]
          },
          "diversityTags": {
            "type": [
              "string",
              "null"
            ]
          },
          "benefits": {
            "type": [
              "string",
              "null"
            ]
          },
          "employeeReviews": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_upwork_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "jobId",
          "jobUrl",
          "jobTitle",
          "jobDescription",
          "posted",
          "deadline",
          "jobType",
          "projectType",
          "projectLength",
          "weeklyWorkload",
          "hourlyRateMin",
          "hourlyRateMax",
          "fixedBudget",
          "hourlyBudgetSource",
          "experienceLevel",
          "englishLevel",
          "skills",
          "skillGroups",
          "category",
          "categoryGroup",
          "occupation",
          "applicants",
          "interviewing",
          "invitesSent",
          "unansweredInvites",
          "hired",
          "positionsToHire",
          "jobStatus",
          "jobAccess",
          "contractToHire",
          "featuredJob",
          "localMarketJob",
          "locationCheckRequired",
          "risingTalentOk",
          "minJobSuccessScore",
          "freelancerType",
          "requiredCountries",
          "requiredRegions",
          "requiredTimezones",
          "requiredLanguages",
          "client",
          "clientOtherOpenPostings",
          "similarJobs",
          "resultRank",
          "details"
        ],
        "properties": {
          "jobId": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobDescription": {
            "type": [
              "string",
              "null"
            ]
          },
          "posted": {
            "type": [
              "string",
              "null"
            ]
          },
          "deadline": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobType": {
            "type": [
              "string",
              "null"
            ]
          },
          "projectType": {
            "type": [
              "string",
              "null"
            ]
          },
          "projectLength": {
            "type": [
              "string",
              "null"
            ]
          },
          "weeklyWorkload": {
            "type": [
              "string",
              "null"
            ]
          },
          "hourlyRateMin": {
            "type": [
              "number",
              "null"
            ]
          },
          "hourlyRateMax": {
            "type": [
              "number",
              "null"
            ]
          },
          "fixedBudget": {
            "type": [
              "number",
              "null"
            ]
          },
          "hourlyBudgetSource": {
            "type": [
              "string",
              "null"
            ]
          },
          "experienceLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "englishLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "skills": {},
          "skillGroups": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryGroup": {
            "type": [
              "string",
              "null"
            ]
          },
          "occupation": {
            "type": [
              "string",
              "null"
            ]
          },
          "applicants": {
            "type": [
              "integer",
              "null"
            ]
          },
          "interviewing": {
            "type": [
              "integer",
              "null"
            ]
          },
          "invitesSent": {
            "type": [
              "integer",
              "null"
            ]
          },
          "unansweredInvites": {
            "type": [
              "integer",
              "null"
            ]
          },
          "hired": {
            "type": [
              "integer",
              "null"
            ]
          },
          "positionsToHire": {
            "type": [
              "integer",
              "null"
            ]
          },
          "jobStatus": {
            "type": [
              "string",
              "null"
            ]
          },
          "jobAccess": {
            "type": [
              "string",
              "null"
            ]
          },
          "contractToHire": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "featuredJob": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "localMarketJob": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "locationCheckRequired": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "risingTalentOk": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "minJobSuccessScore": {
            "type": [
              "number",
              "null"
            ]
          },
          "freelancerType": {
            "type": [
              "string",
              "null"
            ]
          },
          "requiredCountries": {
            "type": [
              "string",
              "null"
            ]
          },
          "requiredRegions": {
            "type": [
              "string",
              "null"
            ]
          },
          "requiredTimezones": {
            "type": [
              "string",
              "null"
            ]
          },
          "requiredLanguages": {
            "type": [
              "string",
              "null"
            ]
          },
          "client": {},
          "clientOtherOpenPostings": {},
          "similarJobs": {},
          "resultRank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_contacts_reveal": {
        "type": "object",
        "description": "One row of reveal. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "publicId",
          "profileUrl",
          "name",
          "title",
          "company",
          "emails",
          "phones",
          "firstName",
          "lastName",
          "headline",
          "location",
          "currentCompany",
          "experience",
          "education",
          "skills",
          "languages",
          "linkedinUrl",
          "details"
        ],
        "properties": {
          "publicId": {
            "type": [
              "string",
              "null"
            ]
          },
          "profileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "company": {
            "type": [
              "string",
              "null"
            ]
          },
          "emails": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "phones": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "firstName": {
            "type": [
              "string",
              "null"
            ]
          },
          "lastName": {
            "type": [
              "string",
              "null"
            ]
          },
          "headline": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "object",
              "null"
            ]
          },
          "currentCompany": {
            "type": [
              "object",
              "null"
            ]
          },
          "experience": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "education": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "linkedinUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_google_maps_places": {
        "type": "object",
        "description": "One row of places. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "placeId",
          "placeUrl",
          "businessName",
          "category",
          "allCategories",
          "categoryId",
          "placeTags",
          "rating",
          "reviews",
          "reviewBreakdown",
          "reviewKeywords",
          "reviewsUrl",
          "priceRange",
          "phone",
          "formattedPhone",
          "website",
          "emails",
          "additionalPhones",
          "socials",
          "directoryProfiles",
          "address",
          "neighborhood",
          "city",
          "state",
          "postalCode",
          "country",
          "street",
          "latitude",
          "longitude",
          "plusCode",
          "locatedIn",
          "floor",
          "permanentlyClosed",
          "temporarilyClosed",
          "unclaimed",
          "owner",
          "description",
          "attributes",
          "openingHours",
          "specialHours",
          "popularTimes",
          "liveOccupancyPercent",
          "liveStatus",
          "coverPhoto",
          "photos",
          "photoCount",
          "relatedPlaces",
          "ownerPosts",
          "menuUrl",
          "reserveTableUrl",
          "reservationLinks",
          "entranceLocation",
          "hotelAds",
          "similarHotels",
          "hotelType",
          "hotelDescription",
          "subTitle",
          "cid",
          "fid",
          "kgmid",
          "isAdvertisement",
          "language",
          "details"
        ],
        "properties": {
          "placeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "placeUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessName": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "allCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "categoryId": {
            "type": [
              "string",
              "null"
            ]
          },
          "placeTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reviewBreakdown": {},
          "reviewKeywords": {},
          "reviewsUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceRange": {
            "type": [
              "string",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "formattedPhone": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "emails": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "additionalPhones": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "socials": {},
          "directoryProfiles": {},
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "neighborhood": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "postalCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "street": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "plusCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "locatedIn": {
            "type": [
              "string",
              "null"
            ]
          },
          "floor": {
            "type": [
              "string",
              "null"
            ]
          },
          "permanentlyClosed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "temporarilyClosed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unclaimed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "owner": {},
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "attributes": {},
          "openingHours": {},
          "specialHours": {},
          "popularTimes": {},
          "liveOccupancyPercent": {
            "type": [
              "integer",
              "null"
            ]
          },
          "liveStatus": {
            "type": [
              "string",
              "null"
            ]
          },
          "coverPhoto": {
            "type": [
              "string",
              "null"
            ]
          },
          "photos": {},
          "photoCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "relatedPlaces": {},
          "ownerPosts": {},
          "menuUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reserveTableUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reservationLinks": {},
          "entranceLocation": {},
          "hotelAds": {},
          "similarHotels": {},
          "hotelType": {
            "type": [
              "string",
              "null"
            ]
          },
          "hotelDescription": {
            "type": [
              "string",
              "null"
            ]
          },
          "subTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "cid": {
            "type": [
              "string",
              "null"
            ]
          },
          "fid": {
            "type": [
              "string",
              "null"
            ]
          },
          "kgmid": {
            "type": [
              "string",
              "null"
            ]
          },
          "isAdvertisement": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_google_maps_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "placeId",
          "placeUrl",
          "businessName",
          "category",
          "allCategories",
          "categoryId",
          "placeTags",
          "rating",
          "reviews",
          "reviewBreakdown",
          "reviewKeywords",
          "reviewsUrl",
          "priceRange",
          "phone",
          "formattedPhone",
          "website",
          "emails",
          "additionalPhones",
          "socials",
          "directoryProfiles",
          "address",
          "neighborhood",
          "city",
          "state",
          "postalCode",
          "country",
          "street",
          "latitude",
          "longitude",
          "plusCode",
          "locatedIn",
          "floor",
          "permanentlyClosed",
          "temporarilyClosed",
          "unclaimed",
          "owner",
          "description",
          "attributes",
          "openingHours",
          "specialHours",
          "popularTimes",
          "liveOccupancyPercent",
          "liveStatus",
          "coverPhoto",
          "photos",
          "photoCount",
          "relatedPlaces",
          "ownerPosts",
          "menuUrl",
          "reserveTableUrl",
          "reservationLinks",
          "entranceLocation",
          "hotelAds",
          "similarHotels",
          "hotelType",
          "hotelDescription",
          "subTitle",
          "cid",
          "fid",
          "kgmid",
          "isAdvertisement",
          "language",
          "details"
        ],
        "properties": {
          "placeId": {
            "type": [
              "string",
              "null"
            ]
          },
          "placeUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessName": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "allCategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "categoryId": {
            "type": [
              "string",
              "null"
            ]
          },
          "placeTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reviewBreakdown": {},
          "reviewKeywords": {},
          "reviewsUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceRange": {
            "type": [
              "string",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "formattedPhone": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "emails": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "additionalPhones": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "socials": {},
          "directoryProfiles": {},
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "neighborhood": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "postalCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "street": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "plusCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "locatedIn": {
            "type": [
              "string",
              "null"
            ]
          },
          "floor": {
            "type": [
              "string",
              "null"
            ]
          },
          "permanentlyClosed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "temporarilyClosed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unclaimed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "owner": {},
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "attributes": {},
          "openingHours": {},
          "specialHours": {},
          "popularTimes": {},
          "liveOccupancyPercent": {
            "type": [
              "integer",
              "null"
            ]
          },
          "liveStatus": {
            "type": [
              "string",
              "null"
            ]
          },
          "coverPhoto": {
            "type": [
              "string",
              "null"
            ]
          },
          "photos": {},
          "photoCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "relatedPlaces": {},
          "ownerPosts": {},
          "menuUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reserveTableUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reservationLinks": {},
          "entranceLocation": {},
          "hotelAds": {},
          "similarHotels": {},
          "hotelType": {
            "type": [
              "string",
              "null"
            ]
          },
          "hotelDescription": {
            "type": [
              "string",
              "null"
            ]
          },
          "subTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "cid": {
            "type": [
              "string",
              "null"
            ]
          },
          "fid": {
            "type": [
              "string",
              "null"
            ]
          },
          "kgmid": {
            "type": [
              "string",
              "null"
            ]
          },
          "isAdvertisement": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_google_maps_reviews": {
        "type": "object",
        "description": "One row of reviews. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reviewId",
          "reviewUrl",
          "reviewText",
          "stars",
          "postedAt",
          "reviewer",
          "reviewerId",
          "reviewerUrl",
          "reviewerPhoto",
          "reviewerTotalReviews",
          "localGuide",
          "reviewLikes",
          "originalLanguage",
          "translatedLanguage",
          "translatedText",
          "ownerResponse",
          "ownerResponseDate",
          "reviewContext",
          "reviewImageUrls",
          "details"
        ],
        "properties": {
          "reviewId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewText": {
            "type": [
              "string",
              "null"
            ]
          },
          "stars": {
            "type": [
              "number",
              "null"
            ]
          },
          "postedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewer": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerPhoto": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerTotalReviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "localGuide": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "reviewLikes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "originalLanguage": {
            "type": [
              "string",
              "null"
            ]
          },
          "translatedLanguage": {
            "type": [
              "string",
              "null"
            ]
          },
          "translatedText": {
            "type": [
              "string",
              "null"
            ]
          },
          "ownerResponse": {
            "type": [
              "string",
              "null"
            ]
          },
          "ownerResponseDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewContext": {},
          "reviewImageUrls": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_yelp_businesses": {
        "type": "object",
        "description": "One row of businesses. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "businessSlug",
          "businessName",
          "businessUrl",
          "address",
          "city",
          "state",
          "neighborhoods",
          "latitude",
          "longitude",
          "phone",
          "website",
          "menuUrl",
          "rating",
          "totalReviews",
          "starBreakdown",
          "reviewInsights",
          "reviewHighlights",
          "popularDishes",
          "attributes",
          "specialties",
          "summary",
          "yearEstablished",
          "history",
          "photos",
          "healthInspections",
          "hoursToday",
          "qaCount",
          "qaContent",
          "details"
        ],
        "properties": {
          "businessSlug": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessName": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {},
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "neighborhoods": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "menuUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "totalReviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "starBreakdown": {},
          "reviewInsights": {},
          "reviewHighlights": {},
          "popularDishes": {},
          "attributes": {},
          "specialties": {
            "type": [
              "string",
              "null"
            ]
          },
          "summary": {
            "type": [
              "string",
              "null"
            ]
          },
          "yearEstablished": {
            "type": [
              "integer",
              "null"
            ]
          },
          "history": {
            "type": [
              "string",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "healthInspections": {},
          "hoursToday": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "qaCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "qaContent": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_yelp_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "businessSlug",
          "businessName",
          "businessUrl",
          "address",
          "city",
          "state",
          "neighborhoods",
          "latitude",
          "longitude",
          "phone",
          "website",
          "menuUrl",
          "rating",
          "totalReviews",
          "starBreakdown",
          "reviewInsights",
          "reviewHighlights",
          "popularDishes",
          "attributes",
          "specialties",
          "summary",
          "yearEstablished",
          "history",
          "photos",
          "healthInspections",
          "hoursToday",
          "qaCount",
          "qaContent",
          "details"
        ],
        "properties": {
          "businessSlug": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessName": {
            "type": [
              "string",
              "null"
            ]
          },
          "businessUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {},
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "neighborhoods": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "menuUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "totalReviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "starBreakdown": {},
          "reviewInsights": {},
          "reviewHighlights": {},
          "popularDishes": {},
          "attributes": {},
          "specialties": {
            "type": [
              "string",
              "null"
            ]
          },
          "summary": {
            "type": [
              "string",
              "null"
            ]
          },
          "yearEstablished": {
            "type": [
              "integer",
              "null"
            ]
          },
          "history": {
            "type": [
              "string",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "healthInspections": {},
          "hoursToday": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "qaCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "qaContent": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_yelp_reviews": {
        "type": "object",
        "description": "One row of reviews. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reviewId",
          "rating",
          "reviewText",
          "reviewDate",
          "reviewUrl",
          "language",
          "translatedText",
          "publicReply",
          "photos",
          "photoCaption",
          "videos",
          "totalReactions",
          "reactions",
          "firstReviewer",
          "reviewer",
          "reviewerName",
          "details"
        ],
        "properties": {
          "reviewId": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviewText": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "translatedText": {
            "type": [
              "string",
              "null"
            ]
          },
          "publicReply": {
            "type": [
              "string",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "photoCaption": {},
          "videos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "totalReactions": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reactions": {},
          "firstReviewer": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "reviewer": {},
          "reviewerName": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tripadvisor_hotels": {
        "type": "object",
        "description": "One row of hotels. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "taId",
          "kind",
          "name",
          "tripadvisorUrl",
          "description",
          "address",
          "city",
          "country",
          "latitude",
          "longitude",
          "phone",
          "email",
          "website",
          "rating",
          "reviews",
          "ratingBreakdown",
          "reviewTags",
          "rank",
          "rankOutOf",
          "photos",
          "photoCount",
          "subcategories",
          "hotelClass",
          "rooms",
          "priceRange",
          "priceLevel",
          "amenities",
          "hotelOffers",
          "roomTips",
          "categoryRatingBreakdown",
          "nearbyTransit",
          "cuisines",
          "mealTypes",
          "dietaryRestrictions",
          "establishmentTypes",
          "features",
          "popularDishes",
          "menuUrl",
          "openingHours",
          "timezone",
          "neighborhood",
          "closed",
          "orderOnline",
          "categoryRatings",
          "attractionTypes",
          "ticketOffers",
          "lowestTicketPrice",
          "bookingUrl",
          "nearestMetroStations",
          "details"
        ],
        "properties": {
          "taId": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "tripadvisorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {},
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ratingBreakdown": {},
          "reviewTags": {},
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rankOutOf": {
            "type": [
              "integer",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "photoCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "subcategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelClass": {
            "type": [
              "string",
              "null"
            ]
          },
          "rooms": {
            "type": [
              "integer",
              "null"
            ]
          },
          "priceRange": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelOffers": {},
          "roomTips": {},
          "categoryRatingBreakdown": {},
          "nearbyTransit": {},
          "cuisines": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mealTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "dietaryRestrictions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "establishmentTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "features": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "popularDishes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "menuUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "openingHours": {},
          "timezone": {
            "type": [
              "string",
              "null"
            ]
          },
          "neighborhood": {},
          "closed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "orderOnline": {},
          "categoryRatings": {},
          "attractionTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ticketOffers": {},
          "lowestTicketPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "bookingUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "nearestMetroStations": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tripadvisor_restaurants": {
        "type": "object",
        "description": "One row of restaurants. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "taId",
          "kind",
          "name",
          "tripadvisorUrl",
          "description",
          "address",
          "city",
          "country",
          "latitude",
          "longitude",
          "phone",
          "email",
          "website",
          "rating",
          "reviews",
          "ratingBreakdown",
          "reviewTags",
          "rank",
          "rankOutOf",
          "photos",
          "photoCount",
          "subcategories",
          "hotelClass",
          "rooms",
          "priceRange",
          "priceLevel",
          "amenities",
          "hotelOffers",
          "roomTips",
          "categoryRatingBreakdown",
          "nearbyTransit",
          "cuisines",
          "mealTypes",
          "dietaryRestrictions",
          "establishmentTypes",
          "features",
          "popularDishes",
          "menuUrl",
          "openingHours",
          "timezone",
          "neighborhood",
          "closed",
          "orderOnline",
          "categoryRatings",
          "attractionTypes",
          "ticketOffers",
          "lowestTicketPrice",
          "bookingUrl",
          "nearestMetroStations",
          "details"
        ],
        "properties": {
          "taId": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "tripadvisorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {},
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ratingBreakdown": {},
          "reviewTags": {},
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rankOutOf": {
            "type": [
              "integer",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "photoCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "subcategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelClass": {
            "type": [
              "string",
              "null"
            ]
          },
          "rooms": {
            "type": [
              "integer",
              "null"
            ]
          },
          "priceRange": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelOffers": {},
          "roomTips": {},
          "categoryRatingBreakdown": {},
          "nearbyTransit": {},
          "cuisines": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mealTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "dietaryRestrictions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "establishmentTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "features": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "popularDishes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "menuUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "openingHours": {},
          "timezone": {
            "type": [
              "string",
              "null"
            ]
          },
          "neighborhood": {},
          "closed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "orderOnline": {},
          "categoryRatings": {},
          "attractionTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ticketOffers": {},
          "lowestTicketPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "bookingUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "nearestMetroStations": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tripadvisor_attractions": {
        "type": "object",
        "description": "One row of attractions. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "taId",
          "kind",
          "name",
          "tripadvisorUrl",
          "description",
          "address",
          "city",
          "country",
          "latitude",
          "longitude",
          "phone",
          "email",
          "website",
          "rating",
          "reviews",
          "ratingBreakdown",
          "reviewTags",
          "rank",
          "rankOutOf",
          "photos",
          "photoCount",
          "subcategories",
          "hotelClass",
          "rooms",
          "priceRange",
          "priceLevel",
          "amenities",
          "hotelOffers",
          "roomTips",
          "categoryRatingBreakdown",
          "nearbyTransit",
          "cuisines",
          "mealTypes",
          "dietaryRestrictions",
          "establishmentTypes",
          "features",
          "popularDishes",
          "menuUrl",
          "openingHours",
          "timezone",
          "neighborhood",
          "closed",
          "orderOnline",
          "categoryRatings",
          "attractionTypes",
          "ticketOffers",
          "lowestTicketPrice",
          "bookingUrl",
          "nearestMetroStations",
          "details"
        ],
        "properties": {
          "taId": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "tripadvisorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {},
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ratingBreakdown": {},
          "reviewTags": {},
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rankOutOf": {
            "type": [
              "integer",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "photoCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "subcategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelClass": {
            "type": [
              "string",
              "null"
            ]
          },
          "rooms": {
            "type": [
              "integer",
              "null"
            ]
          },
          "priceRange": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelOffers": {},
          "roomTips": {},
          "categoryRatingBreakdown": {},
          "nearbyTransit": {},
          "cuisines": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mealTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "dietaryRestrictions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "establishmentTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "features": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "popularDishes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "menuUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "openingHours": {},
          "timezone": {
            "type": [
              "string",
              "null"
            ]
          },
          "neighborhood": {},
          "closed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "orderOnline": {},
          "categoryRatings": {},
          "attractionTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ticketOffers": {},
          "lowestTicketPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "bookingUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "nearestMetroStations": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tripadvisor_searchHotels": {
        "type": "object",
        "description": "One row of searchHotels. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "taId",
          "kind",
          "name",
          "tripadvisorUrl",
          "description",
          "address",
          "city",
          "country",
          "latitude",
          "longitude",
          "phone",
          "email",
          "website",
          "rating",
          "reviews",
          "ratingBreakdown",
          "reviewTags",
          "rank",
          "rankOutOf",
          "photos",
          "photoCount",
          "subcategories",
          "hotelClass",
          "rooms",
          "priceRange",
          "priceLevel",
          "amenities",
          "hotelOffers",
          "roomTips",
          "categoryRatingBreakdown",
          "nearbyTransit",
          "cuisines",
          "mealTypes",
          "dietaryRestrictions",
          "establishmentTypes",
          "features",
          "popularDishes",
          "menuUrl",
          "openingHours",
          "timezone",
          "neighborhood",
          "closed",
          "orderOnline",
          "categoryRatings",
          "attractionTypes",
          "ticketOffers",
          "lowestTicketPrice",
          "bookingUrl",
          "nearestMetroStations",
          "details"
        ],
        "properties": {
          "taId": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "tripadvisorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {},
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ratingBreakdown": {},
          "reviewTags": {},
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rankOutOf": {
            "type": [
              "integer",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "photoCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "subcategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelClass": {
            "type": [
              "string",
              "null"
            ]
          },
          "rooms": {
            "type": [
              "integer",
              "null"
            ]
          },
          "priceRange": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelOffers": {},
          "roomTips": {},
          "categoryRatingBreakdown": {},
          "nearbyTransit": {},
          "cuisines": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mealTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "dietaryRestrictions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "establishmentTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "features": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "popularDishes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "menuUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "openingHours": {},
          "timezone": {
            "type": [
              "string",
              "null"
            ]
          },
          "neighborhood": {},
          "closed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "orderOnline": {},
          "categoryRatings": {},
          "attractionTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ticketOffers": {},
          "lowestTicketPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "bookingUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "nearestMetroStations": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tripadvisor_searchRestaurants": {
        "type": "object",
        "description": "One row of searchRestaurants. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "taId",
          "kind",
          "name",
          "tripadvisorUrl",
          "description",
          "address",
          "city",
          "country",
          "latitude",
          "longitude",
          "phone",
          "email",
          "website",
          "rating",
          "reviews",
          "ratingBreakdown",
          "reviewTags",
          "rank",
          "rankOutOf",
          "photos",
          "photoCount",
          "subcategories",
          "hotelClass",
          "rooms",
          "priceRange",
          "priceLevel",
          "amenities",
          "hotelOffers",
          "roomTips",
          "categoryRatingBreakdown",
          "nearbyTransit",
          "cuisines",
          "mealTypes",
          "dietaryRestrictions",
          "establishmentTypes",
          "features",
          "popularDishes",
          "menuUrl",
          "openingHours",
          "timezone",
          "neighborhood",
          "closed",
          "orderOnline",
          "categoryRatings",
          "attractionTypes",
          "ticketOffers",
          "lowestTicketPrice",
          "bookingUrl",
          "nearestMetroStations",
          "details"
        ],
        "properties": {
          "taId": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "tripadvisorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {},
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ratingBreakdown": {},
          "reviewTags": {},
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rankOutOf": {
            "type": [
              "integer",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "photoCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "subcategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelClass": {
            "type": [
              "string",
              "null"
            ]
          },
          "rooms": {
            "type": [
              "integer",
              "null"
            ]
          },
          "priceRange": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelOffers": {},
          "roomTips": {},
          "categoryRatingBreakdown": {},
          "nearbyTransit": {},
          "cuisines": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mealTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "dietaryRestrictions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "establishmentTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "features": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "popularDishes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "menuUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "openingHours": {},
          "timezone": {
            "type": [
              "string",
              "null"
            ]
          },
          "neighborhood": {},
          "closed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "orderOnline": {},
          "categoryRatings": {},
          "attractionTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ticketOffers": {},
          "lowestTicketPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "bookingUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "nearestMetroStations": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tripadvisor_searchAttractions": {
        "type": "object",
        "description": "One row of searchAttractions. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "taId",
          "kind",
          "name",
          "tripadvisorUrl",
          "description",
          "address",
          "city",
          "country",
          "latitude",
          "longitude",
          "phone",
          "email",
          "website",
          "rating",
          "reviews",
          "ratingBreakdown",
          "reviewTags",
          "rank",
          "rankOutOf",
          "photos",
          "photoCount",
          "subcategories",
          "hotelClass",
          "rooms",
          "priceRange",
          "priceLevel",
          "amenities",
          "hotelOffers",
          "roomTips",
          "categoryRatingBreakdown",
          "nearbyTransit",
          "cuisines",
          "mealTypes",
          "dietaryRestrictions",
          "establishmentTypes",
          "features",
          "popularDishes",
          "menuUrl",
          "openingHours",
          "timezone",
          "neighborhood",
          "closed",
          "orderOnline",
          "categoryRatings",
          "attractionTypes",
          "ticketOffers",
          "lowestTicketPrice",
          "bookingUrl",
          "nearestMetroStations",
          "details"
        ],
        "properties": {
          "taId": {
            "type": [
              "string",
              "null"
            ]
          },
          "kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "tripadvisorUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {},
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviews": {
            "type": [
              "integer",
              "null"
            ]
          },
          "ratingBreakdown": {},
          "reviewTags": {},
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rankOutOf": {
            "type": [
              "integer",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "photoCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "subcategories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelClass": {
            "type": [
              "string",
              "null"
            ]
          },
          "rooms": {
            "type": [
              "integer",
              "null"
            ]
          },
          "priceRange": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceLevel": {
            "type": [
              "string",
              "null"
            ]
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "hotelOffers": {},
          "roomTips": {},
          "categoryRatingBreakdown": {},
          "nearbyTransit": {},
          "cuisines": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mealTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "dietaryRestrictions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "establishmentTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "features": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "popularDishes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "menuUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "openingHours": {},
          "timezone": {
            "type": [
              "string",
              "null"
            ]
          },
          "neighborhood": {},
          "closed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "orderOnline": {},
          "categoryRatings": {},
          "attractionTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ticketOffers": {},
          "lowestTicketPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "bookingUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "nearestMetroStations": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_tripadvisor_reviews": {
        "type": "object",
        "description": "One row of reviews. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reviewId",
          "reviewUrl",
          "reviewTitle",
          "reviewText",
          "rating",
          "postedDate",
          "travelDate",
          "tripType",
          "language",
          "helpfulVotes",
          "subratings",
          "photos",
          "ownerResponse",
          "reviewerName",
          "reviewerProfile",
          "reviewerLocation",
          "reviewerContributions",
          "reviewerAvatar",
          "details"
        ],
        "properties": {
          "reviewId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewText": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "postedDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "travelDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "tripType": {
            "type": [
              "string",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "helpfulVotes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "subratings": {},
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ownerResponse": {},
          "reviewerName": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerProfile": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerLocation": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerContributions": {
            "type": [
              "integer",
              "null"
            ]
          },
          "reviewerAvatar": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_airbnb_listings": {
        "type": "object",
        "description": "One row of listings. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "listingId",
          "listingUrl",
          "title",
          "propertyType",
          "roomType",
          "capacity",
          "summaryDetails",
          "description",
          "location",
          "locationSubtitle",
          "locationPath",
          "latitude",
          "longitude",
          "neighborhoodNotes",
          "ratings",
          "ratingOverall",
          "reviewsCount",
          "highlights",
          "amenities",
          "houseRules",
          "cancellationPolicy",
          "available",
          "stay",
          "currency",
          "totalPriceText",
          "pricePerNightText",
          "baseSubtotalText",
          "priceQualifier",
          "totalPrice",
          "pricePerNight",
          "host",
          "hostName",
          "hostIsSuperhost",
          "coHosts",
          "images",
          "thumbnail",
          "details"
        ],
        "properties": {
          "listingId": {
            "type": [
              "string",
              "null"
            ]
          },
          "listingUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyType": {
            "type": [
              "string",
              "null"
            ]
          },
          "roomType": {
            "type": [
              "string",
              "null"
            ]
          },
          "capacity": {
            "type": [
              "integer",
              "null"
            ]
          },
          "summaryDetails": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "locationSubtitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "locationPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "neighborhoodNotes": {},
          "ratings": {},
          "ratingOverall": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviewsCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "highlights": {},
          "amenities": {},
          "houseRules": {},
          "cancellationPolicy": {
            "type": [
              "string",
              "null"
            ]
          },
          "available": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "stay": {
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "totalPriceText": {
            "type": [
              "string",
              "null"
            ]
          },
          "pricePerNightText": {
            "type": [
              "string",
              "null"
            ]
          },
          "baseSubtotalText": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceQualifier": {
            "type": [
              "string",
              "null"
            ]
          },
          "totalPrice": {
            "type": [
              "number",
              "null"
            ]
          },
          "pricePerNight": {
            "type": [
              "number",
              "null"
            ]
          },
          "host": {},
          "hostName": {
            "type": [
              "string",
              "null"
            ]
          },
          "hostIsSuperhost": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "coHosts": {},
          "images": {},
          "thumbnail": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_airbnb_reviews": {
        "type": "object",
        "description": "One row of reviews. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reviewId",
          "reviewText",
          "translatedText",
          "originalLanguage",
          "rating",
          "postedDate",
          "highlight",
          "highlightType",
          "hostResponse",
          "hostId",
          "hostName",
          "hostProfileUrl",
          "reviewerUserId",
          "reviewerName",
          "reviewerProfile",
          "reviewerAvatar",
          "reviewerLocation",
          "reviewerTenure",
          "details"
        ],
        "properties": {
          "reviewId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewText": {
            "type": [
              "string",
              "null"
            ]
          },
          "translatedText": {
            "type": [
              "string",
              "null"
            ]
          },
          "originalLanguage": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "postedDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "highlight": {
            "type": [
              "string",
              "null"
            ]
          },
          "highlightType": {
            "type": [
              "string",
              "null"
            ]
          },
          "hostResponse": {
            "type": [
              "string",
              "null"
            ]
          },
          "hostId": {
            "type": [
              "string",
              "null"
            ]
          },
          "hostName": {
            "type": [
              "string",
              "null"
            ]
          },
          "hostProfileUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerUserId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerName": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerProfile": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerAvatar": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerLocation": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerTenure": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_booking_properties": {
        "type": "object",
        "description": "One row of properties. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "propertySlug",
          "propertyId",
          "propertyUrl",
          "propertyName",
          "propertyType",
          "starRating",
          "city",
          "country",
          "fullAddress",
          "latitude",
          "longitude",
          "guestScore",
          "scoreLabel",
          "reviewCount",
          "categoryScores",
          "stay",
          "priceFrom",
          "currency",
          "rooms",
          "roomTypes",
          "mainImage",
          "images",
          "facilities",
          "description",
          "highlights",
          "checkInTime",
          "checkOutTime",
          "policies",
          "finePrint",
          "surroundings",
          "traderInfo",
          "licenseNumbers",
          "host",
          "mapUrl",
          "details"
        ],
        "properties": {
          "propertySlug": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyId": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyName": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyType": {
            "type": [
              "string",
              "null"
            ]
          },
          "starRating": {
            "type": [
              "number",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "fullAddress": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "guestScore": {
            "type": [
              "number",
              "null"
            ]
          },
          "scoreLabel": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "categoryScores": {},
          "stay": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceFrom": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "rooms": {},
          "roomTypes": {},
          "mainImage": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "facilities": {},
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "highlights": {},
          "checkInTime": {
            "type": [
              "string",
              "null"
            ]
          },
          "checkOutTime": {
            "type": [
              "string",
              "null"
            ]
          },
          "policies": {},
          "finePrint": {
            "type": [
              "string",
              "null"
            ]
          },
          "surroundings": {},
          "traderInfo": {},
          "licenseNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "host": {},
          "mapUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_booking_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "propertySlug",
          "propertyId",
          "propertyUrl",
          "propertyName",
          "propertyType",
          "starRating",
          "city",
          "country",
          "fullAddress",
          "latitude",
          "longitude",
          "guestScore",
          "scoreLabel",
          "reviewCount",
          "categoryScores",
          "stay",
          "priceFrom",
          "currency",
          "rooms",
          "roomTypes",
          "mainImage",
          "images",
          "facilities",
          "description",
          "highlights",
          "checkInTime",
          "checkOutTime",
          "policies",
          "finePrint",
          "surroundings",
          "traderInfo",
          "licenseNumbers",
          "host",
          "mapUrl",
          "details"
        ],
        "properties": {
          "propertySlug": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyId": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyName": {
            "type": [
              "string",
              "null"
            ]
          },
          "propertyType": {
            "type": [
              "string",
              "null"
            ]
          },
          "starRating": {
            "type": [
              "number",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          },
          "fullAddress": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "guestScore": {
            "type": [
              "number",
              "null"
            ]
          },
          "scoreLabel": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "categoryScores": {},
          "stay": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceFrom": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "rooms": {},
          "roomTypes": {},
          "mainImage": {
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "facilities": {},
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "highlights": {},
          "checkInTime": {
            "type": [
              "string",
              "null"
            ]
          },
          "checkOutTime": {
            "type": [
              "string",
              "null"
            ]
          },
          "policies": {},
          "finePrint": {
            "type": [
              "string",
              "null"
            ]
          },
          "surroundings": {},
          "traderInfo": {},
          "licenseNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "host": {},
          "mapUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_booking_reviews": {
        "type": "object",
        "description": "One row of reviews. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reviewId",
          "reviewTitle",
          "liked",
          "disliked",
          "rating",
          "postedDate",
          "language",
          "travelerType",
          "room",
          "checkIn",
          "checkOut",
          "helpfulVotes",
          "photos",
          "propertyResponse",
          "reviewerName",
          "reviewerLocation",
          "reviewerAvatar",
          "details"
        ],
        "properties": {
          "reviewId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewTitle": {
            "type": [
              "string",
              "null"
            ]
          },
          "liked": {
            "type": [
              "string",
              "null"
            ]
          },
          "disliked": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "postedDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "language": {
            "type": [
              "string",
              "null"
            ]
          },
          "travelerType": {
            "type": [
              "string",
              "null"
            ]
          },
          "room": {
            "type": [
              "string",
              "null"
            ]
          },
          "checkIn": {
            "type": [
              "string",
              "null"
            ]
          },
          "checkOut": {
            "type": [
              "string",
              "null"
            ]
          },
          "helpfulVotes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "propertyResponse": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerName": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerLocation": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerAvatar": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_google_search": {
        "type": "object",
        "description": "One row of search. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "link",
          "title",
          "snippet",
          "domain",
          "source",
          "publishedDate",
          "rank",
          "relatedQuestions",
          "relatedSearches",
          "aiAnswer",
          "aiAnswerSources",
          "details"
        ],
        "properties": {
          "link": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "snippet": {
            "type": [
              "string",
              "null"
            ]
          },
          "domain": {
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "type": [
              "string",
              "null"
            ]
          },
          "publishedDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "rank": {
            "type": [
              "integer",
              "null"
            ]
          },
          "relatedQuestions": {},
          "relatedSearches": {},
          "aiAnswer": {
            "type": [
              "string",
              "null"
            ]
          },
          "aiAnswerSources": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_google_news": {
        "type": "object",
        "description": "One row of news. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "articleUrl",
          "title",
          "source",
          "publishedAt",
          "publishedTimestamp",
          "imageUrl",
          "details"
        ],
        "properties": {
          "articleUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "type": [
              "string",
              "null"
            ]
          },
          "publishedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "publishedTimestamp": {
            "type": [
              "integer",
              "null"
            ]
          },
          "imageUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_google_images": {
        "type": "object",
        "description": "One row of images. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "imageUrl",
          "title",
          "sourceDomain",
          "sourcePageUrl",
          "thumbnailUrl",
          "imageType",
          "imageWidth",
          "imageHeight",
          "megapixels",
          "orientation",
          "details"
        ],
        "properties": {
          "imageUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourceDomain": {
            "type": [
              "string",
              "null"
            ]
          },
          "sourcePageUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "thumbnailUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "imageType": {
            "type": [
              "string",
              "null"
            ]
          },
          "imageWidth": {
            "type": [
              "integer",
              "null"
            ]
          },
          "imageHeight": {
            "type": [
              "integer",
              "null"
            ]
          },
          "megapixels": {
            "type": [
              "number",
              "null"
            ]
          },
          "orientation": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_google_shopping": {
        "type": "object",
        "description": "One row of shopping. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "productId",
          "productUrl",
          "title",
          "merchant",
          "price",
          "priceValue",
          "rating",
          "reviewCount",
          "position",
          "image",
          "details"
        ],
        "properties": {
          "productId": {
            "type": [
              "string",
              "null"
            ]
          },
          "productUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "merchant": {
            "type": [
              "string",
              "null"
            ]
          },
          "price": {
            "type": [
              "string",
              "null"
            ]
          },
          "priceValue": {
            "type": [
              "number",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviewCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "position": {
            "type": [
              "integer",
              "null"
            ]
          },
          "image": {
            "type": [
              "string",
              "null"
            ]
          },
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      },
      "Row_google_playReviews": {
        "type": "object",
        "description": "One row of playReviews. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.",
        "required": [
          "reviewId",
          "reviewUrl",
          "reviewer",
          "reviewerPhoto",
          "rating",
          "reviewText",
          "posted",
          "appVersion",
          "helpfulVotes",
          "developerReply",
          "replyDate",
          "subratings",
          "details"
        ],
        "properties": {
          "reviewId": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewer": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewerPhoto": {
            "type": [
              "string",
              "null"
            ]
          },
          "rating": {
            "type": [
              "number",
              "null"
            ]
          },
          "reviewText": {
            "type": [
              "string",
              "null"
            ]
          },
          "posted": {
            "type": [
              "string",
              "null"
            ]
          },
          "appVersion": {
            "type": [
              "string",
              "null"
            ]
          },
          "helpfulVotes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "developerReply": {
            "type": [
              "string",
              "null"
            ]
          },
          "replyDate": {
            "type": [
              "string",
              "null"
            ]
          },
          "subratings": {},
          "details": {
            "type": "object",
            "description": "Everything else the source sent, under our field names. {} when empty."
          }
        }
      }
    }
  },
  "paths": {
    "/agent/identity": {
      "post": {
        "operationId": "registerAgent",
        "summary": "An agent signs itself up: no login, no card. Returns an identity with $0.10 of free credit.",
        "description": "The auth.md protocol (https://apiforagents.dev/auth.md). Keep identity_assertion: exchange it at /oauth2/token for a bearer token whenever one expires. Register once, not per call.",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "anonymous",
                      "service_auth"
                    ]
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "service_auth only: the person who will claim this agent."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Registered",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "registration_id": {
                      "type": "string"
                    },
                    "registration_type": {
                      "type": "string"
                    },
                    "identity_assertion": {
                      "type": "string",
                      "description": "A signed JWT: the agent's long-lived identity."
                    },
                    "claim_token": {
                      "type": "string",
                      "description": "Keep secret; used to let a person claim this agent."
                    },
                    "trial": {
                      "type": "object",
                      "properties": {
                        "usd": {
                          "type": "number"
                        },
                        "calls": {
                          "type": "integer"
                        },
                        "note": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "One anonymous registration per address per hour.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/oauth2/token": {
      "post": {
        "operationId": "exchangeToken",
        "summary": "Exchange the identity_assertion for a bearer access token (RFC 7523 jwt-bearer).",
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "required": [
                  "grant_type",
                  "assertion"
                ],
                "properties": {
                  "grant_type": {
                    "type": "string",
                    "const": "urn:ietf:params:oauth:grant-type:jwt-bearer"
                  },
                  "assertion": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A bearer token",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "access_token": {
                      "type": "string"
                    },
                    "token_type": {
                      "type": "string"
                    },
                    "expires_in": {
                      "type": "integer"
                    },
                    "scope": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "invalid_grant",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/me": {
      "get": {
        "operationId": "getMe",
        "summary": "Balance, trial calls left and the credential in use. Free.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "balance_usd": {
                      "type": "number"
                    },
                    "trial": {
                      "type": "object",
                      "properties": {
                        "calls_used": {
                          "type": "integer"
                        },
                        "calls_allowed": {
                          "type": "integer"
                        }
                      }
                    },
                    "top_up": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/platforms": {
      "get": {
        "operationId": "listPlatforms",
        "summary": "Every live platform, its operations and prices. Free, no key.",
        "security": [],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/topups": {
      "post": {
        "operationId": "createTopUp",
        "summary": "A checkout link for $5 or more, for a person to pay. Credit lands on the balance when paid.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "usd"
                ],
                "properties": {
                  "usd": {
                    "type": "number",
                    "minimum": 5,
                    "maximum": 1000
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "checkout_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "usd": {
                      "type": "number"
                    },
                    "note": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "invalid_amount",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/instagram": {
      "post": {
        "operationId": "instagram",
        "summary": "Profiles, posts, comments, followers, hashtags and similar accounts from Instagram.",
        "description": "Measured Instagram data, one operation per call. Usernames come from evidence (a search result, a pasted URL, a prior answer). Never typed from a person's name. ops: profiles (subjects = usernames; add include.posts to get each account's recent posts IN THE SAME CALL. Profiles with posts of each, one answer), posts (one account, deep. Includes the author's profile card), similar (related accounts), hashtag (posts tagged #x, sort top/newest), search (find accounts by keyword), comments (top comments on posts by URL), followers (the followers OR following list of accounts), history (stored time series, free). Ops are independent. Issue several as PARALLEL tool calls for faster answers. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Social"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "profiles",
                    "type": "object",
                    "description": "Profile cards for up to ten accounts. Profile-only by default. A call that also wants each account's recent posts says `include.posts` and gets profiles AND posts in one call, one answer.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "profiles"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Usernames or profile URLs. (1-10 items)"
                      },
                      "fields": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "profile",
                            "contact"
                          ]
                        },
                        "description": "'contact' adds the business email/phone fields to the answer; the fetch is the same either way, so this shapes the RESPONSE, not the bill."
                      },
                      "include": {
                        "type": "object"
                      },
                      "include.posts": {
                        "type": "object"
                      },
                      "include.posts.limit": {
                        "type": "integer",
                        "description": "Recent posts to fetch per account, newest first; 1-48. (1-48)"
                      },
                      "include.posts.tab": {
                        "type": "string",
                        "enum": [
                          "posts",
                          "reels"
                        ],
                        "description": "Which tab to read: the grid (\"posts\") or Reels (\"reels\")."
                      },
                      "include.posts.since": {
                        "type": "string",
                        "description": "Only posts on or after this day (YYYY-MM-DD). Omit for the newest. (YYYY-MM-DD)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "profiles",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "posts",
                    "type": "object",
                    "description": "One account's recent posts, newest first. The grid or the Reels tab. With the author's profile card in the same answer.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "posts"
                      },
                      "subject": {
                        "type": "string",
                        "description": "One username or profile URL. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "tab": {
                        "type": "string",
                        "enum": [
                          "posts",
                          "reels"
                        ],
                        "description": "'reels' pulls the Reels tab instead of the grid. Non-default tabs and date floors always fetch fresh (they never touch the grid's cache markers) and are served fresh from a source that has them."
                      },
                      "since": {
                        "type": "string"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "posts",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "similar",
                    "type": "object",
                    "description": "Accounts related to one account, for finding more like it.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "similar"
                      },
                      "subject": {
                        "type": "string",
                        "description": "One username or profile URL. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "similar",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "hashtag",
                    "type": "object",
                    "description": "Posts TAGGED with a hashtag. Instagram's public listening surface. 'top' is the ranked timeline; 'newest' is chronological.",
                    "required": [
                      "op",
                      "hashtag"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "hashtag"
                      },
                      "hashtag": {
                        "type": "string"
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "top",
                          "newest"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "hashtag",
                        "hashtag": "example"
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Instagram's own account search. Find handles by name or keyword.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "comments",
                    "type": "object",
                    "description": "Top comments on up to ten Instagram POSTS, by /p/ or /reel/ URL (or a bare shortcode). Author is free text. Commenters are not corpus members.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "comments"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Post URLs (/p/ or /reel/) or bare shortcodes. (1-10 items)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "comments",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "followers",
                    "type": "object",
                    "description": "The followers OR the following list of up to ten public accounts. The discovered accounts become thin corpus rows and a directed follow edge.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "followers"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Usernames or profile URLs. (1-10 items)"
                      },
                      "direction": {
                        "type": "string",
                        "enum": [
                          "followers",
                          "following"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "followers",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "The stored time series. Free, reads only what captures already wrote.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Usernames or profile URLs. (1-10 items)"
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "followers",
                          "following",
                          "media_count",
                          "engagement_rate"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_instagram_profiles"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_instagram_posts"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_instagram_similar"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_instagram_hashtag"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_instagram_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_instagram_comments"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_instagram_followers"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/linkedin": {
      "post": {
        "operationId": "linkedin",
        "summary": "People, companies, posts, jobs, comments, reactions and ads from LinkedIn.",
        "description": "Measured LinkedIn data, one operation per call. /in/ handles come from evidence (web search, a pasted URL, a prior answer). Never typed from a name. A `publicId` of the form ACoAA…/ ACwAA… is LinkedIn's member id, which some search rows carry instead of a handle: it works for profiles here, but contacts needs the /in/ handle. Web-search the person for it. Never typed from a name: first-last slugs often name a DIFFERENT person, and the fetch bills. ops: profiles (batch of /in/ handles or URLs; fields=[\"positions\"] adds the work history, include.posts adds each person's recent posts in the same call), posts (one person, deep. Includes the author's profile card when held), companies (company pages), searchPeople (a company's people filtered by title/seniority/function, or GLOBAL with query and no company), searchCompanies (query + size/industry/ location), jobs (listings by title + filters), searchPosts (find POSTS by keyword. The content itself, not people/companies; narrow by mention, content type, recency), postComments (a post's comment thread by URL), profileComments (a person's OWN commenting activity by /in/ handle), postReactions (who reacted to a post, filterable by reaction), profileReactions (what a person reacted to), adsLibrary (an advertiser's public ads from an Ad Library URL), history (stored series, free). A person's work email and mobile number are the `contacts` tool's job. Find the /in/ here first. Ops are independent. Issue several as PARALLEL tool calls for faster answers.",
        "tags": [
          "Social"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "profiles",
                    "type": "object",
                    "description": "Profile cards for up to ten people, by /in/<slug> vanity handle (a full profile URL is accepted and reduced to its slug). `include.posts` adds each person's recent posts to the same answer.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "profiles"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "/in/<slug> handles or profile URLs. (1-10 items)"
                      },
                      "fields": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "profile",
                            "positions"
                          ]
                        },
                        "description": "What each card carries: \"profile\" is the card itself (always), \"positions\" adds the person's work history. Omit for the card alone."
                      },
                      "include": {
                        "type": "object"
                      },
                      "include.posts": {
                        "type": "object"
                      },
                      "include.posts.limit": {
                        "type": "integer",
                        "description": "Recent posts to fetch per person, newest first; 1-50. (1-50)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "profiles",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "posts",
                    "type": "object",
                    "description": "A person's recent posts with engagement. (Company-page posts are not served yet. Asking today is declined with a reason, never guessed at.)",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "posts"
                      },
                      "subject": {
                        "type": "string",
                        "description": "One /in/<slug> handle or profile URL. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "posts",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "companies",
                    "type": "object",
                    "description": "Company pages for up to ten /company/<slug> handles or URLs.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "companies"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "/company/<slug> handles or URLs. (1-10 items)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "companies",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "searchPeople",
                    "type": "object",
                    "description": "People search. With `company`: that company's people, filtered (employees-of-X). Without it: a GLOBAL search. Give `query` (e.g. \"fintech founder\") and/or titles. Find founders/leadership via titles (free text: \"Founder\", \"CEO\") and/or seniority bands (cxo, owner_partner); functions and tenure narrow further.",
                    "required": [
                      "op"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "searchPeople"
                      },
                      "company": {
                        "type": "string",
                        "description": "A /company/<slug> handle or company URL: search only that company's people. Omit for a global search (then give query and/or titles). (≤400 chars)"
                      },
                      "query": {
                        "type": "string"
                      },
                      "titles": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Current job titles, free text (\"Founder\", \"Head of Marketing\"); any match."
                      },
                      "pastTitles": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Titles the person held before, free text. Global search only."
                      },
                      "pastCompanies": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Company names the person worked at before. Global search only."
                      },
                      "schools": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "School or university names the person attended. Global search only."
                      },
                      "locations": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "industries": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Leaf names or \" > \" paths. Validated against LinkedIn's 434-node taxonomy."
                      },
                      "companySizes": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "1-10",
                            "11-50",
                            "51-200",
                            "201-500",
                            "501-1000",
                            "1001-5000",
                            "5001-10000",
                            "10001+"
                          ]
                        },
                        "description": "Headcount bands of the person's current employer: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+. Global search only."
                      },
                      "seniority": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "in_training",
                            "entry",
                            "senior",
                            "strategic",
                            "entry_manager",
                            "experienced_manager",
                            "director",
                            "vice_president",
                            "cxo",
                            "owner_partner"
                          ]
                        },
                        "description": "Seniority bands: cxo, owner_partner, vice_president, director, experienced_manager, entry_manager, strategic, senior, entry, in_training. Any match."
                      },
                      "functions": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "accounting",
                            "administrative",
                            "arts_and_design",
                            "business_development",
                            "community_and_social_services",
                            "consulting",
                            "education",
                            "engineering",
                            "entrepreneurship",
                            "finance",
                            "healthcare_services",
                            "human_resources",
                            "information_technology",
                            "legal",
                            "marketing",
                            "media_and_communication",
                            "military_and_protective_services",
                            "operations",
                            "product_management",
                            "program_and_project_management",
                            "purchasing",
                            "quality_assurance",
                            "real_estate",
                            "research",
                            "sales"
                          ]
                        },
                        "description": "Job functions: marketing, sales, engineering, finance, operations, product_management, human_resources … Any match."
                      },
                      "yearsAtCompany": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "lt_1y",
                            "1_2y",
                            "3_5y",
                            "6_10y",
                            "gt_10y"
                          ]
                        },
                        "description": "Tenure at the current company, in bands: lt_1y, 1_2y, 3_5y, 6_10y, gt_10y."
                      },
                      "yearsOfExperience": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "lt_1y",
                            "1_2y",
                            "3_5y",
                            "6_10y",
                            "gt_10y"
                          ]
                        },
                        "description": "Total career length, the same bands as yearsAtCompany."
                      },
                      "recentlyChangedJobs": {
                        "type": "boolean",
                        "description": "true: only people who started a new role recently."
                      },
                      "recentlyPosted": {
                        "type": "boolean",
                        "description": "true: only people who posted on LinkedIn recently. Global search only."
                      },
                      "personNames": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Person-name / current employer / HQ / language filters (global search honours all)."
                      },
                      "currentCompanies": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Names of the person's current employer(s). Global search only."
                      },
                      "companyHqLocations": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Where the current employer is headquartered. Cities, regions or countries as written on LinkedIn (\"Bengaluru\", \"United States\")."
                      },
                      "profileLanguages": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Languages listed on the profile, by name (\"English\", \"Hindi\")."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "searchPeople"
                      }
                    ]
                  },
                  {
                    "title": "searchCompanies",
                    "type": "object",
                    "description": "Company search by keyword and structured filters.",
                    "required": [
                      "op"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "searchCompanies"
                      },
                      "query": {
                        "type": "string"
                      },
                      "locations": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "companySizes": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "1-10",
                            "11-50",
                            "51-200",
                            "201-500",
                            "501-1000",
                            "1001-5000",
                            "5001-10000",
                            "10001+"
                          ]
                        },
                        "description": "Headcount bands: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+; any match."
                      },
                      "industries": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Industry names, leaf or \" > \" path, from LinkedIn's own taxonomy."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "searchCompanies"
                      }
                    ]
                  },
                  {
                    "title": "jobs",
                    "type": "object",
                    "description": "Job listings search: `query` is the job-title anchor, the rest narrow it.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "jobs"
                      },
                      "query": {
                        "type": "string"
                      },
                      "locations": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "companies": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Hiring company names, as written on LinkedIn; any match."
                      },
                      "industries": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Industry names, leaf or \" > \" path, from LinkedIn's own taxonomy."
                      },
                      "workplace": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "remote",
                            "hybrid",
                            "onsite"
                          ]
                        }
                      },
                      "employmentType": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "full_time",
                            "part_time",
                            "contract",
                            "internship",
                            "temporary"
                          ]
                        }
                      },
                      "experienceLevel": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "internship",
                            "entry",
                            "associate",
                            "mid_senior",
                            "director",
                            "executive"
                          ]
                        },
                        "description": "Levels: internship, entry, associate, mid_senior, director, executive."
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "1h",
                          "1d",
                          "7d",
                          "30d"
                        ]
                      },
                      "salaryMin": {
                        "type": "integer",
                        "description": "Thousands of USD a year, 40 and up; filtered in LinkedIn's $20k bands. (40-1000)"
                      },
                      "easyApply": {
                        "type": "boolean",
                        "description": "true: only listings that take applications on LinkedIn itself."
                      },
                      "under10Applicants": {
                        "type": "boolean",
                        "description": "true: only listings with fewer than ten applicants so far."
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "relevance",
                          "newest"
                        ],
                        "description": "Unset = the platform's default order."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "jobs",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "searchPosts",
                    "type": "object",
                    "description": "Search LinkedIn POSTS by keyword. The content itself, not people or companies. `query` is the search (\"layoffs fintech\", a product name, a hashtag). Narrow by who is mentioned, the content type (videos, images, documents…), how recent, and sort by relevance or date.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "searchPosts"
                      },
                      "query": {
                        "type": "string",
                        "description": "Words the posts must contain. Always needed, even with mentioning (a mention-only ask is refused, verified 2026-09-23): to list all that tags a company or person, use their name as the query. (≤300 chars)"
                      },
                      "mentioning": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Only posts that tag these people or companies: /in/<slug> or /company/<slug> handles, or their URLs."
                      },
                      "contentType": {
                        "type": "string",
                        "enum": [
                          "all",
                          "videos",
                          "images",
                          "jobs",
                          "live_videos",
                          "documents",
                          "collaborative_articles"
                        ],
                        "description": "What kind of post: videos, images, jobs, live_videos, documents, collaborative_articles. Omit or \"all\" for every kind."
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "any",
                          "1h",
                          "1d",
                          "7d",
                          "30d",
                          "3m",
                          "6m",
                          "1y"
                        ]
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "relevance",
                          "newest"
                        ]
                      },
                      "includeReposts": {
                        "type": "boolean",
                        "description": "true: reposts of other people's posts count as hits too."
                      },
                      "includeQuotePosts": {
                        "type": "boolean",
                        "description": "true: posts that quote another post count as hits too."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "searchPosts",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "postComments",
                    "type": "object",
                    "description": "Comments on up to ten LinkedIn POSTS, by post URL. `includeReplies` pulls nested replies; `postedWithin` limits how far back to read.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "postComments"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Post URLs. (1-10 items)"
                      },
                      "includeReplies": {
                        "type": "boolean",
                        "description": "true: nested replies come back under their parent comment, not only top-level comments."
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "any",
                          "1d",
                          "7d",
                          "30d"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "postComments",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "profileComments",
                    "type": "object",
                    "description": "A profile's OWN commenting activity. The comments up to ten people left across LinkedIn, by /in/<slug> handle, newest first.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "profileComments"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "/in/<slug> handles or profile URLs. (1-10 items)"
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "any",
                          "1d",
                          "7d",
                          "30d"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "profileComments",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "postReactions",
                    "type": "object",
                    "description": "Reactions on up to ten LinkedIn POSTS, by post URL. Who reacted and how. `reactionTypes` filters to specific reactions (Like, Celebrate…).",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "postReactions"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Post URLs. (1-10 items)"
                      },
                      "reactionTypes": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "like",
                            "celebrate",
                            "support",
                            "love",
                            "insightful",
                            "funny"
                          ]
                        },
                        "description": "Keep only these reactions: like, celebrate, support, love, insightful, funny. Omit for all of them."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "postReactions",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "profileReactions",
                    "type": "object",
                    "description": "A profile's OWN reactions. What up to ten people reacted to across LinkedIn, by /in/<slug> handle, newest first.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "profileReactions"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "/in/<slug> handles or profile URLs. (1-10 items)"
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "any",
                          "1d",
                          "7d",
                          "30d"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "profileReactions",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "adsLibrary",
                    "type": "object",
                    "description": "Ads from the LinkedIn Ad Library, by Ad Library URL. An advertiser's page (all their live ads) or a single ad's detail URL.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "adsLibrary"
                      },
                      "subject": {
                        "type": "string",
                        "description": "An Ad Library URL. An advertiser page or one ad's detail page. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "adsLibrary",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "The stored time series. Free, reads what captures already wrote.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "entity": {
                        "type": "string",
                        "enum": [
                          "people",
                          "companies"
                        ],
                        "description": "Whose series: \"people\" (/in/ handles) or \"companies\" (/company/ handles)."
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Handles or URLs of the chosen entity kind. (1-10 items)"
                      },
                      "metric": {
                        "type": "string",
                        "description": "people: followers | connections; companies: followers | employees_count"
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_profiles"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_posts"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_companies"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_searchPeople"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_searchCompanies"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_jobs"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_searchPosts"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_postComments"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_profileComments"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_postReactions"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_profileReactions"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_linkedin_adsLibrary"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/youtube": {
      "post": {
        "operationId": "youtube",
        "summary": "Channels, videos and comments from YouTube.",
        "description": "Measured YouTube data, one operation per call. Channels come from evidence (a pasted channel URL, an @handle you SAW, a UC… id). Never typed from a person's name. ops: channels (subjects = @handles, UC ids or channel URLs; add include.videos to get each channel's recent videos IN THE SAME CALL), videos (one channel, deep. Includes the channel card when held; views, likes, comments, duration and absolute publish dates per video), comments (top comments on videos by watch/shorts URL or id), history (stored subscriber/video/view series, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Social"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "channels",
                    "type": "object",
                    "description": "Channel cards for up to ten channels, by @handle, UC… id or pasted channel URL. `include.videos` adds each channel's recent videos to the same answer.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "channels"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "@handles, UC… ids or channel URLs. (1-10 items)"
                      },
                      "include": {
                        "type": "object"
                      },
                      "include.videos": {
                        "type": "object"
                      },
                      "include.videos.limit": {
                        "type": "integer",
                        "description": "Recent videos to fetch per channel, newest first; 1-50. (1-50)"
                      },
                      "include.videos.since": {
                        "type": "string",
                        "description": "Only videos published on or after this day (YYYY-MM-DD). (YYYY-MM-DD)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "channels",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "videos",
                    "type": "object",
                    "description": "One channel's recent videos with views, likes and comments. Includes the channel card when held. A date floor always fetches fresh.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "videos"
                      },
                      "subject": {
                        "type": "string",
                        "description": "One @handle, UC… id or channel URL. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "since": {
                        "type": "string"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "videos",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "comments",
                    "type": "object",
                    "description": "Top comments on up to ten VIDEOS, by watch/shorts URL or bare video id. Commenters are free text. Not corpus members.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "comments"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Watch/shorts URLs or bare video ids. (1-10 items)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "comments",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "The stored time series. Free, reads only what captures already wrote.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "@handles, UC… ids or channel URLs. (1-10 items)"
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "subscribers",
                          "total_videos",
                          "total_views"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_youtube_channels"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_youtube_videos"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_youtube_comments"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/x_twitter": {
      "post": {
        "operationId": "x_twitter",
        "summary": "Profiles, posts and search from X, formerly Twitter.",
        "description": "Measured data from X. The platform formerly known as Twitter (x.com / twitter.com). One operation per call. Handles come from evidence (a pasted x.com URL, a handle you SAW, a prior answer). Never typed from a person's name. The blue badge is a paid subscription and is reported as `isBlueVerified`, never as verification. ops: profiles (batch of @handles or profile URLs; add include.posts to get each account's recent posts IN THE SAME CALL), posts (one account, deep. Likes, replies, reposts, quotes, views, bookmarks and the reply/quote lineage per post; includes the author card when held), search (find ACCOUNTS by keyword), searchPosts (find POSTS by keyword. What X is saying about something, across authors), history (stored follower/following/post-count series, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Social"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "profiles",
                    "type": "object",
                    "description": "Profile cards for up to ten accounts, by @handle or pasted profile URL. `include.posts` adds each account's recent posts to the same answer.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "profiles"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "@handles or profile URLs. (1-10 items)"
                      },
                      "include": {
                        "type": "object"
                      },
                      "include.posts": {
                        "type": "object"
                      },
                      "include.posts.limit": {
                        "type": "integer",
                        "description": "Recent posts to fetch per account, newest first; 1-50. (1-50)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "profiles",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "posts",
                    "type": "object",
                    "description": "One account's recent posts with engagement. Includes the author's profile card when held.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "posts"
                      },
                      "subject": {
                        "type": "string",
                        "description": "One @handle or profile URL. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "posts",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Find ACCOUNTS by keyword. A name, a topic, a bio phrase.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "searchPosts",
                    "type": "object",
                    "description": "Find POSTS by keyword. What X is saying about something. The content itself, across all authors, newest-relevant first.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "searchPosts"
                      },
                      "query": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "searchPosts",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "The stored time series. Free, reads only what captures already wrote.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "@handles or profile URLs. (1-10 items)"
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "followers",
                          "following",
                          "posts_count"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_x_twitter_profiles"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_x_twitter_posts"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_x_twitter_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_x_twitter_searchPosts"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/reddit": {
      "post": {
        "operationId": "reddit",
        "summary": "Posts, comments, subreddits and search from Reddit, with scores and permalinks on every row.",
        "description": "Measured Reddit data, one operation per call. The POST is the entity: score, upvote ratio, comment count, kind and permalink on every row. There is no profile card. Reddit publishes none we can measure. ops: posts (one user's recent submissions. U/name or a profile URL), subreddit (a subreddit's listing under one sort: hot | newest | top | rising; `postedWithin` applies to top only), comments (top comments on up to ten posts, by permalink or bare id), search (posts across Reddit matching a keyword. What Reddit is saying about something; sorts relevance | hot | top | newest | most_commented), history (stored score / comment-count series of posts already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Social"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "posts",
                    "type": "object",
                    "description": "One user's recent submissions. Score, comment count, upvote ratio and the kind of each post.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "posts"
                      },
                      "subject": {
                        "type": "string",
                        "description": "One u/username or profile URL. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "posts",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "subreddit",
                    "type": "object",
                    "description": "A subreddit's listing under one sort. `postedWithin` applies to `top` only. Reddit ignores it for every other sort.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "subreddit"
                      },
                      "subject": {
                        "type": "string",
                        "description": "One r/name or subreddit URL. (≤400 chars)"
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "hot",
                          "newest",
                          "top",
                          "rising"
                        ]
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "1h",
                          "1d",
                          "7d",
                          "30d",
                          "1y",
                          "any"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "subreddit",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "comments",
                    "type": "object",
                    "description": "Top comments on up to ten POSTS, by permalink or bare post id. Commenters are free text. Not corpus members.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "comments"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Post permalinks or bare post ids. (1-10 items)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "comments",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Posts across all of Reddit matching a keyword. What Reddit is saying about something. `postedWithin` applies to `top` only.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "relevance",
                          "hot",
                          "top",
                          "newest",
                          "most_commented"
                        ]
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "1h",
                          "1d",
                          "7d",
                          "30d",
                          "1y",
                          "any"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "The stored score / comment-count series of up to ten posts. Free, reads only what captures already wrote.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Post permalinks or bare post ids. (1-10 items)"
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "score",
                          "comments_count"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_reddit_posts"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_reddit_subreddit"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_reddit_comments"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_reddit_search"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/tiktok": {
      "post": {
        "operationId": "tiktok",
        "summary": "Creators, videos, comments, followers, search and shop listings from TikTok.",
        "description": "Measured TikTok data, one operation per call. Handles come from evidence (a pasted tiktok.com/@ URL, a handle you SAW, a prior answer). Never typed from a person's name. ops: profiles (cards for up to ten accounts. Followers, following, total likes, video count, bio, verification, business/seller flags), posts (one account's recent posts. Views, likes, comments, shares, saves, sound, hashtags, duration), videos (full cards for up to ten posts by URL), searchPosts (posts by keyword OR hashtag OR sound URL), search (find accounts by keyword), comments (top-level comments on up to ten posts), followers (the followers OR following of up to five accounts, each a full profile), shop (TikTok Shop products for a keyword. Price, discount, rating, sold count, seller, variants with stock), history (stored follower/likes/video series, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Social"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "profiles",
                    "type": "object",
                    "description": "Profile cards for up to ten accounts by @handle or profile URL. Followers, following, total likes, video count, bio, verification.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "profiles"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "@handles or profile URLs. (1-10 items)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "profiles",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "posts",
                    "type": "object",
                    "description": "One account's recent posts. Views, likes, comments, shares, saves, sound, hashtags, duration; includes the author card when held.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "posts"
                      },
                      "subject": {
                        "type": "string",
                        "description": "One @handle or profile URL. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "posts",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "videos",
                    "type": "object",
                    "description": "Full cards for up to ten posts by video or photo URL.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "videos"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Video or photo URLs. (1-10 items)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "videos",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "searchPosts",
                    "type": "object",
                    "description": "Posts by keyword, by hashtag, or by sound URL. Exactly one.",
                    "required": [
                      "op"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "searchPosts"
                      },
                      "query": {
                        "type": "string"
                      },
                      "hashtag": {
                        "type": "string"
                      },
                      "soundUrl": {
                        "type": "string",
                        "description": "A TikTok sound page URL (tiktok.com/music/…): posts made with that sound. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "searchPosts",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Find accounts by keyword. Every hit a full profile card.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "comments",
                    "type": "object",
                    "description": "Top-level comments on up to ten posts by URL.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "comments"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Video or photo URLs. (1-10 items)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "comments",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "followers",
                    "type": "object",
                    "description": "The followers OR following of up to five accounts, each row a full profile.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "followers"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "@handles or profile URLs. (1-5 items)"
                      },
                      "direction": {
                        "type": "string",
                        "enum": [
                          "followers",
                          "following"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "followers",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "shop",
                    "type": "object",
                    "description": "TikTok Shop products for a keyword. Price, discount, rating, sold count, seller, every variant with its stock.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "shop"
                      },
                      "query": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "shop",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored follower/likes/video-count series of profiles already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "followers",
                          "following",
                          "total_likes",
                          "videos"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_tiktok_profiles"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tiktok_posts"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tiktok_videos"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tiktok_searchPosts"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tiktok_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tiktok_comments"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tiktok_followers"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tiktok_shop"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/facebook": {
      "post": {
        "operationId": "facebook",
        "summary": "Pages, posts, reels, comments, reviews, ads, events and marketplace listings from Facebook.",
        "description": "Measured Facebook data, one operation per call. Pages are named by URL or vanity handle (\"nike\"); posts by permalink. Handles come from evidence, never typed from a name. ops: pages (cards for up to ten pages. Followers, likes, following, talking-about, reviews and recommend %, category, contact, address, hours, price range, ads status, social links), posts (recent posts of a page, profile or group. Text, reactions by type, comments, shares, views, media, top comments; since/until), reels (a page's reels. Plays, audio, duration), comments (comments on up to five posts by permalink, replies optional; sort top/threaded/newest), reviews (a page's reviews/recommendations), followers (a page's followers OR following, each with name, profile URL and bio), ads (every ad a page runs in the Ad Library. Creative, headline, CTA, link, dates, platforms, EU reach; active or inactive), events (events by keyword. Date, venue, host, going/interested, tickets), marketplace (listings from a Marketplace category or search URL. Price, condition, location, attributes), history (stored follower/likes series of pages already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Social"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "pages",
                    "type": "object",
                    "description": "Page cards for up to ten pages by URL or handle. Followers, likes, talking-about, reviews and recommend %, category, contact, hours, ads status, social links.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "pages"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Page URLs or vanity handles. (1-10 items)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "pages",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "posts",
                    "type": "object",
                    "description": "Recent posts of a page, profile or group. Text, reactions by type, comments, shares, views, media, mentions, top comments.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "posts"
                      },
                      "subject": {
                        "type": "string",
                        "description": "One page, profile or group URL or handle. (≤400 chars)"
                      },
                      "since": {
                        "type": "string"
                      },
                      "until": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "posts",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "reels",
                    "type": "object",
                    "description": "Recent reels of a page. Plays, audio, duration, video links.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "reels"
                      },
                      "subject": {
                        "type": "string",
                        "description": "One page URL or handle. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "reels",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "comments",
                    "type": "object",
                    "description": "Comments on up to five posts, reels or photos by permalink.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "comments"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Post, reel or photo permalinks. (1-5 items)"
                      },
                      "includeReplies": {
                        "type": "boolean",
                        "description": "false: top-level comments only; true (default) also returns the replies nested under them."
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "top",
                          "threaded",
                          "newest"
                        ],
                        "description": "top = Facebook's \"most relevant\"; threaded = all comments in thread order."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "comments",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "reviews",
                    "type": "object",
                    "description": "Reviews/recommendations on up to five pages.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "reviews"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Page URLs or vanity handles. (1-5 items)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "reviews",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "followers",
                    "type": "object",
                    "description": "The followers OR following of up to three pages. Name, profile URL, bio. The dearest rows in the catalogue.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "followers"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Page URLs or vanity handles. (1-3 items)"
                      },
                      "direction": {
                        "type": "string",
                        "enum": [
                          "followers",
                          "following"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "followers",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "ads",
                    "type": "object",
                    "description": "Every ad a page runs in Meta's Ad Library. Creative, headline, CTA, link, dates, platforms, advertiser and EU reach.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "ads"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Page URLs or vanity handles. (1-5 items)"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "active",
                          "inactive"
                        ],
                        "description": "\"active\": ads running now; \"inactive\": ads that have stopped."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "ads",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "events",
                    "type": "object",
                    "description": "Events by keyword. Name, date, venue, host, going/interested, tickets.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "events"
                      },
                      "query": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "events",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "marketplace",
                    "type": "object",
                    "description": "Marketplace listings from a category or search URL. Title, price, condition, location, attributes, photos.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "marketplace"
                      },
                      "subject": {
                        "type": "string",
                        "description": "A Marketplace category or search URL. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "marketplace",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored follower/likes series of pages already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "followers",
                          "likes",
                          "talking_about",
                          "review_count",
                          "recommend_percent"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_facebook_pages"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_facebook_posts"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_facebook_reels"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_facebook_comments"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_facebook_reviews"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_facebook_followers"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_facebook_ads"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_facebook_events"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_facebook_marketplace"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/amazon": {
      "post": {
        "operationId": "amazon",
        "summary": "Products, search results and reviews from any Amazon marketplace.",
        "description": "Measured Amazon product data, one operation per call. Products are named by ASIN or by any amazon.<marketplace> product URL; a URL carries its own marketplace, a bare ASIN takes the call's (default com). Prices are per marketplace and every fetch adds a point to that product's price history. ops: products (full cards for up to ten ASINs/URLs. Price, list price, deal and Prime flags, availability, rating and count, best-sellers rank, seller, specs, variants, images), search (keyword search on one marketplace, full cards with rank), reviews (customer reviews for up to ten products. Text, rating, date, verified-purchase and Vine flags, helpful votes, variant), history (stored price/rating/rank series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Commerce"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "products",
                    "type": "object",
                    "description": "Full product cards for up to ten products. Price, list price, deal and Prime flags, availability, rating and count, best-sellers rank, seller, specs, images, variants. By ASIN or product URL.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "products"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "ASINs or product URLs. (1-10 items)"
                      },
                      "marketplace": {
                        "type": "string",
                        "enum": [
                          "com",
                          "in",
                          "co.uk",
                          "de",
                          "fr",
                          "it",
                          "es",
                          "ca",
                          "com.au",
                          "co.jp",
                          "com.mx",
                          "com.br"
                        ],
                        "description": "The Amazon site as its domain suffix ,  \"com\", \"in\", \"co.uk\", \"de\"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site."
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "products",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Keyword search on one marketplace. Every hit is a full product card with its search rank.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "marketplace": {
                        "type": "string",
                        "enum": [
                          "com",
                          "in",
                          "co.uk",
                          "de",
                          "fr",
                          "it",
                          "es",
                          "ca",
                          "com.au",
                          "co.jp",
                          "com.mx",
                          "com.br"
                        ],
                        "description": "The Amazon site as its domain suffix ,  \"com\", \"in\", \"co.uk\", \"de\"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "reviews",
                    "type": "object",
                    "description": "Customer reviews for up to ten products. Text, rating, date, verified-purchase and Vine flags, helpful votes, variant, media. Amazon caps at 100 per product.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "reviews"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "ASINs or product URLs. (1-10 items)"
                      },
                      "marketplace": {
                        "type": "string",
                        "enum": [
                          "com",
                          "in",
                          "co.uk",
                          "de",
                          "fr",
                          "it",
                          "es",
                          "ca",
                          "com.au",
                          "co.jp",
                          "com.mx",
                          "com.br"
                        ],
                        "description": "The Amazon site as its domain suffix ,  \"com\", \"in\", \"co.uk\", \"de\"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "reviews",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "The stored series for products already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "marketplace": {
                        "type": "string",
                        "enum": [
                          "com",
                          "in",
                          "co.uk",
                          "de",
                          "fr",
                          "it",
                          "es",
                          "ca",
                          "com.au",
                          "co.jp",
                          "com.mx",
                          "com.br"
                        ],
                        "description": "The Amazon site as its domain suffix ,  \"com\", \"in\", \"co.uk\", \"de\"… A product URL carries its own and overrides this; a bare ASIN and a search use it. Prices, stock and reviews differ per site."
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "price",
                          "list_price",
                          "rating",
                          "ratings_count",
                          "best_sellers_rank",
                          "bought_past_month_min"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_amazon_products"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_amazon_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_amazon_reviews"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/shopify": {
      "post": {
        "operationId": "shopify",
        "summary": "Products, prices and stock from any Shopify store.",
        "description": "Measured Shopify storefront data, one operation per call. Any Shopify-powered store, named by its URL. Every fetch adds a price and stock point to each product's history. ops: products (the catalogue of up to five stores. Title, brand, category, tags, price range, sale flag, stock, variant count, every variant with SKU/price/stock, options, images, created and published dates), history (stored price/stock series of a product already held, by product URL, free). Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Commerce"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "products",
                    "type": "object",
                    "description": "The catalogue of up to five Shopify storefronts. Every product with its price range, sale flag, stock, variants and options.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "products"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Store URLs. Any Shopify-powered storefront. (1-5 items)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "products",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored price/stock series of a store's products already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "price_from",
                          "price_to",
                          "in_stock",
                          "variant_count"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_shopify_products"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/farfetch": {
      "post": {
        "operationId": "farfetch",
        "summary": "Products, search and listings from Farfetch, priced per storefront.",
        "description": "Measured Farfetch data, one operation per call. Products are named by product URL or the numeric item id in it. Prices are per storefront locale. Read `currency`, never assume USD. Every fetch adds a price and stock point to the product's history. ops: products (full cards for up to ten products. Price, full price, discount, per-size availability with SKU and price, seller boutique, category path, season, returns, images), search (keyword search, full cards), listing (any designer/category/sale page URL, its products in page order), history (stored price/stock series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Commerce"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "products",
                    "type": "object",
                    "description": "Full product detail for up to ten Farfetch product URLs or item ids. Price, full price, discount, per-size availability, seller boutique.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "products"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "products",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Keyword search across Farfetch. Every hit a full product card.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "listing",
                    "type": "object",
                    "description": "Any designer, category or sale listing page URL. Its products in page order, each a full card.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "listing"
                      },
                      "subject": {
                        "type": "string",
                        "description": "The listing page URL. (≤400 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "listing",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored price/stock series of products already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "price",
                          "full_price",
                          "discount_percent",
                          "stock_quantity"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_farfetch_products"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_farfetch_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_farfetch_listing"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/goat": {
      "post": {
        "operationId": "goat",
        "summary": "Resale products, listings and asks from GOAT.",
        "description": "Measured GOAT resale data, one operation per call. Products are named by product URL or its slug. Every fetch adds the lowest ask, max offer and retail price to the product's history. ops: products (full detail for up to ten products. Every size with its asking price, condition and availability, max offer, retail price, release date, colorway, tags), search (keyword search, full cards), listing (a brand or collection page URL, its products in order), history (stored ask/offer series for products already held, free). `country` (ISO-2, upper) prices in that region. Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Commerce"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "products",
                    "type": "object",
                    "description": "Full detail for up to ten GOAT products by URL or slug. Every size with its asking price and availability, max offer, retail price.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "products"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "country": {
                        "type": "string"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "products",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Keyword search on GOAT. Every hit a full product card.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "country": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "listing",
                    "type": "object",
                    "description": "A brand or collection page URL. Its products in page order.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "listing"
                      },
                      "subject": {
                        "type": "string",
                        "description": "The listing page URL. (≤400 chars)"
                      },
                      "country": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "listing",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored ask/offer series of products already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "lowest_ask",
                          "max_offer",
                          "retail_price"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_goat_products"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_goat_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_goat_listing"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/stockx": {
      "post": {
        "operationId": "stockx",
        "summary": "Market prices, listings and last sales from StockX.",
        "description": "Measured StockX market data, one operation per call. Products are named by product URL or its slug. Every fetch adds last sale, lowest ask, highest bid, averages, sales counts and bids to the product's market history. ops: products (full detail for up to ten products. Last sale, 90-day and 12-month average price and sales, 72-hour sales, volatility, bids, express-ship asks, every size with its ask/bid/last sale, retail price, release date), search (keyword search, full cards), listing (a brand or category page URL, its products in order), history (stored market series for products already held, free). `country` (ISO-2, upper) prices in that region. Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Commerce"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "products",
                    "type": "object",
                    "description": "Full detail with live market data for up to ten StockX products. Last sale, 90-day and 12-month averages, sales counts, bids, and every size's ask/bid/last sale.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "products"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "country": {
                        "type": "string"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "products",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Keyword search on StockX. Every hit a full product card.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "country": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "listing",
                    "type": "object",
                    "description": "A brand or category page URL. Its products in page order.",
                    "required": [
                      "op",
                      "subject"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "listing"
                      },
                      "subject": {
                        "type": "string",
                        "description": "The listing page URL. (≤400 chars)"
                      },
                      "country": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "listing",
                        "subject": "example"
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored market series of products already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "last_sale",
                          "lowest_ask",
                          "highest_bid",
                          "average_price_90_days",
                          "sales_90_days",
                          "sales_72_hours",
                          "average_price_12_months",
                          "sales_12_months",
                          "bids",
                          "price_volatility"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_stockx_products"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_stockx_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_stockx_listing"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/blinkit": {
      "post": {
        "operationId": "blinkit",
        "summary": "A product's price and stock at one dark store, right now, from Blinkit.",
        "description": "Measured Blinkit data, one operation per call. A product's price and stock at ONE dark store, right now. Every op takes `store`: a storeId, or a pincode (with city), or lat/lon. Prices, MRP, discounts and stock are per store and every fetch adds a point to that product's price history at that store. ops: products (full detail for up to ten blinkit.com product URLs at the store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications), search (what a shopper at that store sees for a query. Listings with price, stock and rank), category (one page of the app's own menu at that store; names must match the app exactly, e.g. category \"Atta, Rice & Dal\", subCategory \"Atta\". The pair must belong together), history (stored price/stock series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Commerce"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "products",
                    "type": "object",
                    "description": "Full product detail at one store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.",
                    "required": [
                      "op",
                      "subjects",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "products"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Product URLs at that store. (1-10 items)"
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "products",
                        "subjects": [
                          "example"
                        ],
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Search the app as a shopper at that store would. Listings with price, MRP, stock and rank.",
                    "required": [
                      "op",
                      "query",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example",
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  },
                  {
                    "title": "category",
                    "type": "object",
                    "description": "One category page at one store. Names must be the app's own menu names; a name that is not on the menu is refused and nothing is charged.",
                    "required": [
                      "op",
                      "category",
                      "subCategory",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "category"
                      },
                      "category": {
                        "type": "string",
                        "description": "The top-level aisle as the app names it (\"Dairy, Bread & Eggs\"). (≤80 chars)"
                      },
                      "subCategory": {
                        "type": "string",
                        "description": "The shelf inside it, again as the app names it (\"Milk\"). Both are required: the listing is one shelf at one store. (≤80 chars)"
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "category",
                        "category": "example",
                        "subCategory": "example",
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "The stored price/stock series of products already held at a store. Free.",
                    "required": [
                      "op",
                      "subjects",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "price",
                          "mrp",
                          "discount_pct",
                          "stock_count",
                          "rating",
                          "rating_count"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ],
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_blinkit_products"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_blinkit_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_blinkit_category"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/instamart": {
      "post": {
        "operationId": "instamart",
        "summary": "A product's price and stock at one dark store, right now, from Swiggy Instamart.",
        "description": "Measured Swiggy Instamart data, one operation per call. A product's price and stock at ONE dark store, right now. Every op takes `store`: a storeId, or a pincode (with city), or lat/lon. Prices, MRP, discounts and stock are per store and every fetch adds a point to that product's price history at that store. ops: products (full detail for up to ten swiggy.com/instamart product URLs at the store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications), search (what a shopper at that store sees for a query. Listings with price, stock and rank), category (one page of the app's own menu at that store; names must match the app exactly, e.g. category \"Atta, Rice and Dal\", subCategory \"Atta\". The pair must belong together), history (stored price/stock series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Commerce"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "products",
                    "type": "object",
                    "description": "Full product detail at one store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.",
                    "required": [
                      "op",
                      "subjects",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "products"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Product URLs at that store. (1-10 items)"
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "products",
                        "subjects": [
                          "example"
                        ],
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Search the app as a shopper at that store would. Listings with price, MRP, stock and rank.",
                    "required": [
                      "op",
                      "query",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example",
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  },
                  {
                    "title": "category",
                    "type": "object",
                    "description": "One category page at one store. Names must be the app's own menu names; a name that is not on the menu is refused and nothing is charged.",
                    "required": [
                      "op",
                      "category",
                      "subCategory",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "category"
                      },
                      "category": {
                        "type": "string",
                        "description": "The top-level aisle as the app names it (\"Dairy, Bread & Eggs\"). (≤80 chars)"
                      },
                      "subCategory": {
                        "type": "string",
                        "description": "The shelf inside it, again as the app names it (\"Milk\"). Both are required: the listing is one shelf at one store. (≤80 chars)"
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "category",
                        "category": "example",
                        "subCategory": "example",
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "The stored price/stock series of products already held at a store. Free.",
                    "required": [
                      "op",
                      "subjects",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "price",
                          "mrp",
                          "discount_pct",
                          "stock_count",
                          "rating",
                          "rating_count"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ],
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_instamart_products"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_instamart_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_instamart_category"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/zepto": {
      "post": {
        "operationId": "zepto",
        "summary": "A product's price and stock at one dark store, right now, from Zepto.",
        "description": "Measured Zepto data, one operation per call. A product's price and stock at ONE dark store, right now. Every op takes `store`: a storeId, or a pincode (with city), or lat/lon. Prices, MRP, discounts and stock are per store and every fetch adds a point to that product's price history at that store. ops: products (full detail for up to ten zepto.com product URLs at the store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications), search (what a shopper at that store sees for a query. Listings with price, stock and rank), category (one page of the app's own menu at that store; names must match the app exactly, e.g. category \"Atta Rice Oil Dals\", subCategory \"Atta\". The pair must belong together), history (stored price/stock series for products already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Commerce"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "products",
                    "type": "object",
                    "description": "Full product detail at one store. Price, MRP, discount, stock count, rating, seller, manufacturer, specifications. By product URL.",
                    "required": [
                      "op",
                      "subjects",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "products"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Product URLs at that store. (1-10 items)"
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "products",
                        "subjects": [
                          "example"
                        ],
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Search the app as a shopper at that store would. Listings with price, MRP, stock and rank.",
                    "required": [
                      "op",
                      "query",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example",
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  },
                  {
                    "title": "category",
                    "type": "object",
                    "description": "One category page at one store. Names must be the app's own menu names; a name that is not on the menu is refused and nothing is charged.",
                    "required": [
                      "op",
                      "category",
                      "subCategory",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "category"
                      },
                      "category": {
                        "type": "string",
                        "description": "The top-level aisle as the app names it (\"Dairy, Bread & Eggs\"). (≤80 chars)"
                      },
                      "subCategory": {
                        "type": "string",
                        "description": "The shelf inside it, again as the app names it (\"Milk\"). Both are required: the listing is one shelf at one store. (≤80 chars)"
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "category",
                        "category": "example",
                        "subCategory": "example",
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "The stored price/stock series of products already held at a store. Free.",
                    "required": [
                      "op",
                      "subjects",
                      "store"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "store": {
                        "type": "object"
                      },
                      "store.storeId": {
                        "type": "string",
                        "description": "The dark store's own id, when a previous answer or a store URL gave you one. The most exact way to name a store; wins over the others."
                      },
                      "store.city": {
                        "type": "string",
                        "description": "The city the pincode is in (\"Agra\"). Helps the pincode resolve to the right store; ignored when storeId or lat/lon are given."
                      },
                      "store.pincode": {
                        "type": "string",
                        "description": "A 6-digit Indian postal code (\"282003\"); the nearest serving store is used. Give city too when the pincode is ambiguous."
                      },
                      "store.lat": {
                        "type": "number",
                        "description": "Latitude in decimal degrees, with lon: the store serving that point."
                      },
                      "store.lon": {
                        "type": "number",
                        "description": "Longitude in decimal degrees; only read together with lat."
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "price",
                          "mrp",
                          "discount_pct",
                          "stock_count",
                          "rating",
                          "rating_count"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ],
                        "store": {
                          "pincode": "560001"
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_zepto_products"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_zepto_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_zepto_category"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/indeed": {
      "post": {
        "operationId": "indeed",
        "summary": "Job search and job listings from Indeed, by country.",
        "description": "Measured Indeed job data, one operation per call. ops: search (query + location on one country's Indeed, with workplace, employmentType, postedWithin and sort filters. Every hit a full posting: title, company with industry and size, salary range and period, employment type, workplace type, skills, benefits, hiring signals like urgent-hire and employer response rate, apply link), jobs (full postings for up to ten job keys or job URLs). Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Jobs & work"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Search Indeed the way a seeker would. Keyword and place, with Indeed's own filters. Every hit is a full posting with salary, skills and employer signals.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "location": {
                        "type": "string"
                      },
                      "country": {
                        "type": "string",
                        "enum": [
                          "US",
                          "GB",
                          "CA",
                          "AU",
                          "IN",
                          "DE",
                          "FR",
                          "JP",
                          "BR",
                          "MX",
                          "IT",
                          "ES",
                          "NL",
                          "BE",
                          "CH",
                          "AT",
                          "SG",
                          "HK",
                          "IE",
                          "NZ",
                          "AR",
                          "CL",
                          "CO"
                        ]
                      },
                      "workplace": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "remote"
                          ]
                        },
                        "description": "Indeed filters remote only; hybrid/onsite are not filterable there."
                      },
                      "employmentType": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "full_time",
                            "part_time",
                            "contract",
                            "internship",
                            "temporary"
                          ]
                        }
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "1d",
                          "3d",
                          "7d",
                          "15d",
                          "30d",
                          "any"
                        ]
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "relevance",
                          "newest"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "jobs",
                    "type": "object",
                    "description": "Full postings for up to ten Indeed job keys or job URLs.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "jobs"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Job keys or job URLs. (1-10 items)"
                      },
                      "country": {
                        "type": "string",
                        "enum": [
                          "US",
                          "GB",
                          "CA",
                          "AU",
                          "IN",
                          "DE",
                          "FR",
                          "JP",
                          "BR",
                          "MX",
                          "IT",
                          "ES",
                          "NL",
                          "BE",
                          "CH",
                          "AT",
                          "SG",
                          "HK",
                          "IE",
                          "NZ",
                          "AR",
                          "CL",
                          "CO"
                        ]
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "jobs",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_indeed_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_indeed_jobs"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/naukri": {
      "post": {
        "operationId": "naukri",
        "summary": "Job search from Naukri with the board's own filters.",
        "description": "Measured Naukri job data, one operation per call. ops: search (a keyword or a pasted Naukri search URL, with the board's own filters. PostedWithin, sort, experience, workplace, salaryMin/Max in lakhs, locations, and Naukri's coded department/role/industry/company filters; every hit a full posting with skills, experience band, salary or benchmark CTC, applicants and views, walk-in details, company profile; minimum 50 rows per search, which is what it bills), history (stored applicant/view series of postings already held, by job id or URL, free). Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Jobs & work"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Search Naukri. A keyword (or a pasted Naukri search URL) with the board's own filters. Coded filters (department, roleCategory, industry, companyType, topCompanies, ugCourse, pgCourse) take Naukri's numeric ids, as the site's URLs carry them.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string",
                        "description": "A keyword, or a pasted Naukri search URL. (≤300 chars)"
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "1d",
                          "3d",
                          "7d",
                          "15d",
                          "30d",
                          "any"
                        ]
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "relevance",
                          "newest"
                        ]
                      },
                      "experience": {
                        "type": "string",
                        "description": "Years of experience, \"all\" or \"0\"..\"23\". (pattern `^(all|[0-9]|1[0-9]|2[0-3])$`)"
                      },
                      "workplace": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "onsite",
                            "remote",
                            "hybrid",
                            "temporary_wfh"
                          ]
                        }
                      },
                      "salaryMin": {
                        "type": "integer",
                        "description": "Lakhs per annum; mapped onto Naukri's salary bands. (0-1000)"
                      },
                      "salaryMax": {
                        "type": "integer",
                        "description": "Upper bound in lakhs per annum; with salaryMin, the bands that overlap the range are searched. (0-1000)"
                      },
                      "locations": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "department": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Naukri's own department codes (the numbers in its filter URLs, e.g. \"5\" for Engineering). Any of them matches. Empty = every department. (each ≤20 chars)"
                      },
                      "roleCategory": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Naukri's role-category codes, narrower than a department. Empty = all. (each ≤20 chars)"
                      },
                      "industry": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Naukri's industry codes. Empty = every industry. (each ≤20 chars)"
                      },
                      "companyType": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Naukri's company-type codes (corporate, startup, MNC…). Empty = all. (each ≤20 chars)"
                      },
                      "topCompanies": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Naukri's top-company group codes, to keep only well-known employers. Empty = all companies. (each ≤20 chars)"
                      },
                      "postedBy": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "company",
                            "consultant"
                          ]
                        },
                        "description": "Who posted the job: the company itself, a consultant, or both when empty."
                      },
                      "ugCourse": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Naukri's undergraduate-degree codes the posting asks for. Empty = any. (each ≤20 chars)"
                      },
                      "pgCourse": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Naukri's postgraduate-degree codes the posting asks for. Empty = any. (each ≤20 chars)"
                      },
                      "fetchDetails": {
                        "type": "boolean",
                        "description": "Pull each posting's full description and requirements. Slower."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored applicant/view series of postings already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "applicants",
                          "views",
                          "vacancies"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_naukri_search"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/upwork": {
      "post": {
        "operationId": "upwork",
        "summary": "Job search from Upwork with its own filters.",
        "description": "Measured Upwork job data, one operation per call. ops: search (a query with Upwork's own filters. Sort, hourly rate and fixed budget bounds, experience level, client hiring history, project length, hours per week, client country; every hit a full posting with budget, skills, the client's profile and spend, and live proposal counts: applicants, interviewing, invites, hired), history (stored proposal-count series of postings already held, by job id or URL, free). Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Jobs & work"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Search Upwork jobs with the marketplace's own filters. Every hit a full posting with budget, client profile and proposal counts.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "relevance",
                          "newest"
                        ]
                      },
                      "includeHourly": {
                        "type": "boolean",
                        "description": "Keep hourly-rate jobs. Set both this and includeFixed false and nothing matches."
                      },
                      "hourlyMin": {
                        "type": "integer",
                        "description": "USD per hour. (0-)"
                      },
                      "hourlyMax": {
                        "type": "integer",
                        "description": "USD per hour, the upper bound; only hourly jobs are affected. (0-)"
                      },
                      "includeFixed": {
                        "type": "boolean",
                        "description": "Keep fixed-price jobs."
                      },
                      "budgetMin": {
                        "type": "integer",
                        "description": "USD, the fixed-price budget. (0-)"
                      },
                      "budgetMax": {
                        "type": "integer",
                        "description": "USD, the fixed-price budget's upper bound; only fixed jobs are affected. (0-)"
                      },
                      "experienceLevel": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "entry",
                            "intermediate",
                            "expert"
                          ]
                        },
                        "description": "The level the client asked for. Any listed level matches; empty = all."
                      },
                      "clientHistory": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "0",
                            "1-9",
                            "10-"
                          ]
                        },
                        "description": "How many jobs the client has hired for before: none, 1-9, or 10+. Empty = any client."
                      },
                      "projectLength": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "week",
                            "month",
                            "semester",
                            "ongoing"
                          ]
                        },
                        "description": "Expected duration: under a week, under a month, 1-6 months, or ongoing (6+). Empty = any length."
                      },
                      "hoursPerWeek": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "part_time",
                            "full_time"
                          ]
                        },
                        "description": "Weekly commitment: part-time (under 30 h) or full-time (30 h+). Empty = either."
                      },
                      "clientLocation": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Client countries, as Upwork spells them (\"United States\"). (each ≤60 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored proposal-count series of postings already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "applicants",
                          "interviewing",
                          "invites_sent",
                          "hired"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_upwork_search"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts": {
      "post": {
        "operationId": "contacts",
        "summary": "A person's work email and mobile number, by LinkedIn handle.",
        "description": "A person's work email and mobile number, by LinkedIn handle. And the two follow-ups people ask for: • \"This number / email is wrong, give me another\" → reveal again with tryAnotherSource=true and reveal=[that part ONLY]. Every part listed is marked wrong and bought again from a DIFFERENT source, at that part's price. So a wrong number with reveal=[\"email\",\"phone\"] also throws away a good email. One call is one step: if the next source gives the same value back it is shown flagged and the walk stops (say so again to go one source further); a free miss moves on by itself. • \"Give me a verified email\" → reveal with verify=true. Every address is checked by a verifier before it counts (status \"valid\" / \"invalid\" / \"risky\"); an invalid one does not satisfy the ask and the next source is tried. A fraction of a cent per address. If no verifier can answer, the address comes back \"unverified\" and a note says so. One op, reveal: up to ten people by /in/ handle or profile URL; reveal=[\"email\",\"phone\"] by default, [\"email\"] alone when the number is not needed (a phone costs about five emails' worth). Every answer carries a `trail`. The sources walked, in order, with what each found and cost; a point's `source` is a label within that answer (\"1\", \"2\"), never a name. The /in/ handle must come from EVIDENCE: web-search the person, or find them with linkedin searchPeople, and use the /in/ you SAW. A handle typed from a name is charged for and can reveal a DIFFERENT person's number; a member id (ACoAA…/ACwAA…) is not a handle and is refused unspent. A reveal is YOUR org's asset: a part you already own is free, a part with nothing on file is answered once and never bought again, and nothing revealed is ever shared with another org. Batch subjects inside one call; estimate_only=true quotes without spending.",
        "tags": [
          "People"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "reveal",
                    "type": "object",
                    "description": "Work email and mobile number for up to ten people, by LinkedIn /in/ handle or profile URL. A reveal is the BUYER'S asset: billed per person and per part, owned by your org, never shared with another org. A part you already own is free; only the missing part is bought.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "reveal"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "/in/<slug> handles or profile URLs. (1-10 items)"
                      },
                      "reveal": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "email",
                            "phone"
                          ]
                        },
                        "description": "Which parts to reveal. Both by default. A contact is an email AND a number; a phone is five emails' worth, so ask [\"email\"] when unneeded."
                      },
                      "verify": {
                        "type": "boolean",
                        "description": "Verify each email found before it counts: an address a verifier calls invalid is kept as a fact but does not satisfy the ask, and the next source is tried. A verdict costs a fraction of a cent per address."
                      },
                      "tryAnotherSource": {
                        "type": "boolean",
                        "description": "\"What I hold is wrong. Get me another.\" EVERY part in reveal that your org holds is marked wrong and bought again from a source other than the one that gave it, at that part's price. So list only the part that is wrong. One call is one step: the next source's answer is returned even when it is the same value (flagged); ask again to go one source further. Marking is free and final. A part you do not hold is simply revealed."
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "reveal",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_contacts_reveal"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/explore": {
      "post": {
        "operationId": "explore",
        "summary": "Data sources beyond the named platforms, for the long tail.",
        "description": "Reach data sources OUTSIDE the measured platform tools. The long tail the catalogue can fetch that no dedicated tool covers yet. Use it only after the platform tools have been ruled out: for anything about an Instagram, LinkedIn, YouTube, X, Reddit, TikTok, Facebook, Amazon, jobs, places or commerce entity, the dedicated tool answers better, cheaper and with provenance. What comes back here is the SOURCE'S OWN rows: raw, unverified, not mapped into a schema and not kept as measured data. Evidence to interpret and cite, never a measurement. ops: sources (free. Search what is reachable with `query` in plain words, naming the SITE or the DATA: \"retweeters of a post\", \"quick commerce category listing\"; returns the best few with a per-row price), schema (free. One source's live input fields, a sample input and a money estimate; call it before every run), run (fetch: `source` from sources, `input` shaped by schema, `limit` rows. At most 100, default 10; billed per row the source returns, a run that returns nothing costs nothing). Ops are independent; sources and schema are free.",
        "tags": [
          "Everything else"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "sources",
                    "type": "object",
                    "description": "Search what explore can reach. Free. `query` names the SITE or the DATA in plain words (\"quick commerce categories\", \"who retweeted a post\"), never an entity; returns the best-matching sources with what each returns and its price per row. Omit `query` to browse the whole index.",
                    "required": [
                      "op"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "sources"
                      },
                      "query": {
                        "type": "string"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "sources"
                      }
                    ]
                  },
                  {
                    "title": "schema",
                    "type": "object",
                    "description": "One source's live input fields, a sample input and a money estimate. Free. Call it before `run` so the input is built against the source's real, current contract and the cost is known before spending.",
                    "required": [
                      "op",
                      "source"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "schema"
                      },
                      "source": {
                        "type": "string",
                        "description": "A source name from sources. (≤120 chars)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "schema",
                        "source": "example"
                      }
                    ]
                  },
                  {
                    "title": "run",
                    "type": "object",
                    "description": "Fetch rows from one source. `input` is forwarded to the source as `schema` described it; `limit` bounds the rows and the bill. Rows come back raw and unmapped. Billed per row the source actually returns; a run that finds nothing is free.",
                    "required": [
                      "op",
                      "source"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "run"
                      },
                      "source": {
                        "type": "string",
                        "description": "The source's name exactly as sources listed it. (≤120 chars)"
                      },
                      "input": {
                        "type": "string",
                        "description": "The source's own input, shaped by schema."
                      },
                      "limit": {
                        "type": "integer",
                        "description": "Rows wanted. Every row costs real money, so name the count the question needs; the hard ceiling is 100. (1-100)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "run",
                        "source": "example"
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": []
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/google_maps": {
      "post": {
        "operationId": "google_maps",
        "summary": "Places, search and reviews from Google Maps.",
        "description": "Measured Google Maps data, one operation per call. Places are named by a Google Maps URL carrying a place id or cid, or by a bare ChIJ… place id. Every fetch adds rating, review count and live occupancy to the place's history. ops: places (full cards for up to ten places. Rating and star breakdown, review keywords, price range, phone, website, emails and socials, full address and coordinates, opening and special hours, popular times, attributes, owner posts, menu and reservation links, closed/unclaimed flags), search (a query in a location with minRating and website filters; every hit a full card), reviews (reviews for up to ten places. Text, stars, date, reviewer with local-guide flag, owner response; four sort orders), history (stored rating and review-count series for places already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Places & travel"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "places",
                    "type": "object",
                    "description": "Full cards for up to ten places by Maps URL (place id or cid). Rating and breakdown, review keywords, contact, address, hours, popular times, attributes, socials, owner posts.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "places"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Maps URLs carrying a place id or cid, or bare ChIJ… place ids. (1-10 items)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "places",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Places for a keyword in a location. Every hit a full card.",
                    "required": [
                      "op",
                      "query",
                      "location"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "location": {
                        "type": "string"
                      },
                      "minRating": {
                        "type": "string",
                        "enum": [
                          "2",
                          "2.5",
                          "3",
                          "3.5",
                          "4",
                          "4.5"
                        ],
                        "description": "Google's star scale, in halves."
                      },
                      "website": {
                        "type": "string",
                        "enum": [
                          "any",
                          "with",
                          "without"
                        ],
                        "description": "Keep only places that list a website (\"with\"), only those that do not (\"without\". A common lead filter), or both."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example",
                        "location": "New York"
                      }
                    ]
                  },
                  {
                    "title": "reviews",
                    "type": "object",
                    "description": "Reviews for up to ten places. Text, stars, date, reviewer, owner response; sorted newest, most relevant, highest or lowest.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "reviews"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Maps URLs carrying a place id or cid, or bare ChIJ… place ids. (1-10 items)"
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "newest",
                          "relevance",
                          "rating_high",
                          "rating_low"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "reviews",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored rating/review-count series of places already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "rating",
                          "reviews",
                          "live_occupancy_percent"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_google_maps_places"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_google_maps_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_google_maps_reviews"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/yelp": {
      "post": {
        "operationId": "yelp",
        "summary": "Businesses, search and reviews from Yelp.",
        "description": "Measured Yelp data, one operation per call. Businesses are named by their yelp.com/biz/ URL or its slug. Every fetch adds rating and review count to the business's history. ops: businesses (full profiles for up to ten businesses. Address and coordinates, phone, website, menu, rating with star breakdown, review insights by topic with sentiment, review highlights, popular dishes, attributes, hours today, health inspections, Q&A), search (a query and location with sort, price levels and Yelp feature filters; every hit a full profile), reviews (reviews for up to ten businesses. Text, rating, date, reactions, reviewer profile, owner reply), history (stored rating/review-count series for businesses already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Places & travel"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "businesses",
                    "type": "object",
                    "description": "Full profiles for up to ten businesses by URL or slug. Address, phone, website, rating and star breakdown, review insights by topic, popular dishes, attributes, hours, health inspections.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "businesses"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "yelp.com/biz/ URLs or their slugs. (1-10 items)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "businesses",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Businesses for a place and keyword, with Yelp's own sort, price levels and feature filters. Every hit a full profile.",
                    "required": [
                      "op",
                      "query",
                      "location"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "location": {
                        "type": "string"
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "relevance",
                          "rating_high",
                          "most_reviewed"
                        ]
                      },
                      "priceLevels": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "1",
                            "2",
                            "3",
                            "4"
                          ]
                        },
                        "description": "Yelp's dollar-sign tiers, \"1\" ($) to \"4\" ($$$$). Any listed tier matches; empty = every price level."
                      },
                      "features": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Yelp's own feature slugs, e.g. \"outdoor_seating\", \"delivery\". (each ≤40 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example",
                        "location": "New York"
                      }
                    ]
                  },
                  {
                    "title": "reviews",
                    "type": "object",
                    "description": "Reviews for up to ten businesses. Text, rating, date, reactions, reviewer profile, owner reply.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "reviews"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "yelp.com/biz/ URLs or their slugs. (1-10 items)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "reviews",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored rating/review-count series of businesses already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "rating",
                          "total_reviews"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_yelp_businesses"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_yelp_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_yelp_reviews"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/tripadvisor": {
      "post": {
        "operationId": "tripadvisor",
        "summary": "Hotels, restaurants, attractions and reviews from Tripadvisor.",
        "description": "Measured Tripadvisor data, one operation per call. Places are named by their Tripadvisor URL (Hotel_Review / Restaurant_ Review / Attraction_Review). Every fetch adds rating, review count and rank to the place's history. ops: hotels, restaurants, attractions (full cards for up to ten places of that kind. Contact, address and coordinates, rating with breakdown and review tags, rank out of, photos count; hotels add class, rooms, amenities, price range and OTA offers for a stay; restaurants add cuisines, dishes, hours, menu, price level; attractions add types, ticket offers, booking links), searchHotels, searchRestaurants, searchAttractions (a destination or dish, every hit a full card), reviews (reviews for up to ten places of any kind. Text, rating, dates, trip type, sub-ratings, owner response; filter by minimum date, ratings, languages), history (stored rating/review-count/rank series for places already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Places & travel"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "hotels",
                    "type": "object",
                    "description": "Full cards for up to ten hotels by Tripadvisor URL. Rating breakdown, rank, class, rooms, amenities, price range, OTA offers for the stay.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "hotels"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Tripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review). (1-10 items)"
                      },
                      "language": {
                        "type": "string"
                      },
                      "currency": {
                        "type": "string"
                      },
                      "stay": {
                        "type": "object"
                      },
                      "stay.checkIn": {
                        "type": "string",
                        "description": "First night, YYYY-MM-DD. Only read together with checkOut. (YYYY-MM-DD)"
                      },
                      "stay.checkOut": {
                        "type": "string",
                        "description": "Departure day, YYYY-MM-DD, after checkIn. Leave both out for a card without prices. (YYYY-MM-DD)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "subjects": [
                          "example"
                        ],
                        "op": "hotels"
                      }
                    ]
                  },
                  {
                    "title": "restaurants",
                    "type": "object",
                    "description": "Full cards for up to ten restaurants by URL. Cuisines, dishes, hours, menu link, price level, rating breakdown, rank.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "restaurants"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Tripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review). (1-10 items)"
                      },
                      "language": {
                        "type": "string"
                      },
                      "currency": {
                        "type": "string"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "subjects": [
                          "example"
                        ],
                        "op": "restaurants"
                      }
                    ]
                  },
                  {
                    "title": "attractions",
                    "type": "object",
                    "description": "Full cards for up to ten attractions by URL. Types, ticket offers, booking links, rating breakdown, rank.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "attractions"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Tripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review). (1-10 items)"
                      },
                      "language": {
                        "type": "string"
                      },
                      "currency": {
                        "type": "string"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "subjects": [
                          "example"
                        ],
                        "op": "attractions"
                      }
                    ]
                  },
                  {
                    "title": "searchHotels",
                    "type": "object",
                    "description": "Hotels for a destination. Every hit a full card, priced for the stay when dates are given.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "searchHotels"
                      },
                      "query": {
                        "type": "string",
                        "description": "A destination, or a dish for restaurants. (≤300 chars)"
                      },
                      "language": {
                        "type": "string"
                      },
                      "currency": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "stay": {
                        "type": "object"
                      },
                      "stay.checkIn": {
                        "type": "string",
                        "description": "First night, YYYY-MM-DD. Only read together with checkOut. (YYYY-MM-DD)"
                      },
                      "stay.checkOut": {
                        "type": "string",
                        "description": "Departure day, YYYY-MM-DD, after checkIn. Leave both out for a card without prices. (YYYY-MM-DD)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "query": "example",
                        "op": "searchHotels"
                      }
                    ]
                  },
                  {
                    "title": "searchRestaurants",
                    "type": "object",
                    "description": "Restaurants for a destination or dish. Every hit a full card.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "searchRestaurants"
                      },
                      "query": {
                        "type": "string",
                        "description": "A destination, or a dish for restaurants. (≤300 chars)"
                      },
                      "language": {
                        "type": "string"
                      },
                      "currency": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "query": "example",
                        "op": "searchRestaurants"
                      }
                    ]
                  },
                  {
                    "title": "searchAttractions",
                    "type": "object",
                    "description": "Things to do for a destination. Every hit a full card.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "searchAttractions"
                      },
                      "query": {
                        "type": "string",
                        "description": "A destination, or a dish for restaurants. (≤300 chars)"
                      },
                      "language": {
                        "type": "string"
                      },
                      "currency": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "query": "example",
                        "op": "searchAttractions"
                      }
                    ]
                  },
                  {
                    "title": "reviews",
                    "type": "object",
                    "description": "Reviews for up to ten places of any kind. Text, rating, dates, trip type, sub-ratings, owner response, reviewer.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "reviews"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Tripadvisor place URLs of any kind. (1-10 items)"
                      },
                      "since": {
                        "type": "string"
                      },
                      "ratings": {
                        "type": "array",
                        "items": {
                          "type": "integer"
                        },
                        "description": "Star values to keep, 1-5. (each 1-5)"
                      },
                      "languages": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Keep reviews written in these languages (BCP-47 codes, \"en\", \"fr\"). Empty = every language. (each BCP-47)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "reviews",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored rating/review-count/rank series of places already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "rating",
                          "reviews",
                          "rank"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_tripadvisor_hotels"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tripadvisor_restaurants"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tripadvisor_attractions"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tripadvisor_searchHotels"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tripadvisor_searchRestaurants"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tripadvisor_searchAttractions"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_tripadvisor_reviews"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/airbnb": {
      "post": {
        "operationId": "airbnb",
        "summary": "Listings, prices for a stay and reviews from Airbnb.",
        "description": "Measured Airbnb data, one operation per call. Listings are named by URL or room id. A `stay` (checkIn, checkOut, adults, children, infants, pets, currency) is part of every price. Without dates a card comes back unpriced. And every priced fetch adds a point to the listing's history tagged with that stay. ops: listings (full cards for up to ten listings. Nightly and total price, availability, overall and per-category ratings, review count, amenities, house rules, cancellation policy, host with superhost flag), reviews (reviews for up to ten listings. Text, rating, date, host response), history (stored price/rating series for listings already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Places & travel"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "listings",
                    "type": "object",
                    "description": "Full cards for up to ten listings by URL or room id, priced for a stay. Nightly and total price, availability, ratings by category, amenities, house rules, cancellation policy, host.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "listings"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Listing URLs or room ids. (1-10 items)"
                      },
                      "stay": {
                        "type": "object"
                      },
                      "stay.checkIn": {
                        "type": "string",
                        "description": "First night, YYYY-MM-DD. Only read together with checkOut. (YYYY-MM-DD)"
                      },
                      "stay.checkOut": {
                        "type": "string",
                        "description": "Departure day, YYYY-MM-DD, after checkIn. (YYYY-MM-DD)"
                      },
                      "stay.adults": {
                        "type": "integer",
                        "description": "Guests aged 13+; the nightly price depends on the party. (1-16)"
                      },
                      "stay.children": {
                        "type": "integer",
                        "description": "Guests aged 2-12. (0-10)"
                      },
                      "stay.infants": {
                        "type": "integer",
                        "description": "Guests under 2; usually not counted toward the listing's capacity. (0-5)"
                      },
                      "stay.pets": {
                        "type": "integer",
                        "description": "Pets, where the listing allows them; adds the pet fee to the total. (0-5)"
                      },
                      "stay.currency": {
                        "type": "string",
                        "description": "ISO 4217 code the prices come back in (\"USD\", \"INR\", \"EUR\"). (ISO 4217)"
                      },
                      "stay.locale": {
                        "type": "string",
                        "description": "Language tag for titles and descriptions (\"en-US\", \"fr-FR\"). (≤10 chars)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "listings",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "reviews",
                    "type": "object",
                    "description": "Reviews for up to ten listings. Text, rating, date, host response.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "reviews"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Listing URLs or room ids. (1-10 items)"
                      },
                      "locale": {
                        "type": "string",
                        "description": "Language tag the review text is returned in (\"en-US\"); reviews in other languages come translated. (≤10 chars)"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "reviews",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored price/rating series of listings already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "price_per_night",
                          "total_price",
                          "rating_overall",
                          "reviews_count"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_airbnb_listings"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_airbnb_reviews"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/booking": {
      "post": {
        "operationId": "booking",
        "summary": "Properties, search, prices for a stay and reviews from Booking.com.",
        "description": "Measured Booking.com data, one operation per call. Properties are named by their booking.com/hotel/<country>/<name> URL. A `stay` (checkIn, checkOut, currency, language) is part of every price and every priced fetch adds a point to the property's history tagged with that stay. ops: properties (full cards for up to ten properties. Price from, guest score and label, category scores, review count, rooms with availability and price, facilities, policies, check-in times, address and coordinates), search (properties for a destination and stay with propertyType, minStars, minRating, priceMin/Max and sort), reviews (guest reviews for up to ten properties. Liked/disliked, score, date, traveler type, room, property response; sort, since, scoreBands), history (stored price/score series for properties already held, free). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Places & travel"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "properties",
                    "type": "object",
                    "description": "Full cards for up to ten properties by URL. Price from, guest score and category scores, rooms with availability and price, facilities, policies, location.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "properties"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "booking.com/hotel/<country>/<name> URLs. (1-10 items)"
                      },
                      "stay": {
                        "type": "object"
                      },
                      "stay.checkIn": {
                        "type": "string",
                        "description": "First night, YYYY-MM-DD. Only read together with checkOut; without dates a property has no price to show. (YYYY-MM-DD)"
                      },
                      "stay.checkOut": {
                        "type": "string",
                        "description": "Departure day, YYYY-MM-DD, after checkIn. (YYYY-MM-DD)"
                      },
                      "stay.currency": {
                        "type": "string",
                        "description": "ISO 4217 code the prices come back in (\"USD\", \"INR\", \"EUR\"). (ISO 4217)"
                      },
                      "stay.language": {
                        "type": "string",
                        "description": "BCP-47 tag for names and descriptions (\"en-GB\", \"de-DE\"). (BCP-47)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "properties",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Properties for a destination and a stay, with Booking's own filters.",
                    "required": [
                      "op",
                      "location"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "location": {
                        "type": "string"
                      },
                      "stay": {
                        "type": "object"
                      },
                      "stay.checkIn": {
                        "type": "string",
                        "description": "First night, YYYY-MM-DD. Only read together with checkOut; without dates a property has no price to show. (YYYY-MM-DD)"
                      },
                      "stay.checkOut": {
                        "type": "string",
                        "description": "Departure day, YYYY-MM-DD, after checkIn. (YYYY-MM-DD)"
                      },
                      "stay.currency": {
                        "type": "string",
                        "description": "ISO 4217 code the prices come back in (\"USD\", \"INR\", \"EUR\"). (ISO 4217)"
                      },
                      "stay.language": {
                        "type": "string",
                        "description": "BCP-47 tag for names and descriptions (\"en-GB\", \"de-DE\"). (BCP-47)"
                      },
                      "propertyType": {
                        "type": "string",
                        "description": "Booking's own words: hotel, apartment, hostel, resort, villa… (≤40 chars)"
                      },
                      "minStars": {
                        "type": "integer",
                        "description": "Official star class, at least this many. (1-5)"
                      },
                      "minRating": {
                        "type": "number",
                        "description": "Guest score on Booking's 0-10 scale. (0-10)"
                      },
                      "priceMin": {
                        "type": "integer",
                        "description": "For the stay, in the stay's currency. (0-)"
                      },
                      "priceMax": {
                        "type": "integer",
                        "description": "Upper bound for the whole stay, in the stay's currency. (0-)"
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "relevance",
                          "price_low",
                          "rating_high",
                          "distance"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "location": "New York"
                      }
                    ]
                  },
                  {
                    "title": "reviews",
                    "type": "object",
                    "description": "Guest reviews for up to ten properties. Liked/disliked text, score, date, traveler type, room, property response.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "reviews"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "booking.com/hotel/<country>/<name> URLs. (1-10 items)"
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "relevance",
                          "newest",
                          "oldest",
                          "rating_high",
                          "rating_low"
                        ]
                      },
                      "since": {
                        "type": "string",
                        "description": "Stop at this date; applies with newest or oldest. (YYYY-MM-DD)"
                      },
                      "scoreBands": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "superb",
                            "good",
                            "average",
                            "poor"
                          ]
                        },
                        "description": "Booking's own 10-point score bands: superb 9+, good 7-9, average 5-7, poor <5. Not ratings. That name is a star filter elsewhere."
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "reviews",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  },
                  {
                    "title": "history",
                    "type": "object",
                    "description": "Stored price/score series of properties already held. Free.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "history"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "metric": {
                        "type": "string",
                        "enum": [
                          "price_from",
                          "guest_score",
                          "review_count"
                        ]
                      },
                      "days": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "history",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_booking_properties"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_booking_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_booking_reviews"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/google": {
      "post": {
        "operationId": "google",
        "summary": "Web search, news, images, shopping and Play Store reviews from Google.",
        "description": "Measured Google data, one operation per call. Five surfaces. ops: search (web results for a query: link, title, snippet, domain, rank, related questions and searches; supports site:, intitle:, OR; country/language/site/since/until filters; billed per page of ~10), news (Google News articles: headline, publisher, date, link; postedWithin, country and language), images (Google Images: URL, source page, dimensions), shopping (Shopping offers: title, merchant, price, rating, review count; country, language, postedWithin), playReviews (Play Store reviews for up to five apps by package id or URL. Text, rating, date, app version, developer reply, sub-ratings; country, language, sort). Ops are independent. Issue several as PARALLEL tool calls. Fresh fetches are charged per record; your own answer is free while fresh.",
        "tags": [
          "Search"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "title": "search",
                    "type": "object",
                    "description": "Google web results. Organic links with titles, snippets and rank; supports operators (site:, intitle:, OR). Billed per page of about ten results.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "search"
                      },
                      "query": {
                        "type": "string"
                      },
                      "pages": {
                        "type": "integer",
                        "description": "Billed per page of ~10 results. The one op counted in pages. (1-5)"
                      },
                      "country": {
                        "type": "string",
                        "description": "Country to search from. (ISO alpha-2)"
                      },
                      "language": {
                        "type": "string"
                      },
                      "site": {
                        "type": "string",
                        "description": "Only results from this domain (\"linkedin.com/in\", \"reddit.com\"). The same as writing site: in the query. (≤120 chars)"
                      },
                      "relatedToSite": {
                        "type": "string",
                        "description": "Sites Google considers similar to this domain, instead of the query's own matches. (≤120 chars)"
                      },
                      "since": {
                        "type": "string"
                      },
                      "until": {
                        "type": "string"
                      },
                      "fileTypes": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Only documents of these types, as extensions (\"pdf\", \"xlsx\", \"ppt\"). Empty = any page. (each ≤8 chars)"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "search",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "news",
                    "type": "object",
                    "description": "Google News articles for a query. Headline, publisher, date, link.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "news"
                      },
                      "query": {
                        "type": "string"
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "1h",
                          "1d",
                          "7d",
                          "1y",
                          "any"
                        ]
                      },
                      "country": {
                        "type": "string",
                        "description": "The Google News market and its language. (ISO alpha-2)"
                      },
                      "language": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "news",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "images",
                    "type": "object",
                    "description": "Google Images for a query. URL, source page, dimensions, thumbnail.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "images"
                      },
                      "query": {
                        "type": "string"
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "images",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "shopping",
                    "type": "object",
                    "description": "Google Shopping offers for a query. Title, merchant, price, rating.",
                    "required": [
                      "op",
                      "query"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "shopping"
                      },
                      "query": {
                        "type": "string"
                      },
                      "country": {
                        "type": "string"
                      },
                      "language": {
                        "type": "string"
                      },
                      "postedWithin": {
                        "type": "string",
                        "enum": [
                          "1h",
                          "1d",
                          "7d",
                          "30d",
                          "any"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "shopping",
                        "query": "example"
                      }
                    ]
                  },
                  {
                    "title": "playReviews",
                    "type": "object",
                    "description": "Play Store reviews for up to five apps, by package id or store URL.",
                    "required": [
                      "op",
                      "subjects"
                    ],
                    "properties": {
                      "op": {
                        "type": "string",
                        "const": "playReviews"
                      },
                      "subjects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Package ids or Play Store URLs. (1-5 items)"
                      },
                      "country": {
                        "type": "string"
                      },
                      "language": {
                        "type": "string"
                      },
                      "sort": {
                        "type": "string",
                        "enum": [
                          "newest",
                          "rating_high",
                          "helpful"
                        ]
                      },
                      "limit": {
                        "type": "integer"
                      },
                      "estimateOnly": {
                        "type": "boolean",
                        "description": "Return the price and charge nothing."
                      },
                      "maxUsd": {
                        "type": "number",
                        "description": "Refuse the call above this amount with budget_exceeded."
                      },
                      "freshness": {
                        "type": "string",
                        "enum": [
                          "auto",
                          "fresh",
                          "cached"
                        ],
                        "description": "auto reads your own recent answer free; fresh forces a capture; cached never spends."
                      }
                    },
                    "examples": [
                      {
                        "op": "playReviews",
                        "subjects": [
                          "example"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The envelope: data, coverage, provenance, confidence, cost, notes. data holds lists of rows keyed by what they are; each row is the operation's row schema.",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Envelope"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "array",
                            "items": {
                              "oneOf": [
                                {
                                  "$ref": "#/components/schemas/Row_google_search"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_google_news"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_google_images"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_google_shopping"
                                },
                                {
                                  "$ref": "#/components/schemas/Row_google_playReviews"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "invalid_request (names the field) or unknown_op",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized: no or bad bearer; register at /agent/identity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "payment_required (top_up_url included) or budget_exceeded (over maxUsd)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "insufficient_scope: a person must claim this agent first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "unknown_platform",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "rate_limited",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "source_failed: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "engine_unavailable or not_priced: nothing was charged",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "error"
                  ],
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "A stable code: invalid_request, unknown_op, unauthorized, insufficient_scope, payment_required, budget_exceeded, rate_limited, source_failed, engine_unavailable, ..."
                    },
                    "error_description": {
                      "type": "string",
                      "description": "What happened and what to do, in a sentence."
                    },
                    "field": {
                      "type": "string",
                      "description": "The input at fault, on invalid_request."
                    },
                    "top_up_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "On payment_required: where a person adds money."
                    },
                    "claim_required": {
                      "type": "boolean",
                      "description": "On payment_required or insufficient_scope: a person must claim this agent first."
                    },
                    "cost": {
                      "type": "object",
                      "description": "The quote, when the error is about money."
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}