{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["partial","admonition","tabs","tab","code-snippet"]},"type":"markdown"},"seo":{"title":"Member self-service"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"member-self-service","__idx":0},"children":["Member self-service"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This playbook is for developers building the backend of a member portal or mobile app on VBAPI. It shows the calls that answer a member's everyday questions: what plan am I on, how much of my deductible have I met, what happened to my claims, and how do I get a new ID card."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":""},"children":[]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Who this is for"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Developers of member portals, mobile apps, and member service tools"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Time to run"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["About 15 minutes"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Writes data"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes, one step: the replacement ID card request. Every other step only reads data."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Operations used"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["10: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/members/getmembers"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}"]}]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/subscriber-enrollments/listsubenrollment"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/enrollments"]}]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/subscriber-enrollment-plans/listsubenrollmentplan"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/enrollments/{groupID}/{divisionID}/{groupCoverageStart}/{startDate}/plans"]}]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/members/listplanyearbymember"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}/list-plan-year"]}]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/enrollment-accumulators/listaccumulatordetail"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}/list-accum-detail"]}]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/members/listmemberclaimbymember"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}/list-member-claim"]}]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/eob/getmembereob"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /claims/{claimNumber}/eob"]}]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-id-card-request-types/listidcardrequesttype"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /id-card-request-types"]}]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-id-card-requests/createidcardrequest"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /id-card-requests"]}]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-id-card-requests/getidcardrequest"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /id-card-requests/{iDCardRequestKey}"]}]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"This changes production data"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["VBAPI clients connect to production, so the write calls on this page create or change real records in the database you name in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vbasoftware-database"]},". Try the steps in a non-production database first if VBA has given you one, use clearly fake values while you test, and keep the \"Check it worked\" calls, which only read data. \"Try it\" in the API reference also calls production."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Your app is responsible for member security"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["VBAPI authenticates your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["integration"]},", not your members. The API user is a service account that can read every member in the database, and VBAPI returns whatever ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriberID"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["memberSeq"]}," you ask for. Your app must:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["sign in its own members with your own identity provider"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["map each signed-in member to their ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriber_ID"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["member_Seq"]}," on your server, and never take those values from the browser or app"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["call VBAPI only from your server, so the API key, password, and ID token never reach a member's device"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["show a member only their own data, or their family's if your policy allows it"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Data masking settings in VBASoftware can hide some fields (for example SSN) in responses; do not rely on masking for access control."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Before you start"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You have finished the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/get-started/quick-start"},"children":["quick start"]}," and can get an ID token. The samples read your credentials from environment variables; see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#set-up-your-environment"},"children":["Set up your environment"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The member is enrolled in a plan. The samples use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DOCS-0001"]},", member ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["01"]},", from ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/playbooks/enroll-employees"},"children":["Enroll employees and dependents"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The API user can read members, enrollments, accumulators, and claims, and create ID card requests."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-it-fits-together","__idx":1},"children":["How it fits together"]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"sequenceDiagram\n  participant Member as Member's app\n  participant Server as Your server\n  participant API as VBAPI\n  Member->>Server: Signs in (your identity provider)\n  Server->>API: GET member, enrollments, plans\n  API-->>Server: group_ID, plan_ID\n  Server->>API: GET list-plan-year, list-accum-detail\n  API-->>Server: plan year, deductible and out-of-pocket totals\n  Server->>API: GET list-member-claim, GET /claims/{claimNumber}/eob\n  API-->>Server: claims, EOB PDF\n  Member->>Server: Requests a new ID card\n  Server->>API: POST /id-card-requests\n  API-->>Server: idCardRequest_Key\n","diagramHtml":"<svg id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"max-width: 1011px;\" viewBox=\"-50 -10 1011 629\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><style>\n    #diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c foreignObject {\n      overflow: visible;\n    }\n  </style><g><rect x=\"761\" y=\"543\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"API\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"836\" y=\"575.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"836\" dy=\"0\">VBAPI</tspan></text></g><g><rect x=\"291\" y=\"543\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Server\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"366\" y=\"575.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"366\" dy=\"0\">Your server</tspan></text></g><g><rect x=\"0\" y=\"543\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Member\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"575.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">Member's app</tspan></text></g><g><line id=\"actor2\" x1=\"836\" y1=\"65\" x2=\"836\" y2=\"543\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"API\" data-et=\"life-line\" data-id=\"API\"></line><g id=\"root-2\" data-et=\"participant\" data-type=\"participant\" data-id=\"API\"><rect x=\"761\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"API\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"836\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"836\" dy=\"0\">VBAPI</tspan></text></g></g><g><line id=\"actor1\" x1=\"366\" y1=\"65\" x2=\"366\" y2=\"543\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Server\" data-et=\"life-line\" data-id=\"Server\"></line><g id=\"root-1\" data-et=\"participant\" data-type=\"participant\" data-id=\"Server\"><rect x=\"291\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Server\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"366\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"366\" dy=\"0\">Your server</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"543\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Member\" data-et=\"life-line\" data-id=\"Member\"></line><g id=\"root-0\" data-et=\"participant\" data-type=\"participant\" data-id=\"Member\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Member\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">Member's app</tspan></text></g></g><style>#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .error-icon{fill:#552222;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .error-text{fill:#552222;stroke:#552222;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .edge-thickness-normal{stroke-width:1px;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .edge-thickness-thick{stroke-width:3.5px;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .edge-pattern-solid{stroke-dasharray:0;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .edge-pattern-dashed{stroke-dasharray:3;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .edge-pattern-dotted{stroke-dasharray:2;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .marker{fill:#333333;stroke:#333333;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .marker.cross{stroke:#333333;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c p{margin:0;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .actor{stroke:#9370DB;fill:#ECECFF;stroke-width:1;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c rect.actor.outer-path[data-look=\"neo\"]{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c rect.note[data-look=\"neo\"]{stroke:#aaaa33;fill:#fff5ad;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c text.actor&gt;tspan{fill:black;stroke:none;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .actor-line{stroke:#9370DB;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .innerArc{stroke-width:1.5;stroke-dasharray:none;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [id$=\"-arrowhead\"] path{fill:#333;stroke:#333;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .sequenceNumber{fill:white;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [id$=\"-sequencenumber\"]{fill:#333;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [id$=\"-crosshead\"] path{fill:#333;stroke:#333;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .messageText{fill:#333;stroke:none;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .labelBox{stroke:#9370DB;fill:#ECECFF;filter:none;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .labelText,#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .labelText&gt;tspan{fill:black;stroke:none;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .loopText,#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .loopText&gt;tspan{fill:black;stroke:none;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .sectionTitle,#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .sectionTitle&gt;tspan{fill:black;stroke:none;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#9370DB;fill:#9370DB;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .note{stroke:#aaaa33;fill:#fff5ad;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .noteText,#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .noteText&gt;tspan{fill:black;stroke:none;font-weight:normal;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .activation0{fill:#f4f4f4;stroke:#666;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .activation1{fill:#f4f4f4;stroke:#666;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .activation2{fill:#f4f4f4;stroke:#666;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .actorPopupMenu{position:absolute;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .actor-man circle,#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c line{fill:#ECECFF;stroke-width:2px;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c g rect.rect{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));stroke:#9370DB;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c .node .neo-node{stroke:#9370DB;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].node rect,#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].cluster rect,#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g></g><defs><symbol id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><defs><marker id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-solidTopArrowHead\" refX=\"7.9\" refY=\"7.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 8 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-solidBottomArrowHead\" refX=\"7.9\" refY=\"0.75\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 0 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-stickTopArrowHead\" refX=\"7.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 7 7\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><defs><marker id=\"diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-stickBottomArrowHead\" refX=\"7.5\" refY=\"0\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 7 L 7 0\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><text x=\"219\" y=\"80\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Signs in (your identity provider)</text><line x1=\"76\" y1=\"111\" x2=\"362\" y2=\"111\" class=\"messageLine0\" data-et=\"message\" data-id=\"i0\" data-from=\"Member\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead)\" style=\"fill: none;\"></line><text x=\"600\" y=\"126\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">GET member, enrollments, plans</text><line x1=\"367\" y1=\"157\" x2=\"832\" y2=\"157\" class=\"messageLine0\" data-et=\"message\" data-id=\"i1\" data-from=\"Server\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead)\" style=\"fill: none;\"></line><text x=\"603\" y=\"172\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">group_ID, plan_ID</text><line x1=\"835\" y1=\"203\" x2=\"370\" y2=\"203\" class=\"messageLine1\" data-et=\"message\" data-id=\"i2\" data-from=\"API\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"600\" y=\"218\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">GET list-plan-year, list-accum-detail</text><line x1=\"367\" y1=\"249\" x2=\"832\" y2=\"249\" class=\"messageLine0\" data-et=\"message\" data-id=\"i3\" data-from=\"Server\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead)\" style=\"fill: none;\"></line><text x=\"603\" y=\"264\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">plan year, deductible and out-of-pocket totals</text><line x1=\"835\" y1=\"295\" x2=\"370\" y2=\"295\" class=\"messageLine1\" data-et=\"message\" data-id=\"i4\" data-from=\"API\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"600\" y=\"310\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">GET list-member-claim, GET /claims/{claimNumber}/eob</text><line x1=\"367\" y1=\"341\" x2=\"832\" y2=\"341\" class=\"messageLine0\" data-et=\"message\" data-id=\"i5\" data-from=\"Server\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead)\" style=\"fill: none;\"></line><text x=\"603\" y=\"356\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">claims, EOB PDF</text><line x1=\"835\" y1=\"385\" x2=\"370\" y2=\"385\" class=\"messageLine1\" data-et=\"message\" data-id=\"i6\" data-from=\"API\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"219\" y=\"400\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Requests a new ID card</text><line x1=\"76\" y1=\"431\" x2=\"362\" y2=\"431\" class=\"messageLine0\" data-et=\"message\" data-id=\"i7\" data-from=\"Member\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead)\" style=\"fill: none;\"></line><text x=\"600\" y=\"446\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">POST /id-card-requests</text><line x1=\"367\" y1=\"477\" x2=\"832\" y2=\"477\" class=\"messageLine0\" data-et=\"message\" data-id=\"i8\" data-from=\"Server\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead)\" style=\"fill: none;\"></line><text x=\"603\" y=\"492\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">idCardRequest_Key</text><line x1=\"835\" y1=\"523\" x2=\"370\" y2=\"523\" class=\"messageLine1\" data-et=\"message\" data-id=\"i9\" data-from=\"API\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-a37cf6509dd945d135dda8fd1e92a75a228cb7ac2ec5190db46e038e3befe95c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line></svg>","diagramHtmlDark":"<svg id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"max-width: 1011px;\" viewBox=\"-50 -10 1011 629\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><style>\n    #diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec foreignObject {\n      overflow: visible;\n    }\n  </style><g><rect x=\"761\" y=\"543\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"API\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"836\" y=\"575.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"836\" dy=\"0\">VBAPI</tspan></text></g><g><rect x=\"291\" y=\"543\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Server\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"366\" y=\"575.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"366\" dy=\"0\">Your server</tspan></text></g><g><rect x=\"0\" y=\"543\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Member\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"575.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">Member's app</tspan></text></g><g><line id=\"actor2\" x1=\"836\" y1=\"65\" x2=\"836\" y2=\"543\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"API\" data-et=\"life-line\" data-id=\"API\"></line><g id=\"root-2\" data-et=\"participant\" data-type=\"participant\" data-id=\"API\"><rect x=\"761\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"API\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"836\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"836\" dy=\"0\">VBAPI</tspan></text></g></g><g><line id=\"actor1\" x1=\"366\" y1=\"65\" x2=\"366\" y2=\"543\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Server\" data-et=\"life-line\" data-id=\"Server\"></line><g id=\"root-1\" data-et=\"participant\" data-type=\"participant\" data-id=\"Server\"><rect x=\"291\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Server\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"366\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"366\" dy=\"0\">Your server</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"543\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Member\" data-et=\"life-line\" data-id=\"Member\"></line><g id=\"root-0\" data-et=\"participant\" data-type=\"participant\" data-id=\"Member\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Member\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">Member's app</tspan></text></g></g><style>#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .error-icon{fill:#a44141;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .error-text{fill:#ddd;stroke:#ddd;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .edge-thickness-normal{stroke-width:1px;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .edge-thickness-thick{stroke-width:3.5px;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .edge-pattern-solid{stroke-dasharray:0;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .edge-pattern-dashed{stroke-dasharray:3;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .edge-pattern-dotted{stroke-dasharray:2;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .marker{fill:lightgrey;stroke:lightgrey;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .marker.cross{stroke:lightgrey;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec p{margin:0;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .actor{stroke:#ccc;fill:#1f2020;stroke-width:1;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec rect.actor.outer-path[data-look=\"neo\"]{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec rect.note[data-look=\"neo\"]{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec text.actor&gt;tspan{fill:lightgrey;stroke:none;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .actor-line{stroke:#ccc;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .innerArc{stroke-width:1.5;stroke-dasharray:none;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:lightgrey;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:lightgrey;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [id$=\"-arrowhead\"] path{fill:lightgrey;stroke:lightgrey;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .sequenceNumber{fill:black;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [id$=\"-sequencenumber\"]{fill:lightgrey;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [id$=\"-crosshead\"] path{fill:lightgrey;stroke:lightgrey;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .messageText{fill:lightgrey;stroke:none;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .labelBox{stroke:#ccc;fill:#1f2020;filter:none;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .labelText,#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .labelText&gt;tspan{fill:lightgrey;stroke:none;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .loopText,#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .loopText&gt;tspan{fill:lightgrey;stroke:none;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .sectionTitle,#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .sectionTitle&gt;tspan{fill:lightgrey;stroke:none;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#ccc;fill:#ccc;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .note{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .noteText,#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .noteText&gt;tspan{fill:rgb(183.8476190475, 181.5523809523, 181.5523809523);stroke:none;font-weight:normal;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .activation0{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .activation1{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .activation2{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .actorPopupMenu{position:absolute;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .actorPopupMenuPanel{position:absolute;fill:#1f2020;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .actor-man circle,#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec line{fill:#1f2020;stroke-width:2px;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec g rect.rect{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));stroke:#ccc;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec .node .neo-node{stroke:#ccc;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].node rect,#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].cluster rect,#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].node polygon{stroke:url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].node path{stroke:url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-gradient);stroke-width:1px;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].node circle{stroke:url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g></g><defs><symbol id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><defs><marker id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-solidTopArrowHead\" refX=\"7.9\" refY=\"7.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 8 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-solidBottomArrowHead\" refX=\"7.9\" refY=\"0.75\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 0 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-stickTopArrowHead\" refX=\"7.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 7 7\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><defs><marker id=\"diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-stickBottomArrowHead\" refX=\"7.5\" refY=\"0\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 7 L 7 0\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><text x=\"219\" y=\"80\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Signs in (your identity provider)</text><line x1=\"76\" y1=\"111\" x2=\"362\" y2=\"111\" class=\"messageLine0\" data-et=\"message\" data-id=\"i0\" data-from=\"Member\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead)\" style=\"fill: none;\"></line><text x=\"600\" y=\"126\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">GET member, enrollments, plans</text><line x1=\"367\" y1=\"157\" x2=\"832\" y2=\"157\" class=\"messageLine0\" data-et=\"message\" data-id=\"i1\" data-from=\"Server\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead)\" style=\"fill: none;\"></line><text x=\"603\" y=\"172\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">group_ID, plan_ID</text><line x1=\"835\" y1=\"203\" x2=\"370\" y2=\"203\" class=\"messageLine1\" data-et=\"message\" data-id=\"i2\" data-from=\"API\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"600\" y=\"218\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">GET list-plan-year, list-accum-detail</text><line x1=\"367\" y1=\"249\" x2=\"832\" y2=\"249\" class=\"messageLine0\" data-et=\"message\" data-id=\"i3\" data-from=\"Server\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead)\" style=\"fill: none;\"></line><text x=\"603\" y=\"264\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">plan year, deductible and out-of-pocket totals</text><line x1=\"835\" y1=\"295\" x2=\"370\" y2=\"295\" class=\"messageLine1\" data-et=\"message\" data-id=\"i4\" data-from=\"API\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"600\" y=\"310\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">GET list-member-claim, GET /claims/{claimNumber}/eob</text><line x1=\"367\" y1=\"341\" x2=\"832\" y2=\"341\" class=\"messageLine0\" data-et=\"message\" data-id=\"i5\" data-from=\"Server\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead)\" style=\"fill: none;\"></line><text x=\"603\" y=\"356\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">claims, EOB PDF</text><line x1=\"835\" y1=\"385\" x2=\"370\" y2=\"385\" class=\"messageLine1\" data-et=\"message\" data-id=\"i6\" data-from=\"API\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"219\" y=\"400\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Requests a new ID card</text><line x1=\"76\" y1=\"431\" x2=\"362\" y2=\"431\" class=\"messageLine0\" data-et=\"message\" data-id=\"i7\" data-from=\"Member\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead)\" style=\"fill: none;\"></line><text x=\"600\" y=\"446\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">POST /id-card-requests</text><line x1=\"367\" y1=\"477\" x2=\"832\" y2=\"477\" class=\"messageLine0\" data-et=\"message\" data-id=\"i8\" data-from=\"Server\" data-to=\"API\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead)\" style=\"fill: none;\"></line><text x=\"603\" y=\"492\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">idCardRequest_Key</text><line x1=\"835\" y1=\"523\" x2=\"370\" y2=\"523\" class=\"messageLine1\" data-et=\"message\" data-id=\"i9\" data-from=\"API\" data-to=\"Server\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-3d42c69442dcbdd912a4fc555674921aca2701306afa7227ae84d338f6b5c7ec-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line></svg>"},"children":["sequenceDiagram\n  participant Member as Member's app\n  participant Server as Your server\n  participant API as VBAPI\n  Member->>Server: Signs in (your identity provider)\n  Server->>API: GET member, enrollments, plans\n  API-->>Server: group_ID, plan_ID\n  Server->>API: GET list-plan-year, list-accum-detail\n  API-->>Server: plan year, deductible and out-of-pocket totals\n  Server->>API: GET list-member-claim, GET /claims/{claimNumber}/eob\n  API-->>Server: claims, EOB PDF\n  Member->>Server: Requests a new ID card\n  Server->>API: POST /id-card-requests\n  API-->>Server: idCardRequest_Key\n"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"steps","__idx":2},"children":["Steps"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"1-read-the-member","__idx":3},"children":["1. Read the member"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/members/getmembers"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Load the signed-in member's name and details for the app's profile screen."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/MemberSelfServicePlaybook.cs","language":"csharp","header":{"controls":{"copy":{}}},"lang":"csharp","source":"        var member = (await api.GetAsync(memberPath)).Data!;\n        Console.WriteLine($\"Member: {member[\"first_Name\"]} {member[\"last_Name\"]} relationship: {member[\"relationship\"]}\");\n        "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/member_self_service.py","language":"python","header":{"controls":{"copy":{}}},"lang":"python","source":"    member = api.get(member_path).data\n    print(\"Member:\", member[\"first_Name\"], member[\"last_Name\"], \"relationship:\", member.get(\"relationship\"))\n    "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"TypeScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/memberSelfService.ts","language":"typescript","header":{"controls":{"copy":{}}},"lang":"typescript","source":"  const member = (await api.get(memberPath)).data;\n  console.log(\"Member:\", member.first_Name, member.last_Name, \"relationship:\", member.relationship);\n  "},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"2-find-the-members-current-plan","__idx":4},"children":["2. Find the member's current plan"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/subscriber-enrollments/listsubenrollment"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/enrollments"]}]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/subscriber-enrollment-plans/listsubenrollmentplan"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/enrollments/{groupID}/{divisionID}/{groupCoverageStart}/{startDate}/plans"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enrollments belong to the family (the subscriber). Pick the enrollment whose ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["start_Date"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["end_Date"]}," covers today, then read its plans. The sample falls back to the latest enrollment, which helps with test data dated in the future."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/MemberSelfServicePlaybook.cs","language":"csharp","header":{"controls":{"copy":{}}},"lang":"csharp","source":"        var enrollments = new List<JsonNode>();\n        await foreach (var e in api.GetAllAsync($\"/subscribers/{SubscriberId}/enrollments\"))\n            enrollments.Add(e!);\n        enrollments = enrollments.OrderBy(e => DatePart(e[\"start_Date\"]), StringComparer.Ordinal).ToList();\n        var enrollment = enrollments.FirstOrDefault(e => Covers(e, \"start_Date\", \"end_Date\", today)) ?? enrollments[^1];\n        var groupId = enrollment[\"group_ID\"]!.GetValue<string>();\n        var divisionId = enrollment[\"division_ID\"]!.GetValue<string>();\n        var plans = (await api.GetAsync(\n            $\"/subscribers/{SubscriberId}/enrollments/{groupId}/{divisionId}/{DatePart(enrollment[\"group_Coverage_Start\"])}/{DatePart(enrollment[\"start_Date\"])}/plans\")).Data!.AsArray();\n        var planId = plans[0]![\"plan_ID\"]!.GetValue<string>();\n        Console.WriteLine($\"Group {groupId} plan {planId}\");\n        "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/member_self_service.py","language":"python","header":{"controls":{"copy":{}}},"lang":"python","source":"    enrollments = list(api.iter_pages(f\"/subscribers/{SUBSCRIBER_ID}/enrollments\"))\n    enrollments.sort(key=lambda e: e[\"start_Date\"])\n    enrollment = next((e for e in enrollments if covers(e, \"start_Date\", \"end_Date\", today)), enrollments[-1])\n    group_id = enrollment[\"group_ID\"]\n    plans = api.get(\n        f\"/subscribers/{SUBSCRIBER_ID}/enrollments/{group_id}/{enrollment['division_ID']}\"\n        f\"/{enrollment['group_Coverage_Start'][:10]}/{enrollment['start_Date'][:10]}/plans\"\n    ).data\n    plan_id = plans[0][\"plan_ID\"]\n    print(\"Group\", group_id, \"plan\", plan_id)\n    "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"TypeScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/memberSelfService.ts","language":"typescript","header":{"controls":{"copy":{}}},"lang":"typescript","source":"  const enrollments: any[] = [];\n  for await (const e of api.getAll(`/subscribers/${SUBSCRIBER_ID}/enrollments`)) enrollments.push(e);\n  enrollments.sort((a, b) => a.start_Date.localeCompare(b.start_Date));\n  const enrollment = enrollments.find((e) => covers(e, \"start_Date\", \"end_Date\", today)) ?? enrollments[enrollments.length - 1];\n  const groupId: string = enrollment.group_ID;\n  const divisionId: string = enrollment.division_ID;\n  const plans: any[] = (\n    await api.get(\n      `/subscribers/${SUBSCRIBER_ID}/enrollments/${groupId}/${divisionId}/${datePart(enrollment.group_Coverage_Start)}/${datePart(enrollment.start_Date)}/plans`,\n    )\n  ).data;\n  const planId: string = plans[0].plan_ID;\n  console.log(\"Group\", groupId, \"plan\", planId);\n  "},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save from the response:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["group_ID"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["division_ID"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["plan_ID"]}," (steps 4 and 7)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"3-find-the-plan-year","__idx":5},"children":["3. Find the plan year"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/members/listplanyearbymember"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}/list-plan-year"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Accumulators (deductible and out-of-pocket totals) reset each plan year. This lists the plan years that apply to the member, from the group's plan years and the member's own plan year if they have one. Pick the one whose ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["from_Date"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["thru_Date"]}," covers today."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/MemberSelfServicePlaybook.cs","language":"csharp","header":{"controls":{"copy":{}}},"lang":"csharp","source":"        var planYears = (await api.GetAsync($\"{memberPath}/list-plan-year\")).Data!.AsArray()\n            .Select(y => y!).OrderBy(y => DatePart(y[\"from_Date\"]), StringComparer.Ordinal).ToList();\n        var planYear = (planYears.FirstOrDefault(y => Covers(y, \"from_Date\", \"thru_Date\", today)) ?? planYears[^1])[\"plan_Year\"]!.GetValue<string>();\n        Console.WriteLine($\"Plan year {planYear}\");\n        "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/member_self_service.py","language":"python","header":{"controls":{"copy":{}}},"lang":"python","source":"    plan_years = api.get(f\"{member_path}/list-plan-year\").data\n    plan_years.sort(key=lambda y: y.get(\"from_Date\") or \"\")\n    plan_year = next((y for y in plan_years if covers(y, \"from_Date\", \"thru_Date\", today)), plan_years[-1])[\"plan_Year\"]\n    print(\"Plan year\", plan_year)\n    "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"TypeScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/memberSelfService.ts","language":"typescript","header":{"controls":{"copy":{}}},"lang":"typescript","source":"  const planYears: any[] = (await api.get(`${memberPath}/list-plan-year`)).data;\n  planYears.sort((a, b) => datePart(a.from_Date).localeCompare(datePart(b.from_Date)));\n  const planYear: string = (planYears.find((y) => covers(y, \"from_Date\", \"thru_Date\", today)) ?? planYears[planYears.length - 1]).plan_Year;\n  console.log(\"Plan year\", planYear);\n  "},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example response (illustrative; field values are fake):"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": [\n    {\n      \"group_ID\": \"DOCS-GRP1\",\n      \"division_ID\": \"DOCS-DIV1\",\n      \"plan_Year\": \"2030\",\n      \"from_Date\": \"2030-01-01T00:00:00\",\n      \"thru_Date\": \"2030-12-31T00:00:00\",\n      \"qtr4_Accum\": false,\n      \"qtr4_Deductible\": false,\n      \"qtr4_Member\": false,\n      \"qtr4_Out_Of_Pocket\": false,\n      \"qtr4_Subscriber\": false\n    }\n  ],\n  \"error\": null,\n  \"debug\": { \"activityID\": \"00000000-0000-0000-0000-000000000000\" }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save from the response:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["plan_Year"]}," (step 4)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"4-show-deductible-and-out-of-pocket-progress","__idx":6},"children":["4. Show deductible and out-of-pocket progress"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/enrollment-accumulators/listaccumulatordetail"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}/list-accum-detail"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pass ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["groupId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["planId"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["planYear"]}," as query parameters. Each row has the limits and the amounts used so far, for the member, the family (subscriber), and by network."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/MemberSelfServicePlaybook.cs","language":"csharp","header":{"controls":{"copy":{}}},"lang":"csharp","source":"        var query = $\"groupId={Uri.EscapeDataString(groupId)}&planId={Uri.EscapeDataString(planId)}&planYear={Uri.EscapeDataString(planYear)}\";\n        var accumulators = (await api.GetAsync($\"{memberPath}/list-accum-detail?{query}\")).Data!.AsArray();\n        foreach (var row in accumulators)\n        {\n            var oopMax = Amount(row!, \"ooP_Max_Mem\");\n            var oopUsed = Amount(row!, \"out_Of_Pocket\");\n            Console.WriteLine($\"Deductible: {Amount(row!, \"deductible_Used\"):F2} of {Amount(row!, \"member_Deductible\"):F2} met\");\n            Console.WriteLine($\"Out of pocket: {oopUsed:F2} of {oopMax:F2}, {Math.Max(oopMax - oopUsed, 0):F2} to go\");\n        }\n        "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/member_self_service.py","language":"python","header":{"controls":{"copy":{}}},"lang":"python","source":"    accumulators = api.get(\n        f\"{member_path}/list-accum-detail\",\n        {\"groupId\": group_id, \"planId\": plan_id, \"planYear\": plan_year},\n    ).data\n    for row in accumulators:\n        deductible, deductible_used = row.get(\"member_Deductible\") or 0, row.get(\"deductible_Used\") or 0\n        oop_max, oop_used = row.get(\"ooP_Max_Mem\") or 0, row.get(\"out_Of_Pocket\") or 0\n        print(f\"Deductible: {deductible_used:.2f} of {deductible:.2f} met\")\n        print(f\"Out of pocket: {oop_used:.2f} of {oop_max:.2f}, {max(oop_max - oop_used, 0):.2f} to go\")\n    "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"TypeScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/memberSelfService.ts","language":"typescript","header":{"controls":{"copy":{}}},"lang":"typescript","source":"  const accumulators: any[] = (await api.get(`${memberPath}/list-accum-detail`, { groupId, planId, planYear })).data;\n  for (const row of accumulators) {\n    const oopMax = row.ooP_Max_Mem ?? 0;\n    const oopUsed = row.out_Of_Pocket ?? 0;\n    console.log(`Deductible: ${(row.deductible_Used ?? 0).toFixed(2)} of ${(row.member_Deductible ?? 0).toFixed(2)} met`);\n    console.log(`Out of pocket: ${oopUsed.toFixed(2)} of ${oopMax.toFixed(2)}, ${Math.max(oopMax - oopUsed, 0).toFixed(2)} to go`);\n  }\n  "},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These fields answer the two common questions. The sample uses the member-level, all-network fields:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Question"},"children":["Question"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Limit"},"children":["Limit"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Used so far"},"children":["Used so far"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["How much of my deductible have I met?"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["member_Deductible"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deductible_Used"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["How much of my family's deductible is met?"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriber_Deductible"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fam_Deductible_Used"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["How much until my out-of-pocket maximum?"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ooP_Max_Mem"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["out_Of_Pocket"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["How much until my family's out-of-pocket maximum?"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ooP_Max_Sub"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fam_Out_Of_Pocket"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Fields with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PPO"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Net"]}," in the name are the in-network figures, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OON"]}," the out-of-network figures, for plans that track them separately; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ooP_Calc_Option"]}," describes how the plan combines them. Have your benefits team confirm which fields match your plan designs before you show them to members."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example response (illustrative; field values are fake):"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": [\n    {\n      \"plan_ID\": \"DOCS-PLAN1\",\n      \"member_Deductible\": 1500.0,\n      \"deductible_Used\": 400.0,\n      \"subscriber_Deductible\": 3000.0,\n      \"fam_Deductible_Used\": 650.0,\n      \"ooP_Max_Mem\": 5000.0,\n      \"out_Of_Pocket\": 820.0,\n      \"ooP_Max_Sub\": 10000.0,\n      \"fam_Out_Of_Pocket\": 1100.0\n    }\n  ],\n  \"error\": null,\n  \"debug\": { \"activityID\": \"00000000-0000-0000-0000-000000000000\" }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"5-show-claim-history","__idx":7},"children":["5. Show claim history"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/members/listmemberclaimbymember"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}/list-member-claim"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This returns every claim for the member, newest service date first, in one response. It takes no paging or filter parameters, so page and filter in your app (for example, the last 12 months, 10 per screen)."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/MemberSelfServicePlaybook.cs","language":"csharp","header":{"controls":{"copy":{}}},"lang":"csharp","source":"        var claims = (await api.GetAsync($\"{memberPath}/list-member-claim\")).Data?.AsArray()\n            .Select(c => c!).ToList() ?? new List<JsonNode>(); // newest service date first\n        foreach (var claim in claims.Take(10)) // the endpoint returns every claim; page them in your app\n        {\n            var state = claim[\"inBatch\"]?.GetValue<int>() == 1 ? \"in process\" : claim[\"claim_Status\"]?.ToString();\n            Console.WriteLine($\"{DatePart(claim[\"service_Date\"])} {claim[\"provider_Name\"]} {state} billed {claim[\"billedAmount\"]} paid {claim[\"paidAmount\"]}\");\n        }\n        "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/member_self_service.py","language":"python","header":{"controls":{"copy":{}}},"lang":"python","source":"    claims = api.get(f\"{member_path}/list-member-claim\").data or []  # newest service date first\n    page = claims[:10]  # the endpoint returns every claim; page them in your app\n    for claim in page:\n        state = \"in process\" if claim.get(\"inBatch\") == 1 else claim.get(\"claim_Status\")\n        print((claim.get(\"service_Date\") or \"\")[:10], claim.get(\"provider_Name\"), state,\n              \"billed\", claim.get(\"billedAmount\"), \"paid\", claim.get(\"paidAmount\"))\n    "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"TypeScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/memberSelfService.ts","language":"typescript","header":{"controls":{"copy":{}}},"lang":"typescript","source":"  const claims: any[] = (await api.get(`${memberPath}/list-member-claim`)).data ?? []; // newest service date first\n  for (const claim of claims.slice(0, 10)) { // the endpoint returns every claim; page them in your app\n    const state = claim.inBatch === 1 ? \"in process\" : claim.claim_Status;\n    console.log(datePart(claim.service_Date), claim.provider_Name, state, \"billed\", claim.billedAmount, \"paid\", claim.paidAmount);\n  }\n  "},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Fields worth showing a member:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["service_Date"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["service_Thru"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Dates of service"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["provider_Name"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Who provided the care"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["inBatch"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]}," for a claim still being entered or adjudicated (in a claim batch), ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0"]}," for a processed claim"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["claim_Status"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The claim's status code. Codes are configured per database; read their descriptions with ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/claim-statuses/listclaimstatus"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /claim-statuses"]}]}," and agree member-friendly wording with your claims team"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["billedAmount"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paidAmount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["What the provider billed and what the plan paid"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["check_Number"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["check_Date"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payment details, once paid"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["claim_Number"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The processed claim's number, used for the EOB in step 6"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example response (illustrative; field values are fake):"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": [\n    {\n      \"inBatch\": 0,\n      \"claim_Number\": 900001,\n      \"batch_Number\": 7001,\n      \"batch_Claim\": 1,\n      \"subscriber_ID\": \"DOCS-0001\",\n      \"member_Seq\": \"01\",\n      \"provider_Name\": \"Example Clinic\",\n      \"service_Date\": \"2030-03-04T00:00:00\",\n      \"service_Thru\": \"2030-03-04T00:00:00\",\n      \"claim_Status\": \"PAID\",\n      \"billedAmount\": 250.0,\n      \"paidAmount\": 180.0,\n      \"check_Number\": \"No Check\"\n    }\n  ],\n  \"error\": null,\n  \"debug\": { \"activityID\": \"00000000-0000-0000-0000-000000000000\" }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"6-get-an-eob","__idx":8},"children":["6. Get an EOB"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/eob/getmembereob"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /claims/{claimNumber}/eob"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For a processed claim, this returns the member's Explanation of Benefits. If your company uses Zelis RedCard EOBs, VBAPI tries that first; otherwise, or if that fails, VBASoftware generates the EOB. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["report_Bytes"]}," holds the document (generally a PDF) as base64, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isVBA_EOB"]}," says which source produced it. Stream it to the signed-in member; do not store or log it."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/MemberSelfServicePlaybook.cs","language":"csharp","header":{"controls":{"copy":{}}},"lang":"csharp","source":"        var processed = claims.FirstOrDefault(c => c[\"inBatch\"]?.GetValue<int>() == 0 && c[\"claim_Number\"] is not null);\n        if (processed is not null)\n        {\n            var claimNumber = processed[\"claim_Number\"]!.GetValue<int>();\n            var eob = (await api.GetAsync($\"/claims/{claimNumber}/eob\")).Data!;\n            var reportBytes = eob[\"report_Bytes\"]?.GetValue<string>();\n            var pdf = reportBytes is null ? Array.Empty<byte>() : Convert.FromBase64String(reportBytes);\n            // Stream the PDF to the signed-in member. Do not store or log it: it contains PHI.\n            Console.WriteLine($\"EOB for claim {claimNumber} {pdf.Length} bytes\");\n        }\n        "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/member_self_service.py","language":"python","header":{"controls":{"copy":{}}},"lang":"python","source":"    processed = next((c for c in claims if c.get(\"inBatch\") == 0 and c.get(\"claim_Number\")), None)\n    if processed:\n        eob = api.get(f\"/claims/{processed['claim_Number']}/eob\").data\n        pdf = base64.b64decode(eob[\"report_Bytes\"]) if eob.get(\"report_Bytes\") else b\"\"\n        # Stream the PDF to the signed-in member. Do not store or log it: it contains PHI.\n        print(\"EOB for claim\", processed[\"claim_Number\"], len(pdf), \"bytes\")\n    "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"TypeScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/memberSelfService.ts","language":"typescript","header":{"controls":{"copy":{}}},"lang":"typescript","source":"  const processed = claims.find((c) => c.inBatch === 0 && c.claim_Number);\n  if (processed) {\n    const eob = (await api.get(`/claims/${processed.claim_Number}/eob`)).data;\n    const pdf = eob.report_Bytes ? Buffer.from(eob.report_Bytes, \"base64\") : Buffer.alloc(0);\n    // Stream the PDF to the signed-in member. Do not store or log it: it contains PHI.\n    console.log(\"EOB for claim\", processed.claim_Number, pdf.length, \"bytes\");\n  }\n  "},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Check that the EOB's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriber_ID"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["member_Seq"]}," match the signed-in member before you return it."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"7-request-a-replacement-id-card","__idx":9},"children":["7. Request a replacement ID card"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-id-card-request-types/listidcardrequesttype"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /id-card-request-types"]}]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-id-card-requests/createidcardrequest"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /id-card-requests"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This is the only step that writes data. The body is the same as in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/playbooks/enroll-employees#9-request-id-cards"},"children":["enrollment playbook"]},", with the member's current group and division and the request type your database uses for replacements:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"idCardRequest_Key\": 0,\n  \"renewal\": false,\n  \"subscriber_ID\": \"DOCS-0001\",\n  \"member_Seq\": \"01\",\n  \"group_ID\": \"DOCS-GRP1\",\n  \"division_ID\": \"DOCS-DIV1\",\n  \"request_Type\": \"REQUEST_TYPE_FROM_LOOKUP\",\n  \"request_Status\": \"REQ\",\n  \"request_Date\": \"2030-03-10T00:00:00\",\n  \"request_Quantity\": 1,\n  \"physical_Card_Requested\": true\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The sample takes the first request type for simplicity. In your app, choose the replacement type by its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["description"]},"."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/MemberSelfServicePlaybook.cs","language":"csharp","header":{"controls":{"copy":{}}},"lang":"csharp","source":"        var requestTypes = (await api.GetAsync(\"/id-card-request-types\")).Data!.AsArray();\n        var card = (await api.PostAsync(\"/id-card-requests\", new\n        {\n            idCardRequest_Key = 0, // 0 on create; VBAPI assigns the key\n            renewal = false,\n            subscriber_ID = SubscriberId,\n            member_Seq = MemberSeq,\n            group_ID = groupId,\n            division_ID = divisionId,\n            request_Type = requestTypes[0]![\"request_Type\"]!.GetValue<string>(),\n            request_Status = \"REQ\",\n            request_Date = $\"{today}T00:00:00\",\n            request_Quantity = 1,\n            physical_Card_Requested = true,\n        })).Data!;\n        var cardKey = card[\"idCardRequest_Key\"]!.GetValue<int>();\n        Console.WriteLine($\"Replacement ID card requested: {cardKey}\");\n        "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/member_self_service.py","language":"python","header":{"controls":{"copy":{}}},"lang":"python","source":"    request_types = api.get(\"/id-card-request-types\").data\n    card = api.post(\"/id-card-requests\", {\n        \"idCardRequest_Key\": 0,  # 0 on create; VBAPI assigns the key\n        \"renewal\": False,\n        \"subscriber_ID\": SUBSCRIBER_ID,\n        \"member_Seq\": MEMBER_SEQ,\n        \"group_ID\": group_id,\n        \"division_ID\": enrollment[\"division_ID\"],\n        \"request_Type\": request_types[0][\"request_Type\"],\n        \"request_Status\": \"REQ\",\n        \"request_Date\": f\"{today}T00:00:00\",\n        \"request_Quantity\": 1,\n        \"physical_Card_Requested\": True,\n    }).data\n    card_key = card[\"idCardRequest_Key\"]\n    print(\"Replacement ID card requested:\", card_key)\n    "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"TypeScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/memberSelfService.ts","language":"typescript","header":{"controls":{"copy":{}}},"lang":"typescript","source":"  const requestTypes: any[] = (await api.get(\"/id-card-request-types\")).data;\n  const card = (\n    await api.post(\"/id-card-requests\", {\n      idCardRequest_Key: 0, // 0 on create; VBAPI assigns the key\n      renewal: false,\n      subscriber_ID: SUBSCRIBER_ID,\n      member_Seq: MEMBER_SEQ,\n      group_ID: groupId,\n      division_ID: divisionId,\n      request_Type: requestTypes[0].request_Type,\n      request_Status: \"REQ\",\n      request_Date: `${today}T00:00:00`,\n      request_Quantity: 1,\n      physical_Card_Requested: true,\n    })\n  ).data;\n  const cardKey: number = card.idCardRequest_Key;\n  console.log(\"Replacement ID card requested:\", cardKey);\n  "},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save from the response:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idCardRequest_Key"]}," (step 8). Each call creates a new request, so stop members from submitting twice, for example by checking ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-id-card-requests/listidcardrequest"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /id-card-requests"]}]}," on your server for a recent open request."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"8-check-the-request","__idx":10},"children":["8. Check the request"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-id-card-requests/getidcardrequest"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /id-card-requests/{iDCardRequestKey}"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Show the member the request's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request_Status"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REQ"]}," (Requested), ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COMPLETE"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CANCEL"]},", from ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/id-card-request-statuses/listidcardrequeststatuses"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /id-card-request-statuses"]}]},"."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"C#","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/MemberSelfServicePlaybook.cs","language":"csharp","header":{"controls":{"copy":{}}},"lang":"csharp","source":"        var savedCard = (await api.GetAsync($\"/id-card-requests/{cardKey}\")).Data!;\n        Console.WriteLine($\"ID card request {savedCard[\"idCardRequest_Key\"]} status: {savedCard[\"request_Status\"]}\");\n        "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"Python","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/member_self_service.py","language":"python","header":{"controls":{"copy":{}}},"lang":"python","source":"    card = api.get(f\"/id-card-requests/{card_key}\").data\n    print(\"ID card request\", card[\"idCardRequest_Key\"], \"status:\", card.get(\"request_Status\"))\n    "},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"TypeScript","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"../../_samples/playbooks/member-self-service/memberSelfService.ts","language":"typescript","header":{"controls":{"copy":{}}},"lang":"typescript","source":"  const savedCard = (await api.get(`/id-card-requests/${cardKey}`)).data;\n  console.log(\"ID card request\", savedCard.idCardRequest_Key, \"status:\", savedCard.request_Status);\n  "},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"verify-the-result","__idx":11},"children":["Verify the result"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run the sample against a test member whose plan, accumulators, and claims you know. The deductible and out-of-pocket figures should match what VBASoftware shows for the same plan year, and the claim list should match the member's claims. Step 8 confirms the ID card request was saved."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"caching-and-performance","__idx":12},"children":["Caching and performance"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A member screen can need five or more calls, and every call counts toward your API key's ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/concepts/rate-limits-and-performance"},"children":["rate limit"]}," of 25 requests per second."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Cache per member on your server"]},", never on the device. Member details, enrollments, plans, and plan years rarely change; caching them for the session, or for several hours, is reasonable."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Accumulators and claims change when claims are adjudicated."]}," Cache them briefly (minutes, not days), refresh them when the member opens the screen, and show an \"as of\" time."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request types and statuses"]}," are lookups; cache them for a day."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Load the screens a member opens, not everything at sign-in."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"undo","__idx":13},"children":["Undo"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A replacement request can be cancelled by updating it with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request_Status"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CANCEL"]}," and a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cancellation_Reason"]}," through ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-id-card-requests/updateidcardrequest"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /id-card-requests/{iDCardRequestKey}"]}]},", or removed with ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-id-card-requests/deleteidcardrequest"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DELETE /id-card-requests/{iDCardRequestKey}"]}]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["204"]},"). The other steps only read data."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"common-errors","__idx":14},"children":["Common errors"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Symptom"},"children":["Symptom"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Likely cause"},"children":["Likely cause"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Fix"},"children":["Fix"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404"]}," on step 1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Wrong ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriberID"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["memberSeq"]},"; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["memberSeq"]}," is two characters, for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["01"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Check your mapping from the signed-in member"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Empty accumulator list"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["groupId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["planId"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["planYear"]}," does not match the member's enrollment"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use the values from steps 2 and 3"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["500"]}," on the EOB"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The claim number is not a processed claim, or the EOB could not be produced"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Only request EOBs for claims with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["inBatch"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0"]},"; contact support with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["activityID"]}," if it persists"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["429"]}," during busy periods"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Too many calls per second for the API key"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Cache as above; the sample helpers retry with backoff"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"message\":\"Forbidden\"}"]}," on every call"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-api-key"]}," header is missing or wrong"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/concepts/errors"},"children":["Errors and troubleshooting"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Contacting support"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send VBA support:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["debug.activityID"]}," from the response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the date and time of the call, with time zone"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the method and path, for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /claim-batches"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the full ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error"]}," object from the response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the request body, with passwords, tokens, and personal data removed"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Never send your password, API key, or tokens. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/help/support"},"children":["Support and escalation"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"variations","__idx":15},"children":["Variations"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["One benefit's accumulators:"]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/enrollment-accumulators/listaccumulatorbenefitdetail"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}/list-accum-benefit-detail"]}]}," adds a benefit code. The query parameter is spelled ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["beneftiCode"]}," in the API; send it with that spelling. ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/enrollment-accumulators/listaccumulatorallbenefitdetail"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}/list-accum-all-benefit-detail"]}]}," returns every benefit the member has accumulators for."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Everything in one call:"]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/adv.-enrollment/enrollmentbenefitinquiry"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /enrollment-benefit-inquiry"]}]}," returns eligibility, benefits, and accumulators together, which suits a benefits summary screen."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Address changes:"]}," read and update the member's address with ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-address/getmemberaddress"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /subscribers/{subscriberID}/members/{memberSeq}/addresses"]}]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/vbasoftware/vbasoftware.api/member-address/updatememberaddress"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PUT /subscribers/{subscriberID}/members/{memberSeq}/addresses"]}]},". This writes data; confirm the change with the member before you send it."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"set-up-your-environment","__idx":16},"children":["Set up your environment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The samples read your credentials from environment variables, so nothing secret is written into code. Set them in the terminal you run the samples from:"]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"PowerShell","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"powershell","header":{"controls":{"copy":{}}},"source":"$env:VBAPI_BASE_URL    = \"https://vbapi.vbasoftware.com/vbasoftware\"\n$env:VBAPI_API_KEY     = \"your-api-key\"\n$env:VBAPI_CLIENT_ID   = \"your-client-id\"\n$env:VBAPI_CLIENT_CODE = \"your-client-code\"\n$env:VBAPI_DATABASE    = \"YOUR_DATABASE\"\n$env:VBAPI_USERNAME    = \"your-api-username\"\n$env:VBAPI_PASSWORD    = \"your-api-password\"\n$env:VBAPI_USER_AGENT  = \"YourCompany-Integration/1.0\"\n","lang":"powershell"},"children":[]}]},{"$$mdtype":"Tag","name":"TabItemFragment","attributes":{"label":"bash","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"export VBAPI_BASE_URL=\"https://vbapi.vbasoftware.com/vbasoftware\"\nexport VBAPI_API_KEY=\"your-api-key\"\nexport VBAPI_CLIENT_ID=\"your-client-id\"\nexport VBAPI_CLIENT_CODE=\"your-client-code\"\nexport VBAPI_DATABASE=\"YOUR_DATABASE\"\nexport VBAPI_USERNAME=\"your-api-username\"\nexport VBAPI_PASSWORD=\"your-api-password\"\nexport VBAPI_USER_AGENT=\"YourCompany-Integration/1.0\"\n","lang":"bash"},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In production code, load these from your secrets manager instead."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"download","__idx":17},"children":["Download"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The full runnable samples are in the docs repository under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["_samples/playbooks/member-self-service/"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MemberSelfServicePlaybook.cs"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["member_self_service.py"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["memberSelfService.ts"]},". See ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["_samples/playbooks/README.md"]}," for how to run them."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related","__idx":18},"children":["Related"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Concepts: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/concepts/authentication"},"children":["Authentication and tokens"]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/concepts/rate-limits-and-performance"},"children":["Rate limits and performance"]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/concepts/data-model"},"children":["Data model"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Previous playbook: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/playbooks/enroll-employees"},"children":["Enroll employees and dependents"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Related playbook: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/playbooks/claims-intake-and-adjudication"},"children":["Enter claims and adjudicate them"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ask the AI: \"Using the Member self-service playbook, write a TypeScript function that returns a member's deductible and out-of-pocket progress for the current plan year.\""]}]}]},"headings":[{"value":"Member self-service","id":"member-self-service","depth":1},{"value":"How it fits together","id":"how-it-fits-together","depth":2},{"value":"Steps","id":"steps","depth":2},{"value":"1. Read the member","id":"1-read-the-member","depth":3},{"value":"2. Find the member's current plan","id":"2-find-the-members-current-plan","depth":3},{"value":"3. Find the plan year","id":"3-find-the-plan-year","depth":3},{"value":"4. Show deductible and out-of-pocket progress","id":"4-show-deductible-and-out-of-pocket-progress","depth":3},{"value":"5. Show claim history","id":"5-show-claim-history","depth":3},{"value":"6. Get an EOB","id":"6-get-an-eob","depth":3},{"value":"7. Request a replacement ID card","id":"7-request-a-replacement-id-card","depth":3},{"value":"8. Check the request","id":"8-check-the-request","depth":3},{"value":"Verify the result","id":"verify-the-result","depth":2},{"value":"Caching and performance","id":"caching-and-performance","depth":2},{"value":"Undo","id":"undo","depth":2},{"value":"Common errors","id":"common-errors","depth":2},{"value":"Variations","id":"variations","depth":2},{"value":"Set up your environment","id":"set-up-your-environment","depth":2},{"value":"Download","id":"download","depth":2},{"value":"Related","id":"related","depth":2}],"frontmatter":{"title":"Member self-service","description":"The VBAPI calls behind a member portal or mobile app backend - member details, current plan, deductible and out-of-pocket progress, claim history, EOBs, and replacement ID card requests.","seo":{"title":"Member self-service"}},"lastModified":"2026-10-26T21:09:33.693Z","pagePropGetterError":{"message":"","name":""}},"slug":"/developer-portal/playbooks/member-self-service","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}