sequenceDiagram
participant Browser
participant Proxy as Codius Proxy
participant Verifier as Receipt Verifier
participant Site as codius-web
participant Wallet as Host's Wallet
participant Operator as Codius Operator
participant API as Services API
participant Service as Codius Service
activate Browser
Browser->>+Proxy: GET id.codius-host.com
activate Proxy
activate Proxy
Proxy->>+Verifier: POST /balances/{id}:spend requestPrice
activate Verifier
alt insufficient balance
Verifier-->>-Proxy: 400
Proxy->>-Site: proxy to codius-host.com/{id}/402
activate Site
Site-->>-Browser: 402 page w/ monetization tag
opt web monetization
Browser->>+Verifier: SPSP query
Verifier->>+Wallet: SPSP query w/ secret & nonce
Wallet-->>-Browser: destinationAddress & sharedSecret
deactivate Verifier
loop ILP packet
Browser->>+Wallet: $
Wallet-->>-Browser: receipt
Browser-x+Site: monetizationprogress receipt
Site->>+Verifier: POST /balances/{id}:creditReceipt receipt
Verifier->>Verifier: credits service balance
Verifier-->>-Site: 200 service balance
alt sufficient balance
Site->>-Browser: reload id.codius-host.com
end
end
end
else sufficient balance
Verifier-->>-Proxy: 200
Proxy-x+Operator: update service's last request time
alt service unavailable
Operator->>Operator: scale up service
deactivate Operator
Proxy->>-Site: proxy to codius-host.com/{id}/503
activate Site
loop
Site->>+API: GET /services/{id}
API-->>-Site: 200 service
alt service available
Site->>-Browser: reload id.codius-host.com
end
end
else service available
Proxy->>-Service: proxy to service
activate Service
Service-->>-Browser: response
end
end
deactivate Browser