seqdiag {
    span_height = 10;
    === If Certificate is pre-stored in Barbican ===
    User => Octavia [label="Create LB with TLS (passing tls_certificate_id)", note="HTTPS", return="202/400/401"] {
        Octavia => Barbican [label="Fetch Certificate Container", note="HTTPS", return="Certificate Data"];
    }
    === If Certificate is passed directly to Octavia ===
    User => Octavia [label="Create LB with TLS (passing tls_certificate, tls_private_key, etc)", note="HTTPS", return="
202/400/401"] {
        Octavia => Barbican [label="Store Secrets / Certificate Container", note="HTTPS", return="tls_certificate_id"];
    }
    Octavia -> Octavia [label="Store tls_certificate_id"];
    === After certificate handling, in both cases ===
    Octavia -> Octavia [label="Fetch Amphora from Spare Pool"];
    Octavia => "Amphora API" [label="Configure Amphora", note="HTTPS", return="Update LB Status"];
}
