SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
23.2 KB · 296 lines json
Raw Blame History
1[2  {3    "id": "cardmarket-priceguide",4    "name": "Cardmarket price guide & product catalog (bulk files)",5    "domain": "downloads.s3.cardmarket.com",6    "country": "DE",7    "supportedCountries": ["DE", "FR", "IT", "ES", "NL", "AT", "BE", "PL", "PT", "CH", "GB", "EU"],8    "languages": ["en"],9    "sourceType": "pricing_guide",10    "categories": ["magic_the_gathering", "yugioh", "pokemon", "final_fantasy_tcg", "weiss_schwarz", "dragon_ball_tcg", "flesh_and_blood", "digimon_tcg", "one_piece_card_game", "disney_lorcana", "star_wars_tcg", "other_tcg"],11    "subcategories": ["singles", "sealed"],12    "api": { "available": true, "docsUrl": "https://www.cardmarket.com/en/Magic/Data/Price-Guide", "auth": "none", "notes": "Public S3 bulk JSON: productCatalog/priceGuide/price_guide_<idGame>.json (avg/low/trend/avg1/avg7/avg30 + -foil, EUR, createdAt) and productCatalog/productList/products_singles_<idGame>.json / products_nonsingles_<idGame>.json. Game ids probed live 1–30: 1,2,3,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22 exist (403 otherwise). No expansion-name file exists (probed several paths → 403)." },13    "urls": { "search": null, "product": "https://downloads.s3.cardmarket.com/productCatalog/productList/products_singles_1.json", "sold": null, "sitemap": null, "robots": "https://downloads.s3.cardmarket.com/robots.txt" },14    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": false, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": false, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": true },15    "access": { "pagination": "bulk_file", "jsRendering": false, "antiBot": "none", "cloudflare": false, "robots": "Bucket returns S3 AccessDenied for /robots.txt (no robots file); files are world-readable. Storefront cardmarket.com is Cloudflare-protected and not touched.", "rateLimit": "≤ 3 files per game per day, 2 s apart", "preferredEngine": "api" },16    "currency": ["EUR"],17    "freshness": "daily",18    "priority": "wave1",19    "difficulty": "easy",20    "reliability": 0.85,21    "legal": "Files are published by Cardmarket for public download without authentication; guide values are aggregate statistics (not personal data). Attribution kept via sourceUrl. Storefront ToS not implicated because no site page is fetched.",22    "status": "implemented",23    "connectors": ["cardmarket-priceguide"],24    "statusReason": null,25    "verified": true,26    "verifiedAt": "2026-09-08",27    "notes": "Wave-1. idProduct = identifiers.cardmarket_id (same key MTGJSON emits for mcmId → entity resolution links). Foil rows → variant Foil (Reverse Holo for Pokémon)."28  },29  {30    "id": "cardmarket",31    "name": "Cardmarket storefront (cardmarket.com)",32    "domain": "cardmarket.com",33    "country": "DE",34    "supportedCountries": ["EU"],35    "languages": ["en", "de", "fr", "es", "it"],36    "sourceType": "marketplace",37    "categories": ["magic_the_gathering", "pokemon", "yugioh", "one_piece_card_game", "disney_lorcana", "other_tcg"],38    "api": { "available": false, "docsUrl": null, "auth": "partner", "notes": "The former MKM API (OAuth 1.0a) was closed to new applications; product/price data is instead published as the public bulk files (see cardmarket-priceguide)." },39    "urls": { "search": "https://www.cardmarket.com/en/Magic/Products/Search", "product": null, "sold": null, "sitemap": null, "robots": "https://www.cardmarket.com/robots.txt" },40    "data": { "liveListings": true, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": true, "saleDate": false, "realizedPrice": false, "fees": false, "grading": false, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": true },41    "access": { "pagination": "page_number", "jsRendering": true, "antiBot": "blocking", "cloudflare": true, "robots": "Not evaluated further: the site answers 403 (Cloudflare) to the honest bot UA even on help pages.", "rateLimit": null, "preferredEngine": "none" },42    "currency": ["EUR"],43    "freshness": "realtime",44    "priority": "later",45    "difficulty": "very_hard",46    "reliability": 0.5,47    "legal": "Cloudflare-protected storefront; per SPEC §36 we do not attempt to defeat it. Individual seller offers are personal data of private sellers.",48    "status": "blocked",49    "connectors": [],50    "statusReason": "Cloudflare challenge on every page (403 to bots); deliberately not crawled. Price/catalog needs are covered by the public bulk files (cardmarket-priceguide).",51    "verified": true,52    "verifiedAt": "2026-09-08",53    "notes": null54  },55  {56    "id": "limitless-tcg",57    "name": "Limitless TCG card database",58    "domain": "limitlesstcg.com",59    "country": "DE",60    "supportedCountries": ["US", "EU", "JP"],61    "languages": ["en", "ja"],62    "sourceType": "collector_database",63    "categories": ["pokemon"],64    "subcategories": ["english sets", "japanese sets"],65    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "No documented API (/api/cards → 404). The card page loads /api/cards/<cardId>/prices (daily [epoch ms, cents] history for TCGplayer USD and Cardmarket EUR); set pages accept ?display=list for a full table." },66    "urls": { "search": "https://limitlesstcg.com/cards", "product": "https://limitlesstcg.com/cards/MEG/1", "sold": null, "sitemap": null, "robots": "https://limitlesstcg.com/robots.txt" },67    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "years", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": false, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": true },68    "access": { "pagination": "none", "jsRendering": false, "antiBot": "none", "cloudflare": false, "robots": "User-agent: * / Disallow: (empty) — everything allowed.", "rateLimit": "self-imposed 1 req / 1.5 s", "preferredEngine": "api" },69    "currency": ["USD", "EUR"],70    "freshness": "daily",71    "priority": "wave2",72    "difficulty": "easy",73    "reliability": 0.7,74    "legal": "Public card database; prices are third-party (TCGplayer/Cardmarket) values relayed by Limitless and stored with provider metadata at reduced confidence. No decklists/tournament/player data fetched.",75    "status": "implemented",76    "connectors": ["limitless-tcg"],77    "statusReason": null,78    "verified": true,79    "verifiedAt": "2026-09-08",80    "notes": "Sister databases onepiece.limitlesstcg.com (HTTP 500), lorcana./riftbound.limitlesstcg.com (DNS failure) were unreachable at research time."81  },82  {83    "id": "pokellector",84    "name": "Pokellector",85    "domain": "pokellector.com",86    "country": "US",87    "supportedCountries": ["US", "JP"],88    "languages": ["en"],89    "sourceType": "collector_database",90    "categories": ["pokemon"],91    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "Terms: 'Pokellector does not offer an API to interact with the data we store.'" },92    "urls": { "search": "https://www.pokellector.com/sets", "product": "https://www.pokellector.com/Base-Set-Expansion/Charizard-Card-4", "sold": null, "sitemap": null, "robots": "https://www.pokellector.com/robots.txt" },93    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": false, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": true },94    "access": { "pagination": "none", "jsRendering": false, "antiBot": "none", "cloudflare": false, "robots": "No robots.txt (404); pages are plain HTML and technically reachable.", "rateLimit": null, "preferredEngine": "none" },95    "currency": ["USD"],96    "freshness": "daily",97    "priority": "later",98    "difficulty": "easy",99    "reliability": 0.7,100    "legal": "https://www.pokellector.com/terms — 'You agree not to use automated means to interact with the data we store without written permission. This includes, but isn't limited to, retrieving prices, images and managing collections.'",101    "status": "blocked",102    "connectors": [],103    "statusReason": "Terms of Use explicitly prohibit automated retrieval of their data (prices, images) without written permission → not crawled (SPEC §36). Their prices are TCGplayer relays anyway (covered by tcgcsv/limitless-tcg).",104    "verified": true,105    "verifiedAt": "2026-09-08",106    "notes": "Would need written permission from Pokellector to proceed."107  },108  {109    "id": "yuyu-tei",110    "name": "Yuyu-tei (遊々亭)",111    "domain": "yuyu-tei.jp",112    "country": "JP",113    "supportedCountries": ["JP"],114    "languages": ["ja"],115    "sourceType": "dealer",116    "categories": ["pokemon", "one_piece_card_game", "yugioh", "weiss_schwarz", "digimon_tcg", "other_tcg"],117    "subcategories": ["singles"],118    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "Server-rendered HTML; /top/<game> lists expansion codes (vers[] checkboxes), /sell/<game>/s/<ver> lists every single of an expansion with JPY price and stock." },119    "urls": { "search": "https://yuyu-tei.jp/top/poc", "product": "https://yuyu-tei.jp/sell/poc/s/m06", "sold": null, "sitemap": "https://yuyu-tei.jp/ext/sitemap/yuyutei/index.xml", "robots": "https://yuyu-tei.jp/robots.txt" },120    "data": { "liveListings": true, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": false, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": true },121    "access": { "pagination": "none", "jsRendering": false, "antiBot": "none", "cloudflare": false, "robots": "Only Crawl-delay entries for Slurp (1), serpstatbot (20), bingbot (10), AhrefsBot (10); nothing disallowed. Listed sitemap returns 404.", "rateLimit": "self-imposed 1 req / 4 s", "preferredEngine": "api" },122    "currency": ["JPY"],123    "freshness": "daily",124    "priority": "wave2",125    "difficulty": "easy",126    "reliability": 0.8,127    "legal": "Shop asking prices of a retailer (no personal data). Buy-list prices and damaged-card pages deliberately not fetched.",128    "status": "implemented",129    "connectors": ["yuyu-tei"],130    "statusReason": null,131    "verified": true,132    "verifiedAt": "2026-09-08",133    "notes": "Games: poc opc ygo ws digi dm ua vg bs gcg (also yrd, wsr, chaos, pm, re, hocg, zx, wx, lo, fe, sev, xs, gab, ei available)."134  },135  {136    "id": "hareruya",137    "name": "Hareruya (晴れる屋)",138    "domain": "hareruyamtg.com",139    "country": "JP",140    "supportedCountries": ["JP"],141    "languages": ["en", "ja"],142    "sourceType": "dealer",143    "categories": ["magic_the_gathering"],144    "subcategories": ["singles"],145    "api": { "available": true, "docsUrl": null, "auth": "none", "notes": "Undocumented but public JSON endpoint used by the storefront: GET /en/products/search/unisearch_api?fq.category_id=1&fq.cardset=<id>&fq.price=1~*&rows=60&page=n → response.numFound/docs (product, product_name_en, card_name, language code, price JPY, foil_flg, stock, weekly_sales, product_class, card_condition). Verified live (Black Lotus query: 73 docs)." },146    "urls": { "search": "https://www.hareruyamtg.com/en/products/search", "product": "https://www.hareruyamtg.com/en/products/detail/1282?lang=EN", "sold": null, "sitemap": "https://www.hareruyamtg.com/sitemap.xml", "robots": "https://www.hareruyamtg.com/robots.txt" },147    "data": { "liveListings": true, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": false, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": false },148    "access": { "pagination": "page_number", "jsRendering": true, "antiBot": "none", "cloudflare": false, "robots": "Allow: / ; Disallow: /en/products/search?*page=* , *sort=* , *order=* (HTML result pages), /*.csv$, /news/, deck downloads, purchase forwards. The JSON endpoint path /en/products/search/unisearch_api is not covered by any rule and is what the page itself calls.", "rateLimit": "site caps a query at 4 000 results; self-imposed 1 req / 4 s", "preferredEngine": "api" },149    "currency": ["JPY"],150    "freshness": "realtime",151    "priority": "wave2",152    "difficulty": "medium",153    "reliability": 0.8,154    "legal": "Retailer asking prices, no personal data. HTML search result pages with page/sort/order (robots-disallowed) are never requested.",155    "status": "implemented",156    "connectors": ["hareruya"],157    "statusReason": null,158    "verified": true,159    "verifiedAt": "2026-09-08",160    "notes": "Condition is exposed only as a numeric code (card_condition 1/2/…) → kept in metadata, never mapped. weekly_sales per offer is a useful velocity signal (metadata)."161  },162  {163    "id": "magi",164    "name": "magi (magi.camp)",165    "domain": "magi.camp",166    "country": "JP",167    "supportedCountries": ["JP"],168    "languages": ["ja"],169    "sourceType": "marketplace",170    "categories": ["pokemon", "yugioh", "magic_the_gathering", "one_piece_card_game", "other_tcg"],171    "subcategories": ["graded singles", "sealed"],172    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "Server-rendered Rails pages. /series/<id>/items?page=n browse lists (96/page, SOLD marker), /items/<id> with schema.org Product JSON-LD (offers.availability InStock/OutOfStock). /products/<id> pages show current offers per card model." },173    "urls": { "search": "https://magi.camp/series/31/items", "product": "https://magi.camp/items/449165794", "sold": null, "sitemap": null, "robots": "https://magi.camp/robots.txt" },174    "data": { "liveListings": true, "soldResults": true, "auctionResults": false, "historical": "none", "images": true, "seller": true, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": false },175    "access": { "pagination": "page_number", "jsRendering": false, "antiBot": "none", "cloudflare": false, "robots": "User-Agent: * Disallow: (all allowed). /items/search and /products/search disallowed for ClaudeBot/GPTBot/CCBot/PerplexityBot/Amazonbot/Bytespider/meta-externalagent etc. (site comment: 59 % of search load came from AI crawlers) — we never call the search endpoints.", "rateLimit": "self-imposed 1 req / 4 s", "preferredEngine": "api" },176    "currency": ["JPY"],177    "freshness": "realtime",178    "priority": "wave2",179    "difficulty": "medium",180    "reliability": 0.65,181    "legal": "C2C marketplace: seller usernames/profiles are personal data → never stored (only 'certified seller' boolean). Sold items carry no sale date → emitted as listings with availability sold, never as sales (§192).",182    "status": "implemented",183    "connectors": ["magi"],184    "statusReason": null,185    "verified": true,186    "verifiedAt": "2026-09-08",187    "notes": "Series ids: 31 Pokémon, 34 Yu-Gi-Oh!, 32 Magic, 20 Duel Masters, 100148 One Piece (+ sealed sub-series 1005xx)."188  },189  {190    "id": "cardrush",191    "name": "Cardrush (カードラッシュ) stores",192    "domain": "cardrush-mtg.jp",193    "country": "JP",194    "supportedCountries": ["JP"],195    "languages": ["ja"],196    "sourceType": "dealer",197    "categories": ["magic_the_gathering", "one_piece_card_game", "yugioh", "digimon_tcg", "pokemon", "other_tcg"],198    "subcategories": ["singles", "graded singles", "sealed"],199    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "Same shop platform on six domains: cardrush-mtg.jp, cardrush-op.jp, cardrush.jp (YGO), cardrush-dm.jp, cardrush-digimon.jp (plain HTTP 200) and cardrush-pokemon.jp (Cloudflare managed challenge → 403 to non-browsers; Scrapfly ASP country=jp passes at ~25 credits/page). product-list/<id>?page=n, 100 items/page, .item_data blocks." },200    "urls": { "search": "https://www.cardrush-mtg.jp/category", "product": "https://www.cardrush-mtg.jp/product-list/100", "sold": null, "sitemap": null, "robots": "https://www.cardrush-mtg.jp/robots.txt" },201    "data": { "liveListings": true, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": false },202    "access": { "pagination": "page_number", "jsRendering": false, "antiBot": "medium", "cloudflare": true, "robots": "All stores: Disallow / only for GPTBot, Bytespider, TikTokSpider, meta-externalagent. Pokémon store adds Cloudflare 'Content-Signal: search=yes, ai-train=no, use=reference' with Allow: / for *, plus Disallow for Amazonbot/Applebot-Extended/CCBot/ClaudeBot/GPTBot/Google-Extended/meta-externalagent.", "rateLimit": "self-imposed 1 req / 4 s (8 s + Scrapfly on the Pokémon store)", "preferredEngine": "api" },203    "currency": ["JPY"],204    "freshness": "realtime",205    "priority": "wave2",206    "difficulty": "medium",207    "reliability": 0.8,208    "legal": "Retailer asking prices, no personal data. Pokémon store is public but Cloudflare-fronted: fetched via Scrapfly ASP within its robots allowance (search=yes), capped to 1 page/category/run for cost.",209    "status": "implemented",210    "connectors": ["cardrush"],211    "statusReason": null,212    "verified": true,213    "verifiedAt": "2026-09-08",214    "notes": "cardrush-onepiece.jp / cardrush-yugioh.jp / cardrush-ws.jp do not resolve (DNS)."215  },216  {217    "id": "tcdb",218    "name": "TCDB – Trading Card Database",219    "domain": "tcdb.com",220    "country": "US",221    "supportedCountries": ["US"],222    "languages": ["en"],223    "sourceType": "collector_database",224    "categories": ["sports_cards", "non_sport_cards", "trading_cards"],225    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": null },226    "urls": { "search": "https://www.tcdb.com", "product": null, "sold": null, "sitemap": null, "robots": "https://www.tcdb.com/robots.txt" },227    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": false, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": true },228    "access": { "pagination": "page_number", "jsRendering": true, "antiBot": "blocking", "cloudflare": true, "robots": "Cannot be read: /robots.txt itself returns a Cloudflare managed challenge (HTTP 403, 'Just a moment…', noindex).", "rateLimit": null, "preferredEngine": "none" },229    "currency": ["USD"],230    "freshness": "unknown",231    "priority": "later",232    "difficulty": "very_hard",233    "reliability": 0.5,234    "legal": "Community checklist database protected by a Cloudflare challenge on every path; terms could not be retrieved by a bot. Not circumvented (SPEC §36).",235    "status": "blocked",236    "connectors": [],237    "statusReason": "Cloudflare managed challenge on all paths including robots.txt (HTTP 403); no lawful automated access path — not crawled.",238    "verified": true,239    "verifiedAt": "2026-09-08",240    "notes": null241  },242  {243    "id": "cardtrader",244    "name": "CardTrader",245    "domain": "cardtrader.com",246    "country": "IT",247    "supportedCountries": ["IT", "EU", "US"],248    "languages": ["en", "it", "es"],249    "sourceType": "marketplace",250    "categories": ["magic_the_gathering", "pokemon", "yugioh", "one_piece_card_game", "disney_lorcana", "flesh_and_blood", "digimon_tcg", "dragon_ball_tcg", "star_wars_tcg", "other_tcg"],251    "subcategories": ["singles", "sealed"],252    "api": { "available": true, "docsUrl": "https://www.cardtrader.com/docs/api/full", "auth": "api_key", "notes": "REST API v2 at https://api.cardtrader.com/api/v2 with `Authorization: Bearer <token>`; token issued to any registered account from its settings. Unauthenticated /games → 401 (verified). Endpoints: /games, /categories, /expansions, /blueprints/export?expansion_id, /marketplace/products?expansion_id|blueprint_id (25 cheapest offers per blueprint; 10 req/s), global 200 req/10 s." },253    "urls": { "search": "https://api.cardtrader.com/api/v2/marketplace/products?expansion_id=", "product": "https://api.cardtrader.com/api/v2/blueprints/export?expansion_id=", "sold": null, "sitemap": "https://www.cardtrader.com/sitemaps/en/blueprint_products.xml.gz", "robots": "https://www.cardtrader.com/robots.txt" },254    "data": { "liveListings": true, "soldResults": false, "auctionResults": false, "historical": "none", "images": true, "seller": true, "saleDate": false, "realizedPrice": false, "fees": false, "grading": true, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": true },255    "access": { "pagination": "none", "jsRendering": false, "antiBot": "none", "cloudflare": true, "robots": "www: Disallow /uploads/ except /uploads/blueprints/; sitemaps published. API host has no robots relevance (authenticated JSON).", "rateLimit": "200 req / 10 s; 10 req/s on marketplace/products", "preferredEngine": "api" },256    "currency": ["EUR", "USD"],257    "freshness": "realtime",258    "priority": "wave2",259    "difficulty": "easy",260    "reliability": 0.8,261    "legal": "Official API under CardTrader's API terms; read-only endpoints. Private ('normal') sellers' usernames are personal data → not stored.",262    "status": "gated",263    "connectors": ["cardtrader"],264    "statusReason": "Needs CARDTRADER_API_TOKEN (free with a CardTrader account); connector implemented against the documented shapes with fixtures from the docs' example responses.",265    "verified": true,266    "verifiedAt": "2026-09-08",267    "notes": "Blueprints carry scryfall_id, card_market_ids and tcg_player_id → strong entity-resolution bridge between Scryfall/MTGJSON/Cardmarket/TCGplayer ids."268  },269  {270    "id": "mtgstocks",271    "name": "MTGStocks",272    "domain": "mtgstocks.com",273    "country": "US",274    "supportedCountries": ["US"],275    "languages": ["en"],276    "sourceType": "pricing_guide",277    "categories": ["magic_the_gathering"],278    "api": { "available": false, "docsUrl": null, "auth": "none", "notes": "api.mtgstocks.com/prints/<id> answers 403 (CloudFront) to the honest bot UA; site robots.txt request returned 202 with no body." },279    "urls": { "search": "https://www.mtgstocks.com", "product": null, "sold": null, "sitemap": null, "robots": "https://www.mtgstocks.com/robots.txt" },280    "data": { "liveListings": false, "soldResults": false, "auctionResults": false, "historical": "years", "images": false, "seller": false, "saleDate": false, "realizedPrice": false, "fees": false, "grading": false, "certNumber": false, "itemId": true, "gtin": false, "population": false, "catalog": false },281    "access": { "pagination": "none", "jsRendering": true, "antiBot": "high", "cloudflare": false, "robots": "Could not be retrieved (HTTP 202 empty body).", "rateLimit": null, "preferredEngine": "none" },282    "currency": ["USD"],283    "freshness": "daily",284    "priority": "later",285    "difficulty": "hard",286    "reliability": 0.6,287    "legal": "Angular SPA fed by a private API that rejects non-browser clients; its prices are TCGplayer/Cardmarket relays already covered by tcgcsv, mtgjson and cardmarket-priceguide.",288    "status": "rejected",289    "connectors": [],290    "statusReason": "Private API blocks bots (403 CloudFront) and the data (TCGplayer/Cardmarket price relays) is redundant with mtgjson, tcgcsv and cardmarket-priceguide.",291    "verified": true,292    "verifiedAt": "2026-09-08",293    "notes": null294  }295]296