{"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},"get_cart":{"url":"https://shop.akropolys.cloud/api/cart","method":"GET","description":"Read the visitor’s current cart, quantities, current prices, and total.","fields":{"type":"object","properties":{},"required":[],"additionalProperties":false},"requiresSignIn":false},"add_cart_item":{"url":"https://shop.akropolys.cloud/api/cart/items","method":"POST","description":"Add a product to the visitor’s cart. Quantity is the number to add, not the final quantity. Use the product_id from the catalogue.","fields":{"type":"object","properties":{"product_id":{"type":"integer","minimum":1,"description":"The product_id from a catalogue record or cart item."},"quantity":{"type":"integer","minimum":1,"maximum":99}},"required":["product_id","quantity"],"additionalProperties":false},"requiresSignIn":false},"update_cart_item":{"url":"https://shop.akropolys.cloud/api/cart/items/{product_id}","method":"PATCH","description":"Set an existing cart product to the requested final quantity.","fields":{"type":"object","properties":{"product_id":{"type":"integer","minimum":1,"description":"The product_id from a catalogue record or cart item."},"quantity":{"type":"integer","minimum":1,"maximum":99}},"required":["product_id","quantity"],"additionalProperties":false},"requiresSignIn":false},"remove_cart_item":{"url":"https://shop.akropolys.cloud/api/cart/items/{product_id}","method":"DELETE","description":"Remove all units of one product from the visitor’s cart.","fields":{"type":"object","properties":{"product_id":{"type":"integer","minimum":1,"description":"The product_id from a catalogue record or cart item."}},"required":["product_id"],"additionalProperties":false},"requiresSignIn":false},"clear_cart":{"url":"https://shop.akropolys.cloud/api/cart","method":"DELETE","description":"Empty the cart only when the visitor explicitly asks to remove everything.","fields":{"type":"object","properties":{},"required":[],"additionalProperties":false},"requiresSignIn":false},"checkout":{"url":"https://shop.akropolys.cloud/api/checkout","method":"POST","description":"Create a Stripe Checkout link for the current cart when the visitor asks to check out. Return checkout_url for them to open. This does not complete or confirm payment.","fields":{"type":"object","properties":{},"required":[],"additionalProperties":false},"requiresSignIn":false}}}