- generic [active] [ref=e1]:
  - heading "Zenuml demos" [level=1] [ref=e2]
  - document [ref=e4]:
    - generic [ref=e7]:
      - generic [ref=e16]: BookLibService
      - generic [ref=e19]: Session
      - generic [ref=e22]: BookRepository
      - generic [ref=e25]: ErrorService
      - generic [ref=e28]: Connection
      - generic [ref=e37]: receipt:Receipt
      - generic [ref=e38]:
        - img [ref=e39]
        - generic [ref=e42]: Borrow(id)
        - generic [ref=e43]: "1"
      - generic [ref=e44]:
        - img [ref=e45]
        - generic [ref=e48]: GetUser()
        - generic [ref=e49]: "1.1"
      - generic [ref=e50]:
        - img [ref=e51]
        - generic [ref=e54]: Update(id,onLoan,User)
        - generic [ref=e55]: 1.2.1.1
      - generic [ref=e56]:
        - img [ref=e57]
        - generic [ref=e60]: onException(BookNotFoundException)
        - generic [ref=e61]: 1.2.1.3
      - generic [ref=e62]:
        - img [ref=e63]
        - generic [ref=e66]: close()
        - generic [ref=e67]: 1.2.1.4
      - generic [ref=e68]:
        - generic [ref=e70]: «id,dueDate»
        - generic [ref=e71]: 1.2.1.2
      - generic [ref=e72]:
        - generic [ref=e74]: User
        - generic [ref=e75]: 1.1.1
      - generic [ref=e76]:
        - generic [ref=e78]: receipt
        - generic [ref=e79]: 1.2.1.2.1
      - generic [ref=e80]:
        - generic [ref=e82]: receipt
        - generic [ref=e83]: "1.3"
      - generic [ref=e84]:
        - img [ref=e87]
        - generic [ref=e89]: Alt
        - generic [ref=e90]: "1.2"
        - generic [ref=e91]:
          - generic [ref=e92]: "["
          - generic [ref=e93]: User.isActive
          - generic [ref=e94]: "]"
      - generic [ref=e95]:
        - img [ref=e98]
        - generic [ref=e100]: Try
        - generic [ref=e101]: 1.2.1
        - generic [ref=e102]:
          - generic [ref=e104]: catch
          - generic [ref=e105]: BookNotFoundException
        - generic [ref=e108]: finally
  - document [ref=e110]:
    - generic [ref=e113]: Async Messages (SPA Authentication)
    - generic [ref=e114]:
      - generic [ref=e117]: Browser
      - generic [ref=e120]: Auth0
      - generic [ref=e123]: Identity Provider
      - generic [ref=e126]: Your API
      - generic [ref=e127]:
        - img [ref=e128]
        - generic [ref=e131]: 1. initiate the authentication
        - generic [ref=e132]: "1"
      - generic [ref=e133]:
        - img [ref=e134]
        - generic [ref=e137]: 2. OAuth2 / SAML, etc
        - generic [ref=e138]: "2"
      - generic [ref=e139]:
        - img [ref=e140]
        - generic [ref=e143]: "4. redirect to ${YOUR_CALLBACK_URL}/#id_token=e68..."
        - generic [ref=e144]: "4"
      - generic [ref=e145]:
        - img [ref=e146]
        - generic [ref=e149]: 5. validate id_token and get user profile
        - generic [ref=e150]: "5"
      - generic [ref=e151]:
        - img [ref=e152]
        - generic [ref=e155]: 6. call API sending JWT in Authorization header
        - generic [ref=e156]: "6"
      - generic [ref=e157]:
        - img [ref=e158]:
          - img [ref=e161]
        - generic [ref=e164]: 3. user gets authenticated
        - generic [ref=e165]: "3"
      - generic [ref=e166]:
        - img [ref=e167]:
          - img [ref=e170]
        - generic [ref=e173]: 7. validate token
        - generic [ref=e174]: "7"
      - generic [ref=e175]: "``` GET https://${account.namespace}/authorize/? response_type=token &client_id=${account.clientId} &redirect_url=YOUR_CALLBACK_URL &state=VALUE_THAT_SURVIVES_REDIRECTS &scope=openid ```"