{"actions":{"demo_before":{"url":"https://shop.akropolys.cloud/api/demo/before","method":"GET","description":"Check whether the free demo is ready. Continue with demo_checkout only when ready is true. No payment or cart is needed.","fields":{"type":"object","properties":{},"required":[],"additionalProperties":false},"requiresSignIn":false},"demo_checkout":{"url":"https://shop.akropolys.cloud/api/demo/checkout","method":"POST","description":"Start a FREE simulated checkout, never a real payment. First run demo_before and require ready=true. Success means the demo session was created (created=true), not that checkout was completed. After successful creation run demo_after using the returned demo_id. Give the visitor checkout_url to open. When they return, run demo_on_return with that same demo_id; report completed, cancelled, or pending exactly as returned. Never call the real checkout for this demo.","fields":{"type":"object","properties":{},"required":[],"additionalProperties":false},"requiresSignIn":false,"hooks":{"before":"demo_before","after":"demo_after","onReturn":"demo_on_return"}},"demo_after":{"url":"https://shop.akropolys.cloud/api/demo/after","method":"POST","description":"Record successful creation of a free demo session. Use demo_id from demo_checkout. This confirms session creation, not checkout completion or payment.","fields":{"type":"object","properties":{"demo_id":{"type":"string","description":"The demo_id returned by demo_checkout."}},"required":["demo_id"],"additionalProperties":false},"requiresSignIn":false},"demo_on_return":{"url":"https://shop.akropolys.cloud/api/demo/on-return","method":"GET","description":"Read the free demo outcome after the visitor returns from checkout_url. Use demo_id from demo_checkout. Only completed confirms demo completion; cancelled and pending are not success. No money is charged in any state.","fields":{"type":"object","properties":{"demo_id":{"type":"string","description":"The demo_id returned by demo_checkout."}},"required":["demo_id"],"additionalProperties":false},"requiresSignIn":false}}}