sequenceDiagram
participant User
participant Browser
participant kubectl
participant Site as codius-web
participant Verifier as Receipt Verifier
participant Wallet as Host's Wallet
participant k8s as Kubernetes API Server
participant k8sAuth as codius-auth
activate User
User->>+Browser: navigate to codius-host.com
Browser->>+Site: GET codius-host.com
Site-->>-Browser: codius-host.com 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-x+Verifier: POST /balances/{requestId}:creditReceipt receipt
deactivate Site
Verifier->>-Verifier: credits requestId balance
end
Browser-x+Site: monetizationstart requestId
Site-x-User: server=codius-host.com token=requestId
deactivate Browser
User->>+kubectl: kubectl apply -f codius-service.yaml -s codius-host.com --token=requestId
kubectl->>+k8s: POST /apis/core.codius.org/v1alpha1/services
Authorization: Bearer requestId
codius-service.yaml
k8s->>+k8sAuth: requestId
k8sAuth->>+Verifier: POST /balances/{requestId}:spend deploy-price
alt sufficient balance
Verifier-->>-k8sAuth: 200
k8sAuth-->>-k8s: 200 "user":"codius-deploy"
k8s->>k8s: create Codius Service
k8s->>k8s: crd operator creates deployment, service, ingress
k8s-->>-kubectl: 201
kubectl-->>User: "service.core.codius.org/codius-service created"
end
deactivate kubectl
end
deactivate User