{"openapi":"3.1.0","info":{"title":"U.U.P. Moat Check™ API","version":"1.0.0","description":"Strategic business self-assessment evaluating AI-economy readiness across three dimensions: Understood, Usable, and Preferred. Do not invent or assume answer values — only supply answers the business owner has actually provided.","contact":{"email":"info@uppmoat.com"}},"servers":[{"url":"/"}],"paths":{"/api/assessment/run":{"post":{"operationId":"runAssessment","summary":"Run U.U.P. Moat Check assessment","description":"Calculate and explain a business's U.U.P. Moat assessment from supplied Understood, Usable, and Preferred responses. Do not invent or assume answer values — only supply answers the business owner has actually provided. Missing answers are not the same as 0.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"u1":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"u2":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"u3":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"u4":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"u5":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"u6":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"u7":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"u8":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"us1":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"us2":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"us3":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"us4":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"us5":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"us6":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"us7":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"us8":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"p1":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"p2":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"p3":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"p4":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"p5":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"p6":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"p7":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."},"p8":{"type":"integer","minimum":0,"maximum":4,"nullable":true,"description":"Integer 0-4 representing response. null if not answered. Do not invent or assume answer values."}}}}}},"responses":{"200":{"description":"Assessment result","content":{"application/json":{"schema":{"type":"object","properties":{"isComplete":{"type":"boolean"},"missingFields":{"type":"array","items":{"type":"string"}},"understood":{"type":"object"},"usable":{"type":"object"},"preferred":{"type":"object"},"overall":{"type":"object"},"strongestWall":{"type":"string"},"biggestExposure":{"type":"string"},"biggestExposureExplanation":{"type":"string"},"observations":{"type":"array","items":{"type":"string"}},"prioritizedActions":{"type":"array","items":{"type":"string"}},"certificationReadiness":{"type":"string"},"strategySessionNextStep":{"type":"string"}}}}}}}}},"/api/assessment/questions":{"get":{"operationId":"getQuestions","summary":"Get all 24 assessment questions with metadata","responses":{"200":{"description":"List of questions","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}