[{"data":1,"prerenderedAt":307},["ShallowReactive",2],{"changelog-nav":3,"\u002Fchangelog\u002Fapi":35},[4,7,11,15,19,23,27,31],{"path":5,"title":6},"\u002Fchangelog","Changelog home",{"title":8,"path":9,"stem":10},"Product changelog","\u002Fchangelog\u002Fproduct","3.changelog\u002F2.product",{"title":12,"path":13,"stem":14},"JavaScript changelog","\u002Fchangelog\u002Fjavascript","3.changelog\u002F3.javascript",{"title":16,"path":17,"stem":18},"API (Node.js) changelog","\u002Fchangelog\u002Fapi","3.changelog\u002F4.api",{"title":20,"path":21,"stem":22},"API (.NET) changelog","\u002Fchangelog\u002Fdotnet","3.changelog\u002F5.dotnet",{"title":24,"path":25,"stem":26},"iOS changelog","\u002Fchangelog\u002Fios","3.changelog\u002F6.iOS",{"title":28,"path":29,"stem":30},"Android changelog","\u002Fchangelog\u002Fandroid","3.changelog\u002F7.android",{"title":32,"path":33,"stem":34},"React Native changelog","\u002Fchangelog\u002Freact-native","3.changelog\u002F8.react native",{"id":36,"title":16,"body":37,"description":300,"extension":301,"meta":302,"navigation":303,"path":17,"seo":304,"sitemap":305,"stem":18,"__hash__":306},"changelog\u002F3.changelog\u002F4.api.md",{"type":38,"value":39,"toc":275},"minimark",[40,45,64,79,84,89,156,160,170,174,187,190,196,200,203,210,214,217,237,241,244,249,253,256,263,267,270],[41,42,44],"h1",{"id":43},"api-nodejs-sdk-changelog","API (Node.js) SDK changelog",[46,47,48,49,59,60,63],"p",{},"The server-side SDK for Node.js, published as ",[50,51,55],"a",{"href":52,"rel":53},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@ruptjs\u002Fapi",[54],"nofollow",[56,57,58],"code",{},"@ruptjs\u002Fapi",". It replaces the earlier ",[56,61,62],{},"@ruptjs\u002Fcore"," package.",[46,65,66,67,72,73,78],{},"The format is based on ",[50,68,71],{"href":69,"rel":70},"https:\u002F\u002Fkeepachangelog.com\u002Fen\u002F1.0.0\u002F",[54],"Keep a Changelog",",\nand this project adheres to ",[50,74,77],{"href":75,"rel":76},"https:\u002F\u002Fsemver.org\u002Fspec\u002Fv2.0.0.html",[54],"Semantic Versioning",".",[80,81,83],"h2",{"id":82},"_300-2026-06-02","[3.0.0] - 2026-06-02",[85,86,88],"h3",{"id":87},"added","Added",[90,91,92,99,109,115,121,127,141],"ul",{},[93,94,95,96,98],"li",{},"Initial release as ",[56,97,58],{},", targeting the Rupt V3 API.",[93,100,101,104,105,108],{},[56,102,103],{},"getEvaluation"," and ",[56,106,107],{},"consumeEvaluation"," to confirm evaluations server-side. Consuming is single-use: a replayed evaluation returns a 409.",[93,110,111,114],{},[56,112,113],{},"getChallenge"," to retrieve a challenge and its status.",[93,116,117,120],{},[56,118,119],{},"getUserDevices"," to list a user's devices.",[93,122,123,126],{},[56,124,125],{},"updateUser"," for partial updates to email, phone, metadata, and groups.",[93,128,129,130,133,134,137,138,78],{},"Automatic retries with exponential backoff on network errors and 5xx responses, plus typed errors: ",[56,131,132],{},"RuptApiError",", ",[56,135,136],{},"RuptNetworkError",", and ",[56,139,140],{},"RuptTimeoutError",[93,142,143,144,133,147,133,150,137,153,78],{},"Configurable ",[56,145,146],{},"domain",[56,148,149],{},"timeout",[56,151,152],{},"retries",[56,154,155],{},"maxRetryDelay",[85,157,159],{"id":158},"changed","Changed",[90,161,162],{},[93,163,164,165,167,168,78],{},"Package renamed from ",[56,166,62],{}," to ",[56,169,58],{},[85,171,173],{"id":172},"removed","Removed",[90,175,176],{},[93,177,178,181,182,184,185,78],{},[56,179,180],{},"evaluate",". In V3, evaluations are created by the client SDKs and confirmed server-side with ",[56,183,103],{}," or ",[56,186,107],{},[188,189],"hr",{},[46,191,192,193,195],{},"The versions below shipped as ",[56,194,62],{}," against the V2 API.",[80,197,199],{"id":198},"_010-2025-08-25","[0.1.0] - 2025-08-25",[85,201,88],{"id":202},"added-1",[90,204,205],{},[93,206,207,209],{},[56,208,125],{}," method to update a user.",[80,211,213],{"id":212},"_0013-2024-11-11","[0.0.13] - 2024-11-11",[85,215,88],{"id":216},"added-2",[90,218,219],{},[93,220,221,223,224,133,227,133,230,137,233,236],{},[56,222,180],{}," method now accepts ",[56,225,226],{},"email",[56,228,229],{},"phone",[56,231,232],{},"ip",[56,234,235],{},"metadata"," parameters.",[80,238,240],{"id":239},"_0012-2024-11-05","[0.0.12] - 2024-11-05",[85,242,159],{"id":243},"changed-1",[90,245,246],{},[93,247,248],{},"Updated readme.",[80,250,252],{"id":251},"_0011-2024-11-05","[0.0.11] - 2024-11-05",[85,254,88],{"id":255},"added-3",[90,257,258],{},[93,259,260,262],{},[56,261,180],{}," method to evaluate an action for a user.",[80,264,266],{"id":265},"_0010-2024-09-16","[0.0.10] - 2024-09-16",[85,268,159],{"id":269},"changed-2",[90,271,272],{},[93,273,274],{},"Initial release of the Core SDK.",{"title":276,"searchDepth":277,"depth":277,"links":278},"",2,[279,285,288,291,294,297],{"id":82,"depth":277,"text":83,"children":280},[281,283,284],{"id":87,"depth":282,"text":88},3,{"id":158,"depth":282,"text":159},{"id":172,"depth":282,"text":173},{"id":198,"depth":277,"text":199,"children":286},[287],{"id":202,"depth":282,"text":88},{"id":212,"depth":277,"text":213,"children":289},[290],{"id":216,"depth":282,"text":88},{"id":239,"depth":277,"text":240,"children":292},[293],{"id":243,"depth":282,"text":159},{"id":251,"depth":277,"text":252,"children":295},[296],{"id":255,"depth":282,"text":88},{"id":265,"depth":277,"text":266,"children":298},[299],{"id":269,"depth":282,"text":159},"The server-side SDK for Node.js, published as @ruptjs\u002Fapi. It replaces the earlier @ruptjs\u002Fcore package.","md",{},true,{"title":16,"description":300},{"loc":17},"Up2ZWe7TWp3C7YlMvFTBHu7_x8tgLdGLYZWVUB4o210",1784213794580]