Structure of CPA interaction with confirmation from subscriber [legend]:

General Overview

       [HTTP connection]                [SMS conversation]
[CP] ...................... [CPA] <===== content request ====== [DC]

[CP] <=== check-request === [CPA] ............................. [DC]
[CP] ------ Accepted -----> [CPA] ............................. [DC]

[CP] ======= Valid =======> [CPA] ............................. [DC]
[CP] <----- Accepted ------ [CPA] ............................. [DC]

[CP] ...................... [CPA] === confirmation request ===> [DC]
[CP] ...................... [CPA] <======= confirmation ======= [DC] wrong code >>

[CP] <== content-request == [CPA] ............................. [DC]
[CP] ------ Accepted -----> [CPA] ............................. [DC]

[CP] ====== content ======> [CPA] ............................. [DC]
[CP] <----- Accepted ------ [CPA] ............................. [DC]

[CP] ...................... [CPA] ========== content =========> [DC]

[CP] <== delivery report == [CPA] ............................. [DC]
[CP] ------ Accepted -----> [CPA] ............................. [DC]

Note: SMPP gateway messages (passed back to CPA after sending something to subscriber) aren't shown here as more low-level, but that's how CPA gets the message status for e.g. delivery reports.