{"openapi":"3.0.3","info":{"title":"Backbone Security Solutions public actions","version":"1.2.0","description":"Agent price feed and free site-assessment booking for Backbone Security Solutions in Gqeberha. Brands: Centurion, Nemtek, Stafix, Hikvision. There is no public HTML shop and no cart. Start with /shop/manifest.json and honour If-None-Match. Shop JSON is rate-limited (429 + Retry-After). Prefer booking or WhatsApp over DIY fault advice."},"servers":[{"url":"https://www.thebackbone.co.za"}],"paths":{"/shop/manifest.json":{"get":{"operationId":"shopManifest","summary":"Price manifest. Read this first and skip unchanged fingerprints.","responses":{"200":{"description":"Manifest"},"304":{"description":"Not modified"},"429":{"description":"Rate limited"}}}},"/shop/changes.json":{"get":{"operationId":"shopChanges","summary":"Items flagged changed on the last publish, plus removed ids.","responses":{"200":{"description":"Changes"},"304":{"description":"Not modified"},"429":{"description":"Rate limited"}}}},"/shop/catalog.json":{"get":{"operationId":"shopCatalog","summary":"Full public price catalog. Prefer manifest/changes after the first sync.","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"family","in":"query","schema":{"type":"string","enum":["centurion","nemtek","tiandy","hikvision","catalogue"]}}],"responses":{"200":{"description":"Catalog"},"304":{"description":"Not modified"},"422":{"description":"Unknown family","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"}}}}}},"429":{"description":"Rate limited"}}}},"/shop/list.json":{"get":{"operationId":"shopList","summary":"Paged slice of the catalog for incremental reads.","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"family","in":"query","schema":{"type":"string"}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Slice"},"429":{"description":"Rate limited"}}}},"/shop/items/{id}.json":{"get":{"operationId":"shopItem","summary":"One public item.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Item","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"brand":{"type":"string"},"family":{"type":"string"},"price":{"type":"string"},"currency":{"type":"string"},"price_label":{"type":"string"},"fingerprint":{"type":"string"},"changed":{"type":"boolean"},"url":{"type":"string"},"json_url":{"type":"string"}}}}}},"304":{"description":"Not modified"},"404":{"description":"Unknown item","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"}}}}}},"429":{"description":"Rate limited"}}}},"/book/availability.json":{"get":{"operationId":"bookingAvailability","summary":"Free site assessment times for one date.","parameters":[{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Slots at 12:00 and 16:00 Africa/Johannesburg"},"422":{"description":"Date not bookable","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"}}}}}},"502":{"description":"Availability unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"}}}}}}}}},"/book/api":{"post":{"operationId":"bookAssessment","summary":"Book a free site assessment. This creates a real visit.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","phone","address","booking_date","slot_hour","idempotency_key"],"properties":{"name":{"type":"string"},"phone":{"type":"string"},"address":{"type":"string"},"details":{"type":"string"},"booking_date":{"type":"string","format":"date"},"slot_hour":{"type":"integer","enum":[12,16]},"idempotency_key":{"type":"string"}}}}}},"responses":{"201":{"description":"Booked"},"200":{"description":"Same idempotency key. Not booked again."},"409":{"description":"Slot no longer available","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"}}}}}},"422":{"description":"Invalid booking","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"}}}}}}}}}}}