{"openapi":"3.1.0","info":{"title":"Square Metre EXAMPLE DATA API","version":"0.1.0","description":"Square Metre is independent. Free to you. We pass your brief to the broker or operator who fits, and they may pay us a referral fee. Private preview. Explicit consent required. Internal storage only, no outbound services."},"servers":[{"url":"https://squaremetre.ie/api","description":"Current private development preview, not production"}],"tags":[{"name":"health","description":"Health operations"}],"paths":{"/spaces":{"get":{"operationId":"searchSpaces","summary":"Search EXAMPLE DATA office spaces","description":"Public CORS-enabled search. Numeric people is minimum desk capacity, numeric budget is the maximum all-in EUR monthly price. Named filter values match the browser. No personal data is returned.","parameters":[{"name":"people","in":"query","schema":{"type":"string"},"description":"Headcount number, or 1-2, 3-5, 6-10, 11-20, 20+"},{"name":"area","in":"query","schema":{"type":"string"},"description":"Dublin 1/2, Dublin 4, Docklands, Dublin 8, Dublin suburbs or Anywhere"},{"name":"budget","in":"query","schema":{"type":"string"},"description":"Maximum EUR per month, or Under €1.5k, Up to €3k, Up to €6k, Up to €12k, €12k+"},{"name":"moveDate","in":"query","schema":{"type":"string"},"description":"YYYY-MM-DD, Now, Within 3 months, Within 6 months or Later. Illustrative month-level availability."}],"responses":{"200":{"description":"Matching example spaces","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Space"}}}}},"400":{"description":"Unsupported or invalid filter"}}}},"/spaces/{id}":{"get":{"operationId":"getSpace","summary":"Get one EXAMPLE DATA space by id or slug","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Example space","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Space"}}}},"404":{"description":"Space not found"}}}},"/spaces/{id}/slots":{"get":{"operationId":"getViewingSlots","summary":"Get illustrative next-week viewing times, not real availability","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"EXAMPLE DATA slots in Europe/Dublin","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ViewingSlot"}}}}},"404":{"description":"Space not found"}}}},"/viewings":{"post":{"operationId":"requestViewing","summary":"Save a consented EXAMPLE DATA viewing request internally","description":"Requires the person's explicit consent true. Agents must obtain consent, never infer it. Stores in app DB only for 12 months. No outbound messages, forwarding or confirmed appointments. Use synthetic contact details in this private preview.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewingRequestInput"}}}},"responses":{"201":{"description":"Request stored, not confirmed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefReceipt"}}}},"400":{"description":"Explicit true consent or valid details/selections missing"},"429":{"description":"Request rate limit exceeded"},"503":{"description":"Internal storage unavailable"}}}}},"components":{"schemas":{"Space":{"type":"object","required":["id","slug","name","area","type","size","desks","price","slots","description","image","geo","exampleData","currency","pricePeriod","availableInMonths"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"area":{"type":"string"},"type":{"type":"string","enum":["Serviced","Traditional"]},"size":{"type":"integer","description":"Floor area in m²"},"desks":{"type":"integer"},"price":{"type":"integer","description":"All-in EUR monthly price"},"currency":{"type":"string","enum":["EUR"]},"pricePeriod":{"type":"string","enum":["month"]},"exampleData":{"type":"boolean","enum":[true]},"description":{"type":"string"},"image":{"type":"string","description":"Locally hosted illustrative image path"},"availableInMonths":{"type":"integer","minimum":0,"description":"Example move-in availability relative to current month"},"geo":{"type":"object","required":["latitude","longitude"],"properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}}},"slots":{"type":"array","items":{"$ref":"#/components/schemas/ViewingSlot"}}}},"ViewingSlot":{"type":"object","required":["id","label","startsAt"],"properties":{"id":{"type":"string"},"label":{"type":"string"},"startsAt":{"type":"string","format":"date-time"}}},"ViewingSpace":{"type":"object","required":["id","name","area","type","size","desks","price","slots"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"area":{"type":"string"},"type":{"type":"string","enum":["Serviced","Traditional"]},"size":{"type":"integer"},"desks":{"type":"integer"},"price":{"type":"integer"},"slots":{"type":"array","items":{"$ref":"#/components/schemas/ViewingSlot"}}}},"ViewingSelection":{"type":"object","required":["spaceId","slotId"],"properties":{"spaceId":{"type":"string","maxLength":40},"slotId":{"type":"string","maxLength":100}}},"ViewingRequestInput":{"type":"object","additionalProperties":false,"required":["name","email","phone","consent","selections"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120},"email":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","minLength":7,"maxLength":30,"pattern":"^\\+?[0-9 ()-]{7,30}$"},"consent":{"type":"boolean","enum":[true]},"selections":{"type":"array","minItems":1,"maxItems":3,"items":{"$ref":"#/components/schemas/ViewingSelection"}}}},"BriefInput":{"type":"object","additionalProperties":false,"required":["name","email","phone","headcount","area","budget","moveDate","leaseLength","consent"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120},"email":{"type":"string","format":"email","maxLength":254},"phone":{"type":"string","minLength":7,"maxLength":30,"pattern":"^\\+?[0-9 ()-]{7,30}$"},"headcount":{"type":"string","enum":["1-2","3-5","6-10","11-20","20+"]},"area":{"type":"string","enum":["Dublin 1/2","Dublin 4","Docklands","Dublin 8","Dublin suburbs","Anywhere"]},"budget":{"type":"string","enum":["Under €1.5k","€1.5k-3k","€3k-6k","€6k-12k","€12k+"]},"moveDate":{"type":"string","enum":["ASAP","1-3 months","3-6 months","6+ months"]},"leaseLength":{"type":"string","enum":["Flexible/monthly","1 year","2-3 years","5+ years"]},"consent":{"type":"boolean","enum":[true]}}},"BriefReceipt":{"type":"object","required":["saved"],"properties":{"saved":{"type":"boolean"}}},"HealthStatus":{"type":"object","properties":{"status":{"type":"string"}},"required":["status"]}}}}