{"openapi":"3.1.0","info":{"title":"nQuote integrations-API","description":"Scoped quote sessions and server integrations. Dimensions: mm; volume: mm³; mass: kg; GLB: metres. Numeric SEK amounts exclude VAT and retain the existing server rounding. No administration or archive enumeration. See docs/INTEGRATIONER.md.","version":"1.0.0"},"servers":[{"url":"/api/v1"}],"paths":{"/configuration":{"get":{"summary":"Public Configuration","operationId":"public_configuration_configuration_get","parameters":[{"name":"tenant","in":"query","required":true,"schema":{"type":"string","title":"Tenant"}},{"name":"installation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Installation"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Configuration"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Content Too Large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unsupported Media Type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/sessions":{"post":{"summary":"Session","operationId":"session_sessions_post","parameters":[{"name":"installation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Installation"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionInput"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Content Too Large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unsupported Media Type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/session":{"get":{"summary":"Session Status","operationId":"session_status_session_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionStatus"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"413":{"description":"Content Too Large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"IntegrationCredential":[]}]}},"/session/refresh":{"post":{"summary":"Renew","operationId":"renew_session_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"413":{"description":"Content Too Large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"IntegrationCredential":[]}]}},"/configuration/current":{"get":{"summary":"Current Config","operationId":"current_config_configuration_current_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Configuration"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"413":{"description":"Content Too Large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"IntegrationCredential":[]}]}},"/analyses":{"post":{"summary":"Upload","operationId":"upload_analyses_post","security":[{"IntegrationCredential":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required for writes: stable 16–80 character key. Reuse with identical content after a lost response.","title":"Idempotency-Key"},"description":"Required for writes: stable 16–80 character key. Reuse with identical content after a lost response."}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_analyses_post"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Content Too Large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unsupported Media Type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/analyses/{ident}":{"get":{"summary":"Analysis","operationId":"analysis_analyses__ident__get","security":[{"IntegrationCredential":[]}],"parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Content Too Large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unsupported Media Type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/analyses/{ident}/model.glb":{"get":{"summary":"Model","operationId":"model_analyses__ident__model_glb_get","security":[{"IntegrationCredential":[]}],"parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"model/gltf-binary":{"schema":{"type":"string","format":"binary"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Content Too Large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unsupported Media Type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/analyses/{ident}/preview.svg":{"get":{"summary":"Static","operationId":"static_analyses__ident__preview_svg_get","security":[{"IntegrationCredential":[]}],"parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"image/svg+xml":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Content Too Large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unsupported Media Type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/calculate":{"post":{"summary":"Calculate","operationId":"calculate_calculate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculateInput"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculateResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"413":{"description":"Content Too Large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported Media Type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"IntegrationCredential":[]}]}},"/requests":{"post":{"summary":"Create Request","operationId":"create_request_requests_post","security":[{"IntegrationCredential":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required for writes: stable 16–80 character key. Reuse with identical content after a lost response.","title":"Idempotency-Key"},"description":"Required for writes: stable 16–80 character key. Reuse with identical content after a lost response."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestInput"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Content Too Large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unsupported Media Type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/requests/{ident}":{"get":{"summary":"Get Request","operationId":"get_request_requests__ident__get","security":[{"IntegrationCredential":[]}],"parameters":[{"name":"ident","in":"path","required":true,"schema":{"type":"string","title":"Ident"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestResponse"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Content Too Large"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unsupported Media Type"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}}},"components":{"schemas":{"AnalysisResult":{"properties":{"analysis":{"$ref":"#/components/schemas/PublicAnalysis"},"quote":{"$ref":"#/components/schemas/PublicQuote"},"materials":{"items":{"$ref":"#/components/schemas/Choice"},"type":"array","title":"Materials"},"priceRevision":{"type":"integer","title":"Pricerevision"}},"additionalProperties":false,"type":"object","required":["analysis","quote","materials","priceRevision"],"title":"AnalysisResult"},"Body_upload_analyses_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"material":{"type":"string","title":"Material"},"quantity":{"type":"integer","title":"Quantity"}},"type":"object","required":["file","material","quantity"],"title":"Body_upload_analyses_post"},"CalculateInput":{"properties":{"analysisId":{"type":"string","pattern":"^[a-f0-9]{32}$","title":"Analysisid"},"material":{"type":"string","maxLength":64,"minLength":1,"title":"Material"},"quantity":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Quantity"}},"additionalProperties":false,"type":"object","required":["analysisId","material","quantity"],"title":"CalculateInput"},"CalculateResponse":{"properties":{"quote":{"$ref":"#/components/schemas/PublicQuote"},"priceRevision":{"type":"integer","title":"Pricerevision"},"currency":{"type":"string","const":"SEK","title":"Currency","default":"SEK"}},"additionalProperties":false,"type":"object","required":["quote","priceRevision"],"title":"CalculateResponse"},"Choice":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"}},"additionalProperties":false,"type":"object","required":["key","name"],"title":"Choice"},"Configuration":{"properties":{"tenant":{"type":"string","title":"Tenant"},"companyName":{"type":"string","title":"Companyname"},"defaultLocale":{"type":"string","enum":["sv","en"],"title":"Defaultlocale"},"quoteValidDays":{"type":"integer","title":"Quotevaliddays"},"branding":{"additionalProperties":{"type":"string"},"type":"object","title":"Branding"},"materials":{"items":{"$ref":"#/components/schemas/Choice"},"type":"array","title":"Materials"},"services":{"items":{"$ref":"#/components/schemas/Choice"},"type":"array","title":"Services"},"apiVersion":{"type":"string","const":"1","title":"Apiversion","default":"1"},"currency":{"type":"string","const":"SEK","title":"Currency","default":"SEK"},"priceRevision":{"type":"integer","title":"Pricerevision"},"presentation":{"additionalProperties":true,"type":"object","title":"Presentation"},"presentationVersion":{"type":"integer","title":"Presentationversion","default":0},"limits":{"additionalProperties":{"type":"integer"},"type":"object","title":"Limits"}},"additionalProperties":false,"type":"object","required":["tenant","companyName","defaultLocale","quoteValidDays","branding","materials","services","priceRevision","limits"],"title":"Configuration"},"CustomerInput":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"company":{"type":"string","maxLength":160,"title":"Company","default":""},"email":{"type":"string","maxLength":240,"minLength":3,"pattern":"^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$","title":"Email"},"phone":{"type":"string","maxLength":80,"title":"Phone","default":""},"reference":{"type":"string","maxLength":120,"title":"Reference","default":""},"notes":{"type":"string","maxLength":2000,"title":"Notes","default":""}},"additionalProperties":false,"type":"object","required":["name","email"],"title":"CustomerInput"},"Dimensions":{"properties":{"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"z":{"type":"number","title":"Z"}},"additionalProperties":false,"type":"object","required":["x","y","z"],"title":"Dimensions"},"ErrorDetail":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"fields":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object","title":"Fields"},"requestId":{"type":"string","title":"Requestid"}},"additionalProperties":false,"type":"object","required":["code","message","requestId"],"title":"ErrorDetail"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ErrorDetail"}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse"},"Failure":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"Failure"},"JobResponse":{"properties":{"id":{"type":"string","title":"Id"},"state":{"type":"string","enum":["analyzing","preparing_preview","ready","failed"],"title":"State"},"createdAt":{"type":"number","title":"Createdat"},"updatedAt":{"type":"number","title":"Updatedat"},"result":{"anyOf":[{"$ref":"#/components/schemas/AnalysisResult"},{"type":"null"}]},"error":{"anyOf":[{"$ref":"#/components/schemas/Failure"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["id","state","createdAt","updatedAt"],"title":"JobResponse"},"Operation":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"}},"additionalProperties":false,"type":"object","required":["key","label"],"title":"Operation"},"Plan":{"properties":{"primaryProcess":{"type":"string","title":"Primaryprocess"},"primaryLabel":{"type":"string","title":"Primarylabel"},"operations":{"items":{"$ref":"#/components/schemas/PlanOperation"},"type":"array","title":"Operations"},"confidence":{"type":"number","title":"Confidence"},"reviewRequired":{"type":"boolean","title":"Reviewrequired"},"isSheetMetal":{"type":"boolean","title":"Issheetmetal"},"estimatedSheetThicknessMm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimatedsheetthicknessmm"},"estimatedBends":{"type":"integer","title":"Estimatedbends"},"estimatedCutLengthMm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimatedcutlengthmm"},"developedAreaMm2":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Developedareamm2"}},"additionalProperties":false,"type":"object","required":["primaryProcess","primaryLabel","operations","confidence","reviewRequired","isSheetMetal","estimatedSheetThicknessMm","estimatedBends","estimatedCutLengthMm","developedAreaMm2"],"title":"Plan"},"PlanOperation":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"confidence":{"type":"number","title":"Confidence"},"estimatedCount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Estimatedcount"}},"additionalProperties":false,"type":"object","required":["key","label","confidence"],"title":"PlanOperation"},"PublicAnalysis":{"properties":{"analysisId":{"type":"string","title":"Analysisid"},"filename":{"type":"string","title":"Filename"},"dimensionsMm":{"$ref":"#/components/schemas/Dimensions"},"volumeMm3":{"type":"number","title":"Volumemm3"},"surfaceAreaMm2":{"type":"number","title":"Surfaceareamm2"},"boundingBoxVolumeMm3":{"type":"number","title":"Boundingboxvolumemm3"},"stockRemovalRatio":{"type":"number","title":"Stockremovalratio"},"totalEdgeLengthMm":{"type":"number","title":"Totaledgelengthmm"},"features":{"additionalProperties":{"type":"integer"},"type":"object","title":"Features"},"detectedProcess":{"type":"string","title":"Detectedprocess"},"manufacturingPlan":{"$ref":"#/components/schemas/Plan"},"preview3d":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Preview3D"}},"additionalProperties":false,"type":"object","required":["analysisId","filename","dimensionsMm","volumeMm3","surfaceAreaMm2","boundingBoxVolumeMm3","stockRemovalRatio","totalEdgeLengthMm","features","detectedProcess","manufacturingPlan"],"title":"PublicAnalysis"},"PublicQuote":{"properties":{"material":{"$ref":"#/components/schemas/Choice"},"quantity":{"type":"integer","title":"Quantity"},"partWeightKg":{"type":"number","title":"Partweightkg"},"unitPriceSek":{"type":"number","title":"Unitpricesek"},"totalPriceSek":{"type":"number","title":"Totalpricesek"},"leadTimeDays":{"type":"integer","title":"Leadtimedays"},"operations":{"items":{"$ref":"#/components/schemas/Operation"},"type":"array","title":"Operations"},"reviewRequired":{"type":"boolean","title":"Reviewrequired"}},"additionalProperties":false,"type":"object","required":["material","quantity","partWeightKg","unitPriceSek","totalPriceSek","leadTimeDays","operations","reviewRequired"],"title":"PublicQuote"},"RequestInput":{"properties":{"analysisId":{"type":"string","pattern":"^[a-f0-9]{32}$","title":"Analysisid"},"material":{"type":"string","maxLength":64,"minLength":1,"title":"Material"},"quantity":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Quantity"},"customer":{"$ref":"#/components/schemas/CustomerInput"},"locale":{"type":"string","enum":["sv","en"],"title":"Locale","default":"sv"}},"additionalProperties":false,"type":"object","required":["analysisId","material","quantity","customer"],"title":"RequestInput"},"RequestResponse":{"properties":{"id":{"type":"string","title":"Id"},"quoteNumber":{"type":"string","title":"Quotenumber"},"createdAt":{"type":"string","title":"Createdat"},"status":{"type":"string","enum":["ready","sent","accepted","rejected","expired"],"title":"Status"},"delivery":{"type":"string","enum":["sent","pending"],"title":"Delivery"},"sendState":{"type":"string","enum":["pending","preparing","submitting","accepted","failed","unknown"],"title":"Sendstate"},"quote":{"$ref":"#/components/schemas/PublicQuote"},"reviewRequired":{"type":"boolean","title":"Reviewrequired"},"publicUrl":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publicurl"},"priceRevision":{"type":"integer","title":"Pricerevision"}},"additionalProperties":false,"type":"object","required":["id","quoteNumber","createdAt","status","delivery","sendState","quote","reviewRequired","publicUrl","priceRevision"],"title":"RequestResponse"},"SessionInput":{"properties":{"tenant":{"type":"string","maxLength":63,"minLength":2,"pattern":"^[a-z0-9][a-z0-9-]+$","title":"Tenant"},"installation":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{32}$"},{"type":"null"}],"title":"Installation"}},"additionalProperties":false,"type":"object","required":["tenant"],"title":"SessionInput"},"SessionResponse":{"properties":{"id":{"type":"string","title":"Id"},"credential":{"type":"string","title":"Credential"},"expiresAt":{"type":"number","title":"Expiresat"},"absoluteExpiresAt":{"type":"number","title":"Absoluteexpiresat"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"kind":{"type":"string","enum":["browser","server","preview"],"title":"Kind"},"version":{"type":"integer","title":"Version"}},"additionalProperties":false,"type":"object","required":["id","credential","expiresAt","absoluteExpiresAt","scopes","kind","version"],"title":"SessionResponse"},"SessionStatus":{"properties":{"active":{"type":"boolean","const":true,"title":"Active"},"validUntil":{"type":"string","title":"Validuntil"},"serviceEndsAt":{"type":"number","title":"Serviceendsat"},"expiresAt":{"type":"number","title":"Expiresat"},"absoluteExpiresAt":{"type":"number","title":"Absoluteexpiresat"},"kind":{"type":"string","enum":["browser","server","preview"],"title":"Kind"}},"additionalProperties":false,"type":"object","required":["active","validUntil","serviceEndsAt","expiresAt","absoluteExpiresAt","kind"],"title":"SessionStatus"}},"securitySchemes":{"IntegrationCredential":{"type":"http","description":"Short-lived visitor credential or explicitly enabled server key. Never a portal cookie.","scheme":"bearer"}}}}