{"components":{"schemas":{"AdminEnterpriseLicense":{"additionalProperties":false,"description":"Admin-safe enterprise license. Stored secret hashes are never returned. licenseKey is present only in the first successful create response.","properties":{"_id":{"description":"Legacy storage identifier accepted by the admin dashboard.","type":"string"},"allowedDomains":{"items":{"type":"string"},"type":"array"},"cloudRunServiceUrl":{"description":"Legacy field after recursive infrastructure-origin masking; internal origins are replaced with https://api.vedika.io.","format":"uri","type":"string"},"createdAt":{"format":"date-time","type":"string"},"currentMonthRequests":{"minimum":0,"type":"integer"},"currentUsage":{"additionalProperties":false,"properties":{"requestsThisMonth":{"minimum":0,"type":"integer"}},"type":"object"},"customerEmail":{"format":"email","type":"string"},"customerId":{"type":"string"},"customerName":{"type":"string"},"deploymentId":{"type":"string"},"expiresAt":{"format":"date-time","type":"string"},"id":{"type":"string"},"issuedAt":{"format":"date-time","type":"string"},"lastHealth":{"additionalProperties":true,"description":"Last customer-supplied deployment health object recorded by license validation.","type":"object"},"lastHealthAt":{"format":"date-time","type":"string"},"lastResetAt":{"format":"date-time","type":"string"},"lastValidatedAt":{"format":"date-time","type":"string"},"licenseId":{"description":"Legacy license identifier alias accepted by the admin dashboard.","type":"string"},"licenseKey":{"description":"One-time plaintext license key returned only by the first successful create response. It cannot be retrieved or replayed.","readOnly":true,"type":"string"},"license_id":{"description":"Legacy snake-case license identifier alias accepted by the admin dashboard.","type":"string"},"maxRequestsPerMonth":{"minimum":-1,"type":"integer"},"notes":{"type":"string"},"region":{"type":"string"},"status":{"type":"string"},"tier":{"enum":["ENTERPRISE_STANDARD","ENTERPRISE_PLUS","ENTERPRISE_UNLIMITED"],"type":"string"},"totalRequests":{"minimum":0,"type":"integer"},"updatedAt":{"format":"date-time","type":"string"}},"type":"object"},"AdminLicenseCreateResponse":{"additionalProperties":false,"properties":{"idempotentReplay":{"type":"boolean"},"license":{"$ref":"#/components/schemas/AdminEnterpriseLicense"},"message":{"type":"string"},"success":{"enum":[true],"type":"boolean"}},"required":["success","idempotentReplay","license","message"],"type":"object"},"AdminLicenseError":{"additionalProperties":true,"description":"Admin authentication failures deliberately use a uniform 404 Not found response. Mutation failures can also include the stable code, retry, guidance, or redacted license fields shown here.","properties":{"code":{"enum":["VALIDATION_ERROR","INVALID_IDEMPOTENCY_KEY","IDEMPOTENCY_KEY_CONFLICT","LICENSE_CREATE_KEY_REPLAY_UNAVAILABLE","LICENSE_MUTATION_OUTCOME_UNKNOWN","ADMIN_AUTH_REQUIRED","NOT_FOUND","INTERNAL_ERROR"],"type":"string"},"data":{"additionalProperties":true,"properties":{"license":{"$ref":"#/components/schemas/AdminEnterpriseLicense"},"requiresKeyRotation":{"type":"boolean"}},"type":"object"},"error":{"type":"string"},"guidance":{"type":"string"},"message":{"type":"string"},"retryAfter":{"minimum":1,"type":"integer"},"retryWithSameIdempotencyKey":{"type":"boolean"},"retryable":{"type":"boolean"},"success":{"type":"boolean"}},"type":"object"},"AdminLicenseIdempotencyKey":{"description":"Opaque retry token. Reuse only for an exact retry of the same mutation. Reserved credential-like prefixes vk_, sk_, pk_, api_key_, and bearer_ are rejected case-insensitively.","maxLength":64,"minLength":16,"not":{"anyOf":[{"pattern":"^[Vv][Kk]_"},{"pattern":"^[Ss][Kk]_"},{"pattern":"^[Pp][Kk]_"},{"pattern":"^[Aa][Pp][Ii]_[Kk][Ee][Yy]_"},{"pattern":"^[Bb][Ee][Aa][Rr][Ee][Rr]_"}]},"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"AdminLicenseMutationResponse":{"additionalProperties":false,"properties":{"data":{"additionalProperties":false,"properties":{"license":{"$ref":"#/components/schemas/AdminEnterpriseLicense"}},"required":["license"],"type":"object"},"idempotentReplay":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","idempotentReplay","data"],"type":"object"},"BillingInfo":{"description":"Billing values are integer USD cents.","properties":{"balanceAfter":{"description":"Wallet balance after this request, in USD cents.","format":"int64","minimum":0,"type":"integer"},"category":{"type":"string"},"charged":{"description":"Amount charged in USD cents.","format":"int64","minimum":0,"type":"integer"},"currency":{"enum":["USD"],"type":"string"},"endpoint":{"description":"The request path that was billed.","format":"uri-reference","pattern":"^/","type":"string"}},"required":["endpoint","charged","balanceAfter","currency"],"type":"object"},"BirthDetails":{"anyOf":[{"required":["datetime"]},{"required":["date","time"]}],"properties":{"ayanamsa":{"enum":["lahiri","kp","raman","yukteshwar"],"type":"string"},"date":{"format":"date","type":"string"},"datetime":{"format":"date-time","type":"string"},"gender":{"type":"string"},"latitude":{"maximum":90,"minimum":-90,"type":"number"},"longitude":{"maximum":180,"minimum":-180,"type":"number"},"time":{"description":"Local birth time (HH:MM).","type":"string"},"timezone":{"oneOf":[{"description":"IANA timezone or UTC offset, for example +05:30.","type":"string"},{"description":"UTC offset in hours, for example 5.5.","type":"number"}]}},"required":["latitude","longitude"],"type":"object"},"Error":{"properties":{"error":{"properties":{"code":{"example":"MISSING_DATETIME","type":"string"},"message":{"type":"string"}},"type":"object"},"success":{"example":false,"type":"boolean"}},"type":"object"},"ErrorResponse":{"properties":{"code":{"type":"string"},"details":{"additionalProperties":true,"nullable":true,"type":"object"},"error":{"type":"string"}},"required":["error","code"],"type":"object"},"PrebuiltBirthDetails":{"anyOf":[{"required":["datetime"]},{"required":["date"]}],"description":"Birth input shared by chart and numerology prebuilt reports. Send either datetime, or date with optional time (the server uses 12:00 when time is omitted). Numerology accepts the date/datetime without coordinates. Chart reports additionally require latitude and longitude. Timezone is optional.","properties":{"date":{"format":"date","type":"string"},"datetime":{"format":"date-time","type":"string"},"latitude":{"maximum":90,"minimum":-90,"type":"number"},"longitude":{"maximum":180,"minimum":-180,"type":"number"},"place":{"type":"string"},"time":{"type":"string"},"timezone":{"type":"string"}},"type":"object"},"PrebuiltBranding":{"properties":{"companyName":{"type":"string"},"footerText":{"type":"string"},"logoUrl":{"format":"uri","type":"string"}},"type":"object"},"PrebuiltCatalogItem":{"properties":{"id":{"type":"string"},"languages":{"items":{"type":"string"},"minItems":1,"type":"array"},"pageCountKnownAfterRender":{"enum":[true],"type":"boolean"},"priceCents":{"minimum":1,"type":"integer"},"status":{"enum":["implemented"],"type":"string"},"suite":{"type":"string"},"tier":{"type":"string"}},"required":["id","suite","tier","status","priceCents","languages","pageCountKnownAfterRender"],"type":"object"},"PrebuiltCatalogItemResponse":{"properties":{"data":{"$ref":"#/components/schemas/PrebuiltCatalogItem"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"PrebuiltCatalogResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PrebuiltCatalogItem"},"type":"array"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"PrebuiltReportData":{"properties":{"citedCells":{"minimum":0,"type":"integer"},"contentType":{"enum":["application/pdf"],"type":"string"},"dataSource":{"enum":["vedika-ephemeris"],"type":"string"},"downloadUrl":{"format":"uri","type":"string"},"engine":{"enum":["vedika-intelligence"],"type":"string"},"iframeUrl":{"format":"uri","type":"string"},"language":{"type":"string"},"pageCount":{"minimum":1,"type":"integer"},"reportTitle":{"type":"string"},"reportType":{"type":"string"},"sectionCount":{"minimum":0,"type":"integer"},"sections":{"items":{"type":"string"},"type":"array"},"tier":{"type":"string"}},"required":["reportType","tier","language","pageCount","sectionCount","reportTitle","contentType","downloadUrl","iframeUrl","engine","dataSource"],"type":"object"},"PrebuiltReportGenerateRequest":{"description":"The required input depends on reportType. Single-chart reports use birthDetails with latitude and longitude. Two-chart matching and synastry reports use birthDetails and birthDetails2, both with latitude and longitude. Numerology reports use name and/or dob; dob may instead be supplied as birthDetails.date or the date part of birthDetails.datetime without coordinates. Vastu reports use property geometry and ignore birthDetails. This endpoint rejects missing family-specific input before any charge.","properties":{"birthDetails":{"$ref":"#/components/schemas/PrebuiltBirthDetails"},"birthDetails2":{"allOf":[{"$ref":"#/components/schemas/PrebuiltBirthDetails"},{"required":["latitude","longitude"]}]},"branding":{"$ref":"#/components/schemas/PrebuiltBranding"},"dateRange":{"properties":{"end":{"format":"date","type":"string"},"start":{"format":"date","type":"string"}},"required":["start","end"],"type":"object"},"dob":{"description":"Numerology date of birth. A date in birthDetails is also accepted.","format":"date","type":"string"},"lang":{"default":"en","type":"string"},"name":{"type":"string"},"property":{"anyOf":[{"required":["polygon"]},{"required":["width","length"]},{"required":["width","depth"]}],"description":"Building input for a Vastu prebuilt report. Supply a non-degenerate polygon, or positive width with length/depth. Facing, zone resolution and room labels refine the report.","properties":{"depth":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"facing":{"type":"string"},"length":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"polygon":{"description":"A non-degenerate building outline as [x, y] points.","items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"rooms":{"items":{"properties":{"name":{"type":"string"},"roomType":{"type":"string"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"width":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"zoneResolution":{"enum":[8,16,32],"type":"integer"}},"type":"object"},"reportType":{"description":"The report identifier to generate, for example `vedic-career-standard`. Use GET /api/v1/reports/prebuilt/catalog for the available report types, tiers and languages. Existing report identifiers remain supported. Where an identifier resolves to a consolidated report, its alias price cap is preserved; distinct report tiers retain their own content boundaries.","example":"vedic-career-standard","type":"string"}},"required":["reportType"],"type":"object"},"PrebuiltReportGenerateResponse":{"properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/PrebuiltReportData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"PublicBilling":{"properties":{"balanceAfter":{"description":"Wallet balance in USD immediately after this request settlement; a per-request ledger fact, not part of the computed result.","type":"number","x-vedika-per-request":true},"balanceBefore":{"description":"Wallet balance in USD immediately before this request settlement; a per-request ledger fact, not part of the computed result.","type":"number","x-vedika-per-request":true},"category":{"type":"string"},"charged":{"type":"number"},"currency":{"type":"string"},"endpoint":{"type":"string"}},"required":["charged","currency","balanceBefore","balanceAfter","endpoint","category"],"type":"object"},"PublicError":{"properties":{"code":{"type":"string"},"error":{"type":"string"},"message":{"type":"string"},"status":{"type":"string"},"success":{"enum":[false],"type":"boolean"}},"type":"object"},"PublicMeta":{"properties":{"dataSource":{"enum":["vedika-ephemeris"],"type":"string"},"engine":{"enum":["vedika-intelligence"],"type":"string"},"source":{"description":"For paid Vastu useful-result envelopes, verified classical citations already carried by data.sources (empty when no verified citation applies). This provenance summary does not change row-level convention/computed classifications or verified flags. Other domains retain their data-source label.","type":"string"},"version":{"type":"string"}},"required":["engine","version"],"type":"object"},"StandardResponse":{"properties":{"billing":{"$ref":"#/components/schemas/BillingInfo"},"data":{"additionalProperties":true,"type":"object"},"status":{"type":"string"}},"required":["status","data","billing"],"type":"object"},"VastuArAnchorRecommendationsData":{"additionalProperties":false,"properties":{"anchors":{"items":{"additionalProperties":false,"properties":{"deity":{"type":"string"},"deityClassification":{"description":"classical only when the deity name sits in the matching row of the Brihat Samhita 53.43-48 roster (or is the zone's inner-corner devata, or Brahmā at the centre).","enum":["classical","convention"],"type":"string"},"deitySource":{"description":"The roster verse for a classical deity name, or the convention marker.","type":"string"},"id":{"type":"string"},"insidePlot":{"enum":[true],"type":"boolean"},"normal":{"items":{"type":"number"},"maxItems":3,"minItems":3,"type":"array"},"planPosition":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"worldPosition":{"items":{"type":"number"},"maxItems":3,"minItems":3,"type":"array"},"zone":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"}},"required":["id","zone","deity","planPosition","worldPosition","normal","insidePlot"],"type":"object"},"type":"array"},"bearingAssumedNorth":{"enum":[false],"type":"boolean"},"bearingDeg":{"type":"number"},"computed":{"enum":[true],"type":"boolean"},"coordinateNote":{"type":"string"},"omissionNote":{"type":"string"},"omittedZones":{"items":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"},"type":"array"},"physicalCoverageVerified":{"enum":[false],"type":"boolean"},"physicalNorthVerified":{"enum":[false],"type":"boolean"},"physicalRegistrationVerified":{"enum":[false],"type":"boolean"},"planToWorld":{"$ref":"#/components/schemas/VastuArPlanToWorld"},"provenance":{"$ref":"#/components/schemas/VastuArAssetProvenance"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"verified":{"enum":[false],"type":"boolean"}},"required":["anchors","omittedZones","planToWorld","bearingDeg","bearingAssumedNorth","physicalRegistrationVerified","physicalNorthVerified","sources","verified","provenance","computed","physicalCoverageVerified","coordinateNote","omissionNote"],"type":"object"},"VastuArAnchorRecommendationsRequest":{"additionalProperties":false,"description":"Local Cartesian plot in metres, not latitude/longitude or screen pixels. bearingDeg is the true compass heading of plan +Y. Only projected zone centroids inside the plot produce anchors. This response does not establish physical north or device registration.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"planToWorld":{"$ref":"#/components/schemas/VastuArPlanToWorld"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["plotPolygon","bearingDeg","planToWorld"],"type":"object"},"VastuArAnchorRecommendationsResponse":{"description":"Typed success envelope for ar/anchor-recommendations","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuArAnchorRecommendationsData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuArAsset":{"additionalProperties":false,"properties":{"bytes":{"minimum":1,"type":"integer"},"height":{"type":"integer"},"mimeType":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"url":{"format":"uri","type":"string"},"width":{"type":"integer"}},"required":["url","sha256","bytes","mimeType"],"type":"object"},"VastuArAssetProvenance":{"additionalProperties":false,"properties":{"description":{"type":"string"},"kind":{"enum":["original_modern_visualization"],"type":"string"},"manifestSha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"manifestUrl":{"format":"uri","type":"string"},"religiousDesignVerified":{"enum":[false],"type":"boolean"},"remedyEfficacyClaimed":{"enum":[false],"type":"boolean"}},"required":["kind","description","manifestUrl","manifestSha256","religiousDesignVerified","remedyEfficacyClaimed"],"type":"object"},"VastuArAttestationChallengeData":{"additionalProperties":false,"properties":{"challenge":{"description":"43-character base64url challenge; null when the platform is not configured.","nullable":true,"type":"string"},"deviceAttestation":{"additionalProperties":false,"properties":{"platform":{"enum":["ios","android"],"type":"string"},"status":{"enum":["challenge_issued","not_configured"],"type":"string"}},"required":["status","platform"],"type":"object"},"expiresAtEpoch":{"nullable":true,"type":"integer"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"singleUse":{"enum":[true],"type":"boolean"},"ttlSeconds":{"enum":[300,null],"nullable":true,"type":"integer"}},"required":["challenge","expiresAtEpoch","ttlSeconds","singleUse","deviceAttestation"],"type":"object"},"VastuArAttestationChallengeRequest":{"additionalProperties":true,"description":"Fields not listed here are ignored.","properties":{"platform":{"enum":["ios","android"],"type":"string"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["platform"],"type":"object"},"VastuArAttestationChallengeResponse":{"description":"Typed success envelope for ar/attestation/challenge. Unbilled.","properties":{"billing":{"allOf":[{"$ref":"#/components/schemas/PublicBilling"}],"nullable":true},"data":{"$ref":"#/components/schemas/VastuArAttestationChallengeData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuArCaptureMergeData":{"additionalProperties":false,"properties":{"alignmentMethod":{"type":"string"},"floorStack":{"items":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"type":"array"},"frame":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"method":{"enum":["capture-merge"],"type":"string"},"outlines":{"items":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"type":"array"},"pairResiduals":{"items":{"additionalProperties":false,"properties":{"controlCount":{"type":"integer"},"fromCaptureId":{"type":"string"},"maxResidualM":{"minimum":0,"type":"number"},"rmsResidualM":{"minimum":0,"type":"number"},"toCaptureId":{"type":"string"}},"required":["fromCaptureId","toCaptureId","rmsResidualM","maxResidualM"],"type":"object"},"type":"array"},"pricing":{"additionalProperties":false,"description":"Returned on the paid route after a successful computation; absent from fixed-sample sandbox results.","properties":{"attributableCostUsd":{"description":"Measured attributable compute cost in USD, before markup.","type":"string"},"computedPriceUsd":{"description":"Attributable cost multiplied by four, before settlement.","type":"string"},"markupMultiplier":{"enum":[4],"type":"integer"},"settledChargeUsd":{"description":"Wallet charge in USD after half-even cent rounding and the positive one-cent minimum.","type":"string"},"settlement":{"type":"string"}},"required":["attributableCostUsd","markupMultiplier","computedPriceUsd","settledChargeUsd","settlement"],"type":"object"},"registrations":{"items":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"type":"array"},"rooms":{"items":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"toleranceM":{"type":"number"},"unresolvedAlignmentErrors":{"items":{"type":"string"},"type":"array"}},"required":["method","frame","rooms","outlines","registrations","pairResiduals","unresolvedAlignmentErrors","floorStack","toleranceM","alignmentMethod"],"type":"object"},"VastuArCaptureMergeRequest":{"additionalProperties":false,"description":"Explicit rigid registration per floor, with two or more corresponding controls or shared door endpoints per link. Payloads use the existing strict roomCapture schema. Floors declare physical elevations and the true-north transform of each floor reference capture. A disconnected graph, degenerate controls, pair RMS/max residual or control cycle over tolerance returns 400 before billing. No scale fitting, inferred origins or silent merge. Maximum encoded body: 1 MiB. All linked controls are jointly refined by anchored least-squares rigid 2D alignment per floor. Maximum encoded body: 1 MiB. All linked controls are jointly refined by anchored least-squares rigid 2D alignment per floor.","properties":{"captures":{"items":{"additionalProperties":false,"properties":{"floorIndex":{"type":"integer"},"id":{"maxLength":128,"minLength":1,"type":"string"},"payload":{"$ref":"#/components/schemas/VastuRoomCapture"}},"required":["id","floorIndex","payload"],"type":"object"},"maxItems":32,"minItems":2,"type":"array"},"floors":{"items":{"additionalProperties":false,"properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"elevationM":{"maximum":1000,"minimum":-1000,"type":"number"},"floorIndex":{"type":"integer"},"originXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"}},"required":["floorIndex","elevationM","originXY","bearingDeg"],"type":"object"},"maxItems":16,"minItems":1,"type":"array"},"links":{"items":{"additionalProperties":false,"properties":{"controlPoints":{"items":{"additionalProperties":false,"properties":{"fromXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"toXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"}},"required":["fromXY","toXY"],"type":"object"},"maxItems":256,"minItems":2,"type":"array"},"fromCaptureId":{"type":"string"},"sharedDoors":{"items":{"additionalProperties":false,"properties":{"fromXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"toXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"}},"required":["fromXY","toXY"],"type":"object"},"maxItems":256,"minItems":2,"type":"array"},"toCaptureId":{"type":"string"}},"required":["fromCaptureId","toCaptureId"],"type":"object"},"maxItems":128,"type":"array"},"maxChargeUsd":{"description":"Optional maximum wallet debit in USD, as an exact nonnegative decimal string. The server checks the cent-settled charge before debit. A charge above this bound returns 400 without computed data or debit. Applies to the paid route.","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]{1,2})?$","type":"string"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"toleranceM":{"maximum":1,"minimum":0.0001,"type":"number"}},"required":["captures","links","floors","toleranceM"],"type":"object"},"VastuArCaptureMergeResponse":{"additionalProperties":false,"properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuArCaptureMergeData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuArDeityIconsData":{"additionalProperties":false,"properties":{"icons":{"items":{"additionalProperties":false,"properties":{"deity":{"type":"string"},"deityClassification":{"description":"classical only when the deity name sits in the matching row of the Brihat Samhita 53.43-48 roster (or is the zone's inner-corner devata, or Brahmā at the centre).","enum":["classical","convention"],"type":"string"},"deitySource":{"description":"The roster verse for a classical deity name, or the convention marker.","type":"string"},"height":{"type":"integer"},"kind":{"enum":["typographic-nameplate"],"type":"string"},"png":{"$ref":"#/components/schemas/VastuArAsset"},"svg":{"$ref":"#/components/schemas/VastuArAsset"},"width":{"type":"integer"},"zone":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"}},"required":["zone","deity","kind","png","svg","width","height"],"type":"object"},"type":"array"},"provenance":{"$ref":"#/components/schemas/VastuArAssetProvenance"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"verified":{"enum":[false],"type":"boolean"}},"required":["icons","verified","provenance"],"type":"object"},"VastuArDeityIconsRequest":{"additionalProperties":false,"description":"Omit zone to return all nine zones. Explicit unknown/null zone rejects.","properties":{"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"}},"required":[],"type":"object"},"VastuArDeityIconsResponse":{"description":"Typed success envelope for ar/deity-icons","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuArDeityIconsData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuArHeatmapRasterData":{"additionalProperties":false,"properties":{"bearingAssumedNorth":{"type":"boolean"},"completeness":{"additionalProperties":false,"properties":{"computedComponents":{"items":{"type":"string"},"type":"array"},"missingInputs":{"items":{"type":"string"},"type":"array"},"note":{"type":"string"},"physicalCoverageVerified":{"enum":[false],"type":"boolean"},"projectedCellCount":{"minimum":0,"type":"integer"},"status":{"enum":["partial","computed_from_supplied_input"],"type":"string"}},"required":["status","computedComponents","missingInputs","projectedCellCount","physicalCoverageVerified","note"],"type":"object"},"computed":{"enum":[true],"type":"boolean"},"legend":{"additionalProperties":false,"properties":{"disturbed":{"additionalProperties":false,"properties":{"color":{"type":"string"},"meaning":{"type":"string"}},"required":["color","meaning"],"type":"object"},"neutral":{"additionalProperties":false,"properties":{"color":{"type":"string"},"meaning":{"type":"string"}},"required":["color","meaning"],"type":"object"},"observed":{"type":"string"}},"required":["disturbed","neutral","observed"],"type":"object"},"mandalaProjection":{"additionalProperties":true,"nullable":true,"type":"object"},"mask":{"maximum":511,"minimum":0,"type":"integer"},"maskBitOrder":{"items":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"},"maxItems":9,"minItems":9,"type":"array"},"observedZones":{"items":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"},"type":"array"},"physicalCoverageVerified":{"enum":[false],"type":"boolean"},"provenance":{"$ref":"#/components/schemas/VastuArAssetProvenance"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"texture":{"$ref":"#/components/schemas/VastuArAsset"},"unobservedZones":{"items":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"},"type":"array"},"verified":{"enum":[false],"type":"boolean"},"zones":{"items":{"additionalProperties":false,"properties":{"deity":{"type":"string"},"deityClassification":{"description":"classical only when the deity name sits in the matching row of the Brihat Samhita 53.43-48 roster (or is the zone's inner-corner devata, or Brahmā at the centre).","enum":["classical","convention"],"type":"string"},"deitySource":{"description":"The roster verse for a classical deity name, or the convention marker.","type":"string"},"disturbed":{"type":"boolean"},"observed":{"type":"boolean"},"roomCount":{"type":"integer"},"zone":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"}},"required":["zone","deity","disturbed","observed","roomCount"],"type":"object"},"maxItems":9,"minItems":9,"type":"array"}},"required":["mask","texture","maskBitOrder","zones","observedZones","unobservedZones","mandalaProjection","bearingAssumedNorth","completeness","sources","physicalCoverageVerified","verified","provenance","legend","computed"],"type":"object"},"VastuArHeatmapRasterRequest":{"additionalProperties":false,"description":"A nine-zone disturbance image for supplied room placements. Optional projection uses the existing detailed audit. Plan +Y and bearingDeg follow the public local Cartesian convention; without a bearing the response explicitly reports assumed north. Neutral does not mean healthy or observed.","properties":{"bearingDeg":{"type":"number"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"required":["roomType","zone"],"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuArHeatmapRasterResponse":{"description":"Typed success envelope for ar/heatmap-raster","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuArHeatmapRasterData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuArPlanToWorld":{"additionalProperties":false,"description":"world = origin + plan.x*xAxis + plan.y*yAxis. Axes must be orthogonal unit vectors; yAxis is plan +Y, not world up. Caller must register this frame in the device scene. Coordinates must be finite and bounded to 1e6 metres.","properties":{"origin":{"items":{"type":"number"},"maxItems":3,"minItems":3,"type":"array"},"units":{"enum":["metres"],"type":"string"},"xAxis":{"items":{"type":"number"},"maxItems":3,"minItems":3,"type":"array"},"yAxis":{"items":{"type":"number"},"maxItems":3,"minItems":3,"type":"array"}},"required":["units","origin","xAxis","yAxis"],"type":"object"},"VastuArRoomCaptureData":{"additionalProperties":false,"properties":{"anchorRecommendations":{"anyOf":[{"$ref":"#/components/schemas/VastuArAnchorRecommendationsData"}],"description":"Null unless frame.planToWorld was sent","nullable":true},"attestation":{"enum":["caller-reported"],"type":"string"},"audit":{"$ref":"#/components/schemas/VastuDetailedFloorPlanAuditData"},"capture":{"additionalProperties":false,"properties":{"captureId":{"type":"string"},"capturedAtEpoch":{"format":"int64","type":"integer"},"device":{"additionalProperties":true,"type":"object"},"floorIndex":{"type":"integer"},"inputUnits":{"enum":["m","ft","mm","in","metres"],"type":"string"},"north":{"additionalProperties":true,"type":"object"},"openingCount":{"type":"integer"},"originShiftM":{"description":"How far the capture was moved so the outline starts at 0, 0; planToWorld was moved with it","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"outline":{"additionalProperties":false,"properties":{"areaM2":{"minimum":0,"type":"number"},"geometry":{"additionalProperties":true,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"type":"array"},"multipolygons":{"items":{"$ref":"#/components/schemas/VastuPlanRegion"},"type":"array"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"}},"type":"object"},"length":{"minimum":0,"type":"number"},"polygon":{"items":{"description":"[x, y] in metres","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"source":{"enum":["traced"],"type":"string"},"width":{"minimum":0,"type":"number"}},"required":["polygon","source","width","length","areaM2"],"type":"object"},"roomCount":{"type":"integer"},"units":{"enum":["m"],"type":"string"}},"required":["captureId","capturedAtEpoch","device","north","floorIndex","outline","originShiftM","roomCount","openingCount"],"type":"object"},"captureVerification":{"enum":["unverified-caller-input"],"type":"string"},"completeness":{"additionalProperties":false,"properties":{"acceptForAudit":{"type":"boolean"},"labelledRooms":{"minimum":0,"type":"integer"},"missing":{"items":{"type":"string"},"type":"array"},"unlabelledRooms":{"items":{"type":"string"},"type":"array"},"warnings":{"items":{"type":"string"},"type":"array"}},"required":["acceptForAudit","labelledRooms","unlabelledRooms","missing","warnings"],"type":"object"},"derivedRequests":{"additionalProperties":false,"properties":{"anchorRecommendations":{"anyOf":[{"$ref":"#/components/schemas/VastuArAnchorRecommendationsRequest"}],"nullable":true},"auditFloorPlanDetailed":{"$ref":"#/components/schemas/VastuAuditFloorPlanDetailedRequest"},"planAnalyze":{"$ref":"#/components/schemas/VastuPlanAnalyzeRequest"},"scanQuality":{"$ref":"#/components/schemas/VastuArScanQualityRequest"}},"required":["planAnalyze","auditFloorPlanDetailed","scanQuality","anchorRecommendations"],"type":"object"},"deviceAttestation":{"$ref":"#/components/schemas/VastuDeviceAttestationStatus"},"method":{"enum":["room-capture"],"type":"string"},"note":{"type":"string"},"planAnalysis":{"$ref":"#/components/schemas/VastuPlanAuditData"},"rooms":{"items":{"additionalProperties":false,"properties":{"areaM2":{"minimum":0,"type":"number"},"centroid":{"description":"[x, y] in metres","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"geometry":{"additionalProperties":true,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"type":"array"},"multipolygons":{"items":{"$ref":"#/components/schemas/VastuPlanRegion"},"type":"array"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"}},"type":"object"},"heightM":{"nullable":true,"type":"number"},"id":{"type":"string"},"label":{"nullable":true,"type":"string"},"openingCount":{"minimum":0,"type":"integer"},"polygon":{"items":{"description":"[x, y] in metres","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"roomType":{"nullable":true,"type":"string"},"zone":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"},"zoneBasis":{"type":"string"}},"required":["id","label","roomType","zone","zoneBasis","areaM2","centroid","heightM","openingCount","polygon"],"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scanQuality":{"$ref":"#/components/schemas/VastuArScanQualityData"},"schema":{"enum":["vedika.roomCapture/1"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verified":{"enum":[false],"type":"boolean"}},"required":["method","schema","capture","rooms","derivedRequests","planAnalysis","audit","scanQuality","anchorRecommendations","completeness","sources","verified","captureVerification","attestation","note","deviceAttestation"],"type":"object"},"VastuArRoomCaptureRequest":{"additionalProperties":false,"description":"A caller-reported device room capture (vedika.roomCapture/1). The server validates it, converts it into the plan/analyze, audit/floor-plan-detailed and ar/scan-quality requests, and runs them. The outline must be traced, at least one room must be labelled, and every room must stay inside the outline. Meshes are never uploaded; the body is limited to 256 KiB and 4096 corner points. A refused capture is not charged.","properties":{"capture":{"$ref":"#/components/schemas/VastuRoomCapture"},"deviceAttestation":{"$ref":"#/components/schemas/VastuDeviceAttestation"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zoneResolution":{"default":16,"enum":[8,16,32],"type":"integer"}},"required":["capture"],"type":"object"},"VastuArRoomCaptureResponse":{"description":"Typed success envelope for ar/room-capture","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuArRoomCaptureData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuArScanQualityData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"acceptForAudit":{"type":"boolean"},"deviceAttestation":{"$ref":"#/components/schemas/VastuDeviceAttestationStatus"},"deviceAttested":{"description":"Present only when the request's device attestation verified. Scores are unchanged by attestation.","enum":[true],"type":"boolean"},"dimensions":{"additionalProperties":false,"properties":{"compassConfidence":{"additionalProperties":false,"properties":{"reason":{"type":"string"},"score":{"maximum":100,"minimum":0,"nullable":true,"type":"integer"},"status":{"enum":["reported","unknown"],"type":"string"}},"required":["score","reason","status"],"type":"object"},"coverage":{"additionalProperties":false,"properties":{"basis":{"enum":["reported-percent","duration-area-proxy","unknown"],"type":"string"},"reason":{"type":"string"},"score":{"maximum":100,"minimum":0,"nullable":true,"type":"integer"},"status":{"enum":["reported","unknown"],"type":"string"}},"required":["score","reason","status","basis"],"type":"object"},"gpsConfidence":{"additionalProperties":false,"properties":{"reason":{"type":"string"},"score":{"maximum":100,"minimum":0,"nullable":true,"type":"integer"},"status":{"enum":["reported","unknown"],"type":"string"}},"required":["score","reason","status"],"type":"object"},"pointCloudDensity":{"additionalProperties":false,"properties":{"basis":{"enum":["feature-points","lidar-depth","none","unreported"],"type":"string"},"reason":{"type":"string"},"score":{"maximum":100,"minimum":0,"nullable":true,"type":"integer"},"status":{"enum":["reported","unknown"],"type":"string"}},"required":["score","reason","status","basis"],"type":"object"},"polygonClosure":{"additionalProperties":false,"properties":{"reason":{"type":"string"},"score":{"maximum":100,"minimum":0,"nullable":true,"type":"integer"},"status":{"enum":["reported","unknown"],"type":"string"}},"required":["score","reason","status"],"type":"object"},"roomsTagged":{"additionalProperties":false,"properties":{"reason":{"type":"string"},"score":{"maximum":100,"minimum":0,"nullable":true,"type":"integer"},"status":{"enum":["reported","unknown"],"type":"string"}},"required":["score","reason","status"],"type":"object"}},"required":["pointCloudDensity","polygonClosure","compassConfidence","gpsConfidence","roomsTagged","coverage"],"type":"object"},"evidenceSource":{"enum":["caller-reported"],"type":"string"},"grade":{"enum":["A","B","C","D","F",null],"nullable":true,"type":"string"},"limitations":{"type":"string"},"missingData":{"items":{"type":"string"},"type":"array"},"reScanSuggestions":{"items":{"type":"string"},"type":"array"},"receipt":{"properties":{"format":{"enum":["JWS"],"type":"string"},"keyUrl":{"format":"uri","type":"string"},"token":{"maxLength":16384,"type":"string"},"verifyUrl":{"format":"uri","type":"string"}},"required":["format","token","verifyUrl","keyUrl"],"type":"object"},"roomCount":{"maximum":9007199254740991,"minimum":0,"nullable":true,"type":"integer"},"roomCoverage":{"additionalProperties":false,"properties":{"expectedRoomCount":{"format":"int64","maximum":9007199254740991,"minimum":1,"nullable":true,"type":"integer"},"percent":{"maximum":100,"minimum":0,"nullable":true,"type":"number"},"scope":{"enum":["caller-declared-room-set"],"type":"string"},"status":{"enum":["complete","partial","invalid","unknown"],"type":"string"}},"required":["expectedRoomCount","percent","status","scope"],"type":"object"},"roomsTaggedCount":{"nullable":true,"type":"number"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"score":{"maximum":100,"minimum":0,"nullable":true,"type":"integer"},"scoreScope":{"enum":["reported-scan-telemetry"],"type":"string"},"sensorAttestation":{"enum":[false],"type":"boolean"},"sources":{"items":{"type":"string"},"type":"array"},"unreportedDimensions":{"items":{"type":"string"},"type":"array"},"verified":{"type":"boolean"},"warnings":{"items":{"type":"string"},"type":"array"}},"required":["grade","score","missingData","warnings","reScanSuggestions","dimensions","acceptForAudit","sources","verified","roomCount","roomsTaggedCount","roomCoverage","scoreScope","evidenceSource","sensorAttestation","limitations","unreportedDimensions"],"type":"object"},"VastuArScanQualityRequest":{"additionalProperties":true,"description":"Caller-reported telemetry only. Missing or invalid readings remain unknown. Complete captured, tagged and expected counts are needed for acceptance; omitted fields do not cause HTTP rejection. Fields not listed here are ignored.","properties":{"compassConfidence":{"maximum":1,"minimum":0,"type":"number"},"coveragePercent":{"maximum":100,"minimum":0,"type":"number"},"deviceAttestation":{"$ref":"#/components/schemas/VastuDeviceAttestation"},"expectedRoomCount":{"description":"Caller-declared target room count; not verified whole-building coverage.","maximum":9007199254740991,"minimum":1,"type":"integer"},"gpsConfidence":{"maximum":1,"minimum":0,"type":"number"},"pointCloudDensity":{"minimum":0,"type":"number"},"pointCloudDensityBasis":{"description":"How pointCloudDensity was measured. A label only; it does not change the score.","enum":["feature-points","lidar-depth","none",null],"nullable":true,"type":"string"},"pointCloudDensityPerM2":{"minimum":0,"type":"number"},"polygonClosed":{"type":"boolean"},"polygonClosure":{"type":"boolean"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"roomCount":{"description":"Caller-reported captured room count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"roomsTagged":{"description":"Number of captured rooms with labels. Legacy false means zero; true alone cannot establish a count.","oneOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"boolean"}]},"scanDurationSec":{"minimum":0,"type":"number"},"scannedAreaM2":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":[],"type":"object"},"VastuArScanQualityResponse":{"description":"Typed success envelope for ar/scan-quality.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuArScanQualityData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuArTrueNorthCalibrateRequest":{"additionalProperties":true,"description":"Source-derived request for ar/true-north-calibrate. Fields not listed here are ignored.","properties":{"datetime":{"description":"Observation instant used for solar geometry. Historical values are supported and do not certify current device calibration.","type":"string"},"deviceHeadingAccuracyDeg":{"description":"Reported degree accuracy at datetime. Values above 11.25 do not pass the assistive reliability gate; omission leaves reliability false.","maximum":180,"minimum":0,"type":"number"},"deviceHeadingAtSunDeg":{"maximum":360,"minimum":0,"type":"number"},"headingSampleAgeMs":{"description":"Age of the heading sample at datetime, in milliseconds. Values above 4000 do not pass the reliability gate. This is not server-time freshness.","minimum":0,"type":"number"},"lat":{"maximum":90,"minimum":-90,"type":"number"},"lon":{"maximum":180,"minimum":-180,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["lat","lon","datetime","deviceHeadingAtSunDeg"],"type":"object"},"VastuArTrueNorthCalibrateResponse":{"description":"Typed success envelope for ar/true-north-calibrate.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuArTrueNorthData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuArTrueNorthData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"headingCorrection":{"type":"string"},"headingQuality":{"additionalProperties":false,"properties":{"accuracyDeg":{"maximum":180,"minimum":0,"nullable":true,"type":"number"},"basis":{"type":"string"},"maxAccuracyDeg":{"enum":[11.25],"type":"number"},"maxSampleAgeMs":{"enum":[4000],"type":"number"},"reliable":{"type":"boolean"},"sampleAgeMs":{"minimum":0,"nullable":true,"type":"number"}},"required":["accuracyDeg","sampleAgeMs","maxAccuracyDeg","maxSampleAgeMs","reliable","basis"],"type":"object"},"input":{"additionalProperties":false,"properties":{"datetime":{"format":"date-time","type":"string"},"deviceHeadingAtSunDeg":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon","datetime","deviceHeadingAtSunDeg"],"type":"object"},"offsetDeg":{"type":"number"},"reason":{"type":"string"},"reliable":{"description":"True only when solar geometry and both reported sensor quality fields pass the declared product gates. Does not independently verify alignment or current calibration.","type":"boolean"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"solarElevationDeg":{"type":"number"},"solarGeometryReliable":{"description":"Whether solar elevation passes the geometric gate, independent of sensor quality.","type":"boolean"},"sources":{"items":{"type":"string"},"type":"array"},"sunAzimuthTrueDeg":{"type":"number"},"verified":{"type":"boolean"}},"required":["input","sunAzimuthTrueDeg","solarElevationDeg","offsetDeg","headingCorrection","reliable","reason","sources","verified","solarGeometryReliable","headingQuality"],"type":"object"},"VastuArTrueNorthRequest":{"properties":{"datetime":{"description":"Observation instant used for solar geometry. Historical values are supported and do not certify current device calibration.","format":"date-time","type":"string"},"deviceHeadingAccuracyDeg":{"description":"Reported degree accuracy at datetime. Values above 11.25 do not pass the assistive reliability gate; omission leaves reliability false.","maximum":180,"minimum":0,"type":"number"},"deviceHeadingAtSunDeg":{"maximum":360,"minimum":0,"type":"number"},"headingSampleAgeMs":{"description":"Age of the heading sample at datetime, in milliseconds. Values above 4000 do not pass the reliability gate. This is not server-time freshness.","minimum":0,"type":"number"},"lat":{"maximum":90,"minimum":-90,"type":"number"},"lon":{"maximum":180,"minimum":-180,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["lat","lon","datetime","deviceHeadingAtSunDeg"],"type":"object"},"VastuArYantraMeshesData":{"additionalProperties":false,"properties":{"asset":{"$ref":"#/components/schemas/VastuArAsset"},"assetId":{"enum":["nine-zone-mandala"],"type":"string"},"dimensionsMetres":{"items":{"type":"number"},"maxItems":3,"minItems":3,"type":"array"},"format":{"enum":["gltf","usdz"],"type":"string"},"geometry":{"additionalProperties":false,"properties":{"eastAxis":{"type":"string"},"northAxis":{"type":"string"},"triangles":{"type":"integer"},"units":{"enum":["metres"],"type":"string"},"upAxis":{"type":"string"},"vertices":{"type":"integer"}},"required":["vertices","triangles","upAxis","northAxis","eastAxis","units"],"type":"object"},"name":{"type":"string"},"provenance":{"$ref":"#/components/schemas/VastuArAssetProvenance"},"remedyEfficacyClaimed":{"enum":[false],"type":"boolean"},"ritualDesign":{"enum":[false],"type":"boolean"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"verified":{"enum":[false],"type":"boolean"}},"required":["name","assetId","format","asset","dimensionsMetres","geometry","ritualDesign","remedyEfficacyClaimed","verified","provenance"],"type":"object"},"VastuArYantraMeshesRequest":{"additionalProperties":false,"description":"Original modern nine-zone diagram only; unsupported named or ritual yantras reject. Both formats contain the same geometry and atlas.","properties":{"format":{"default":"gltf","enum":["gltf","usdz"],"type":"string"},"model":{"enum":["nine-zone-mandala"],"type":"string"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["model"],"type":"object"},"VastuArYantraMeshesResponse":{"description":"Typed success envelope for ar/yantra-meshes","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuArYantraMeshesData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuArZoneTexturesData":{"additionalProperties":false,"properties":{"cells":{"items":{"additionalProperties":false,"properties":{"contentInsetPixels":{"type":"integer"},"devata":{"type":"string"},"gltfUvBoundsTopLeft":{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},"maskBit":{"type":"integer"},"pixelBoundsExclusive":{"items":{"type":"integer"},"maxItems":4,"minItems":4,"type":"array"},"usdUvBoundsBottomLeft":{"items":{"type":"number"},"maxItems":4,"minItems":4,"type":"array"},"zone":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"}},"required":["contentInsetPixels","devata","gltfUvBoundsTopLeft","maskBit","pixelBoundsExclusive","usdUvBoundsBottomLeft","zone"],"type":"object"},"type":"array"},"gltfUvOrigin":{"type":"string"},"height":{"type":"integer"},"pixelBoundsConvention":{"type":"string"},"png":{"$ref":"#/components/schemas/VastuArAsset"},"provenance":{"$ref":"#/components/schemas/VastuArAssetProvenance"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"svg":{"$ref":"#/components/schemas/VastuArAsset"},"usdUvOrigin":{"type":"string"},"verified":{"enum":[false],"type":"boolean"},"width":{"type":"integer"}},"required":["png","svg","width","height","cells","verified","provenance","pixelBoundsConvention","gltfUvOrigin","usdUvOrigin"],"type":"object"},"VastuArZoneTexturesRequest":{"additionalProperties":false,"description":"Omit zone to return all nine zones. Explicit unknown/null zone rejects.","properties":{"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"enum":["NW","N","NE","W","CENTER","E","SW","S","SE"],"type":"string"}},"required":[],"type":"object"},"VastuArZoneTexturesResponse":{"description":"Typed success envelope for ar/zone-textures","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuArZoneTexturesData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuArchiveDeleteData":{"properties":{"deleted":{"type":"boolean"},"erasureReceipt":{"properties":{"backupPolicy":{"type":"string"},"backupRetentionDays":{"type":"integer"},"completedAt":{"type":"string"},"deletedAtEpoch":{"format":"int64","type":"integer"},"deletedByAccountHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"hashAlgorithm":{"enum":["SHA-256"],"type":"string"},"linkedAssessmentIds":{"items":{"type":"string"},"type":"array"},"linkedScanIds":{"items":{"type":"string"},"type":"array"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"receiptHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"removed":{"items":{"properties":{"artifactHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"artifactId":{"type":"string"},"deleteMarker":{"type":"boolean"},"deleteMarkerCount":{"minimum":0,"type":"integer"},"kind":{"type":"string"},"recordId":{"type":"string"},"versionCount":{"minimum":0,"type":"integer"},"versionHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"versionsSha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"retained":{"items":{"properties":{"kind":{"type":"string"},"purpose":{"type":"string"}},"required":["kind","purpose"],"type":"object"},"type":"array"},"revisionId":{"type":"string"},"schemaVersion":{"enum":[1],"type":"integer"},"scope":{"enum":["active-property-storage"],"type":"string"},"status":{"enum":["completed"],"type":"string"}},"required":["schemaVersion","propertyId","status","scope","completedAt","removed","retained","backupRetentionDays","backupPolicy","hashAlgorithm","receiptHash","deletedByAccountHash","deletedAtEpoch"],"type":"object"},"erasureStatus":{"enum":["pending","completed"],"type":"string"},"exportDeleted":{"type":"boolean"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"replayed":{"type":"boolean"},"retryAfterEpoch":{"format":"int64","type":"integer"},"revisionId":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"}},"required":["propertyId","deleted","exportDeleted","linkedScanIds","linkedAssessmentIds"],"type":"object"},"VastuArchiveDeleteRequest":{"additionalProperties":false,"properties":{"confirmPropertyId":{"maxLength":128,"minLength":1,"type":"string"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["propertyId","confirmPropertyId"],"type":"object"},"VastuArchiveDeleteResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuArchiveDeleteData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuArchiveExportData":{"properties":{"downloadUrl":{"format":"uri","type":"string"},"expiresAtEpoch":{"format":"int64","type":"integer"},"expiresInSeconds":{"enum":[3600],"type":"integer"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sizeBytes":{"format":"int64","type":"integer"}},"required":["propertyId","downloadUrl","expiresInSeconds","expiresAtEpoch","sizeBytes","linkedScanIds","linkedAssessmentIds"],"type":"object"},"VastuArchiveExportRequest":{"additionalProperties":false,"properties":{"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuArchiveExportResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuArchiveExportData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuArchiveSummaryData":{"properties":{"archiveTier":{"nullable":true,"properties":{"months":{"maximum":60,"minimum":1,"type":"integer"},"priceCents":{"type":"integer"},"retainUntilEpoch":{"format":"int64","type":"integer"},"setAtEpoch":{"format":"int64","type":"integer"},"storedBytes":{"format":"int64","type":"integer"}},"required":["months","storedBytes","priceCents","setAtEpoch","retainUntilEpoch"],"type":"object"},"expiresAtEpoch":{"format":"int64","type":"integer"},"linkedAssessmentCount":{"type":"integer"},"linkedScanCount":{"type":"integer"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"}},"required":["propertyId","archiveTier","linkedScanCount","linkedAssessmentCount","expiresAtEpoch"],"type":"object"},"VastuArchiveSummaryRequest":{"additionalProperties":false,"properties":{"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuArchiveSummaryResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuArchiveSummaryData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuArchiveTierData":{"properties":{"actionCents":{"type":"integer"},"archiveTier":{"nullable":true,"properties":{"months":{"maximum":60,"minimum":1,"type":"integer"},"priceCents":{"type":"integer"},"retainUntilEpoch":{"format":"int64","type":"integer"},"setAtEpoch":{"format":"int64","type":"integer"},"storedBytes":{"format":"int64","type":"integer"}},"required":["months","storedBytes","priceCents","setAtEpoch","retainUntilEpoch"],"type":"object"},"contentHash":{"type":"string"},"createdAtEpoch":{"format":"int64","type":"integer"},"data":{"properties":{},"required":[],"type":"object"},"expiresAtEpoch":{"format":"int64","type":"integer"},"externalId":{"nullable":true,"type":"string"},"ids":{"additionalProperties":false,"properties":{"building":{"maxLength":128,"minLength":1,"type":"string"},"floor":{"maxLength":128,"minLength":1,"type":"string"},"project":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"unit":{"maxLength":128,"minLength":1,"type":"string"}},"required":["project","building","unit","floor","revision"],"type":"object"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"meterCents":{"type":"integer"},"months":{"type":"integer"},"ownerId":{"type":"string"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"storedBytes":{"format":"int64","type":"integer"},"title":{"type":"string"},"totalCents":{"type":"integer"},"updatedAtEpoch":{"format":"int64","type":"integer"}},"required":["propertyId"],"type":"object"},"VastuArchiveTierRequest":{"additionalProperties":false,"properties":{"months":{"maximum":60,"minimum":1,"type":"integer"},"preview":{"default":false,"type":"boolean"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["propertyId","months"],"type":"object"},"VastuArchiveTierResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuArchiveTierData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuAssessmentBatchData":{"additionalProperties":false,"properties":{"billingBasis":{"type":"string"},"execution":{"enum":["synchronous"],"type":"string"},"results":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"response":{"properties":{"billing":{"properties":{"balanceAfter":{"type":"number"},"balanceBefore":{"type":"number"},"category":{"type":"string"},"charged":{"type":"number"},"currency":{"type":"string"},"endpoint":{"type":"string"}},"required":["charged","currency","balanceBefore","balanceAfter","endpoint","category"],"type":"object"},"code":{"type":"string"},"data":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"badgeEligibility":{"additionalProperties":false,"properties":{"badge":{"enum":["plan-derived","measured",null],"nullable":true,"type":"string"},"confidence":{"type":"number"},"eligible":{"type":"boolean"},"fullBadgeThreshold":{"type":"number"},"inputSource":{"enum":["seller-supplied","plan-derived","measured"],"type":"string"},"minimumConfidence":{"type":"number"},"reason":{"type":"string"},"variant":{"enum":["standard","low_confidence",null],"nullable":true,"type":"string"}},"required":["inputSource","badge","eligible","variant","reason"],"type":"object"},"charged":{"type":"boolean"},"confidence":{"type":"number"},"confidenceBasis":{"additionalProperties":true,"type":"object"},"entrance":{"additionalProperties":true,"nullable":true,"type":"object"},"findings":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"grade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"gradeLabel":{"nullable":true,"type":"string"},"listingId":{},"maxScore":{"type":"number"},"meta":{"additionalProperties":true,"type":"object"},"method":{"enum":["listing-assessment"],"type":"string"},"missingData":{"items":{"type":"string"},"type":"array"},"reScanSuggestions":{"items":{"type":"string"},"type":"array"},"reason":{"type":"string"},"requiredConfidence":{"type":"number"},"scanQuality":{"additionalProperties":true,"nullable":true,"type":"object"},"score":{"type":"number"},"scoreBreakdown":{"additionalProperties":true,"nullable":true,"type":"object"},"sources":{"items":{"additionalProperties":false,"properties":{"classification":{"enum":["classical","convention","computed"],"type":"string"},"scope":{"type":"string"},"source":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"}},"required":["source","scope","verified","classification"],"type":"object"},"type":"array"},"status":{"enum":["assessed","insufficient_data"],"type":"string"},"system":{"enum":["vastu"],"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"zoneReference":{"additionalProperties":true,"nullable":true,"type":"object"}},"required":["system","method","status","confidence","badgeEligibility","confidenceBasis","meta"],"type":"object"},"error":{"type":"string"},"meta":{"properties":{"dataSource":{"enum":["vedika-ephemeris"],"type":"string"},"engine":{"enum":["vedika-intelligence"],"type":"string"},"source":{"type":"string"},"version":{"type":"string"}},"required":["engine","version"],"type":"object"},"success":{"type":"boolean"}},"required":["success"],"type":"object"},"status":{"maximum":599,"minimum":100,"type":"integer"}},"required":["id","status","response"],"type":"object"},"maxItems":20,"minItems":1,"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"failed":{"maximum":20,"minimum":0,"type":"integer"},"succeeded":{"maximum":20,"minimum":0,"type":"integer"},"total":{"maximum":20,"minimum":0,"type":"integer"}},"required":["total","succeeded","failed"],"type":"object"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"}},"required":["results","summary","billingBasis","execution"],"type":"object"},"VastuAssessmentData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"badgeEligibility":{"additionalProperties":false,"properties":{"badge":{"enum":["plan-derived","measured",null],"nullable":true,"type":"string"},"confidence":{"type":"number"},"eligible":{"type":"boolean"},"fullBadgeThreshold":{"type":"number"},"inputSource":{"enum":["seller-supplied","plan-derived","measured"],"type":"string"},"minimumConfidence":{"type":"number"},"reason":{"type":"string"},"variant":{"enum":["standard","low_confidence",null],"nullable":true,"type":"string"}},"required":["inputSource","badge","eligible","variant","reason"],"type":"object"},"charged":{"type":"boolean"},"confidence":{"type":"number"},"confidenceBasis":{"additionalProperties":true,"type":"object"},"entrance":{"additionalProperties":true,"nullable":true,"type":"object"},"findings":{"items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"code":{"description":"room-placement, entrance-pada or scan-quality.","type":"string"},"computed":{"type":"boolean"},"detail":{"description":"Finding text. For a room or zone that is not a standard label: \"Unrecognised room type or zone — provide a standard label.\"","nullable":true,"type":"string"},"missingData":{"items":{},"type":"array"},"pada":{"additionalProperties":true,"nullable":true,"type":"object"},"reScanSuggestions":{"items":{},"type":"array"},"recommendedZone":{"nullable":true,"type":"string"},"remedy":{"description":"Null when no remedy applies, including unrecognised room or zone input.","nullable":true,"type":"string"},"remedyClassification":{"description":"convention when a remedy is served, else null.","nullable":true,"type":"string"},"remedySource":{"description":"Remedy provenance, or null when remedy is null.","nullable":true,"type":"string"},"remedyType":{"description":"Null when remedy is null.","nullable":true,"type":"string"},"room":{"nullable":true,"type":"string"},"severity":{"nullable":true,"type":"string"},"source":{"type":"string"},"verified":{"type":"boolean"},"zone":{"nullable":true,"type":"string"},"zoneReference":{"additionalProperties":true,"nullable":true,"type":"object"}},"type":"object"},"type":"array"},"grade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"gradeLabel":{"nullable":true,"type":"string"},"listingId":{},"maxScore":{"type":"number"},"meta":{"additionalProperties":true,"type":"object"},"method":{"enum":["listing-assessment"],"type":"string"},"missingData":{"items":{"type":"string"},"type":"array"},"notAssessed":{"description":"Recognised spaces with no placement rule (balcony, parking, garage, lift, lobby, corridor, terrace, verandah, porch, sit-out, utility, wash area, garden, lawn, courtyard, shaft, duct). Listed, never graded, never counted in the score.","items":{"additionalProperties":false,"properties":{"graded":{"enum":[false],"type":"boolean"},"reason":{"enum":["no placement rule for this space type"],"type":"string"},"room":{"type":"string"},"zone":{"type":"string"}},"required":["room","zone","reason","graded"],"type":"object"},"type":"array"},"reScanSuggestions":{"items":{"type":"string"},"type":"array"},"reason":{"type":"string"},"receipt":{"properties":{"format":{"enum":["JWS"],"type":"string"},"keyUrl":{"format":"uri","type":"string"},"token":{"maxLength":16384,"type":"string"},"verifyUrl":{"format":"uri","type":"string"}},"required":["format","token","verifyUrl","keyUrl"],"type":"object"},"requiredConfidence":{"type":"number"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scanQuality":{"additionalProperties":true,"nullable":true,"type":"object"},"score":{"type":"number"},"scoreBreakdown":{"additionalProperties":true,"nullable":true,"type":"object"},"sources":{"items":{"additionalProperties":false,"properties":{"classification":{"enum":["classical","convention","computed"],"type":"string"},"scope":{"type":"string"},"source":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"}},"required":["source","scope","verified","classification"],"type":"object"},"type":"array"},"status":{"enum":["assessed","insufficient_data"],"type":"string"},"system":{"enum":["vastu"],"type":"string"},"tradition":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verified":{"type":"boolean"},"warnings":{"description":"One entry per room whose stated zone its own geometry contradicts (code stated-zone-contradicted-by-geometry): room, statedZone, geometryZone and usedZone. Present only when there is a contradiction.","items":{"additionalProperties":true,"type":"object"},"type":"array"},"zoneCheck":{"additionalProperties":true,"description":"Present only with warnings: how the zones were checked (roomsChecked, conflicts, basis, rule).","type":"object"},"zoneReference":{"additionalProperties":true,"nullable":true,"type":"object"}},"required":["system","method","status","confidence","badgeEligibility","confidenceBasis","meta"],"type":"object"},"VastuAssessmentsBatchRequest":{"additionalProperties":false,"description":"Synchronous batch of 1 to 20 properties; serialized JSON at most 512 KiB. Retain the required Idempotency-Key header for retries. Item IDs are unique; reordering does not change a child charge identity. Each item uses the existing assessment price with no batch fee.","properties":{"items":{"items":{"additionalProperties":false,"properties":{"assessment":{"$ref":"#/components/schemas/VastuAssessmentsRequest"},"id":{"description":"Unique nonempty ID, at most 128 UTF-8 bytes, with no surrounding spaces.","maxLength":128,"minLength":1,"type":"string"}},"required":["id","assessment"],"type":"object"},"maxItems":20,"minItems":1,"type":"array"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["items"],"type":"object"},"VastuAssessmentsBatchResponse":{"properties":{"data":{"$ref":"#/components/schemas/VastuAssessmentBatchData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuAssessmentsRequest":{"additionalProperties":true,"description":"Listing evidence for a Vastu assessment. inputSource is always required. An omitted or incomplete room layout returns a successful, unbilled insufficient_data result; it is not a transport error. Measured input requires an accepted caller-reported scan including complete declared room scope; otherwise it returns unbilled insufficient_data. This does not attest physical capture. When a room carries both a zone and a polygon (or x, y, w, h) inside plotPolygon and the geometry sits in a different zone (a north-aligned 3x3 grid fitted to the plot's bounding box and rotated by bearingDeg, the same frame as the mandala projections), the geometry decides the zone the room is scored in, the response carries a warning for that room, and the room earns no confidence. Fields not listed here are ignored.","properties":{"bearingDeg":{"type":"number"},"compassConfidence":{"maximum":1,"minimum":0,"type":"number"},"confidence":{"description":"Optional caller confidence. It may only lower the computed confidence.","maximum":1,"minimum":0,"type":"number"},"coveragePercent":{"maximum":100,"minimum":0,"type":"number"},"doorXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"expectedRoomCount":{"description":"Caller-declared target room count; not verified whole-building coverage.","maximum":9007199254740991,"minimum":1,"type":"integer"},"gpsConfidence":{"maximum":1,"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"inputSource":{"enum":["seller-supplied","plan-derived","measured"],"type":"string"},"plotPolygon":{"description":"Plot outline as [x, y] points in the same coordinate space as doorXY.","items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"pointCloudDensity":{"minimum":0,"type":"number"},"pointCloudDensityPerM2":{"minimum":0,"type":"number"},"polygonClosed":{"type":"boolean"},"polygonClosure":{"type":"boolean"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"receipt":{"default":false,"description":"Return a signed Ed25519 JWS receipt. Missing signing key returns 503 before billing.","type":"boolean"},"roomCount":{"description":"Caller-reported captured room count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"rooms":{"items":{"additionalProperties":false,"properties":{"area":{"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"polygon":{"description":"The room outline in the same coordinates as plotPolygon.","items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"description":"The zone the room is in. If the room also has a polygon inside plotPolygon that sits in a different zone, the polygon decides and a warning is returned.","type":"string"}},"required":["roomType","zone"],"type":"object"},"minItems":1,"type":"array"},"roomsTagged":{"description":"Number of captured rooms with labels. Legacy false means zero; true alone cannot establish a count.","oneOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"boolean"}]},"rulesVersion":{"description":"Pin an immutable retained room-placement ruleset; omitted selects current. Geometry normalization is shared.","enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scanDurationSec":{"minimum":0,"type":"number"},"scannedAreaM2":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["inputSource"],"type":"object"},"VastuAssessmentsResponse":{"description":"Typed success envelope for assessments.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuAssessmentData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","meta"],"type":"object"},"VastuAuditFloorPlanDetailedRequest":{"additionalProperties":true,"description":"Source-derived request for audit/floor-plan-detailed. Fields not listed here are ignored.","properties":{"bearingDeg":{"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"required":["roomType","zone"],"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuAuditFloorPlanDetailedResponse":{"description":"Typed success envelope for audit/floor-plan-detailed.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuDetailedFloorPlanAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuAuditFloorPlanRequest":{"additionalProperties":true,"anyOf":[{"required":["rooms"]},{"required":["text"]}],"description":"Source-derived request for audit/floor-plan. Fields not listed here are ignored.","properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"required":["roomType","zone"],"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"text":{"type":"string"}},"required":[],"type":"object"},"VastuAuditFloorPlanResponse":{"description":"Typed success envelope for audit/floor-plan.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuFloorPlanAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuAuditSingleRoomRequest":{"additionalProperties":true,"description":"Source-derived request for audit/single-room. Fields not listed here are ignored.","properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"roomType":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":["roomType","zone"],"type":"object"},"VastuAuditSingleRoomResponse":{"description":"Typed success envelope for audit/single-room.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuSingleRoomAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuAuspiciousFacingData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"avoidFacing":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"bestFacing":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"bestZone":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"input":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"purpose":{"type":"string"},"rationale":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"system":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"verifiedPlacement":{"additionalProperties":true,"nullable":true,"type":"object"},"zoneComplianceCheck":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}},"required":["purpose","bestFacing","bestZone","avoidFacing","verifiedPlacement","zoneComplianceCheck","verified"],"type":"object"},"VastuBearingRequest":{"properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"resolution":{"enum":[8,16,32],"type":"integer"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["bearingDeg"],"type":"object"},"VastuBearingZoneData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"bearingDeg":{"type":"number"},"deity":{"type":"string"},"deityClassification":{"description":"classical only when the verified verse states this deity name for this zone; else convention.","type":"string"},"deitySource":{"description":"Source for the deity name: a verified verse string, or the convention marker.","type":"string"},"element":{"type":"string"},"elementClassification":{"description":"classical only when the verified verse states this element (only North-East water); else convention.","type":"string"},"elementSource":{"description":"Source for the element label: a verified verse string, or the convention marker.","type":"string"},"forbiddenRooms":{"items":{"type":"string"},"type":"array"},"prescribedRooms":{"items":{"type":"string"},"type":"array"},"roomRulesClassification":{"description":"Always convention: the prescribed and forbidden room lists as a whole are not a verse.","type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"verified":{"type":"boolean"},"verseBackedRooms":{"description":"Prescribed rooms that Brihat Samhita 53.118 places in this zone.","items":{"type":"string"},"type":"array"},"zone":{"type":"string"}},"required":["bearingDeg","zone","deity","element","prescribedRooms","forbiddenRooms","sources","verified"],"type":"object"},"VastuBrahmasthanProjectionData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"area":{"type":"number"},"bearingAssumedNorth":{"type":"boolean"},"bufferPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"centerPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"centerPolygonCentre":{"description":"The centre centerPolygon is actually centred on: the centre of the plot's bounding-box grid.","items":{"type":"number"},"type":"array"},"centreBasis":{"description":"What centerPolygonCentre is.","enum":["bounding-box-centre"],"type":"string"},"centreNote":{"type":"string"},"centreOffset":{"description":"Distance between centroid and centerPolygonCentre, in plot units; 0 for a rectangle.","type":"number"},"centroid":{"description":"The plot's area centroid (not the centre of centerPolygon: see centerPolygonCentre).","items":{"type":"number"},"type":"array"},"centroidBasis":{"description":"What centroid is.","enum":["plot-area-centroid"],"type":"string"},"classicalSource":{"type":"string"},"classicalSourceScope":{"description":"What classicalSource backs: Brahmā's seat at the centre only.","type":"string"},"classification":{"type":"string"},"computed":{"type":"boolean"},"forbiddenActions":{"items":{"type":"string"},"type":"array"},"forbiddenActionsClassification":{"description":"Always convention: no verified verse states these rules.","type":"string"},"forbiddenActionsSource":{"description":"Convention marker for forbiddenActions.","type":"string"},"gridFrame":{"additionalProperties":false,"description":"The frame the grid is cut in. Zones are compass directions, so the grid is always north-aligned and never follows the plot's own edges: it is cut from the bounding box of the plot after the plot is rotated to true north. Every cell is an equal part of that box, not of the plot, so on a plot whose edges are not north-aligned the box is larger than the plot and cell sizes vary with the bearing.","properties":{"fittedTo":{"enum":["plot-bounding-box"],"type":"string"},"gridBoxArea":{"description":"Area of the bounding box the grid is cut from, in squared plot units.","type":"number"},"note":{"type":"string"},"orientation":{"enum":["north-aligned"],"type":"string"},"plotAreaShareOfGridBox":{"description":"Plot area divided by gridBoxArea (1 for a north-aligned rectangle, lower the more the plot is rotated).","nullable":true,"type":"number"},"rotationDeg":{"description":"The bearingDeg the plot was rotated by.","type":"number"}},"type":"object"},"inPlotArea":{"description":"The part of centerPolygon that lies inside the plot.","type":"number"},"inPlotFraction":{"description":"inPlotArea over the area of centerPolygon, 0 to 1.","type":"number"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"shareOfPlotArea":{"description":"inPlotArea over the plot's area, 0 to 1 (1/9 on a north-aligned rectangle; it grows with the bearing because the grid is cut from the larger rotated box).","nullable":true,"type":"number"},"sources":{"items":{"type":"string"},"type":"array"},"verified":{"type":"boolean"}},"required":["centerPolygon","bufferPolygon","centroid","area","forbiddenActions","classicalSource","sources","verified","computed","classification"],"type":"object"},"VastuCatalogReferenceData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"defectCount":{"type":"integer"},"defects":{"items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"code":{"type":"string"},"label":{"type":"string"},"labelKey":{"description":"Stable defect label identity: vastu.defect.<CODE>.label.","type":"string"},"labelParams":{"additionalProperties":true,"type":"object"},"severity":{"type":"string"},"source":{"type":"string"},"verified":{"type":"boolean"}},"type":"object"},"type":"array"},"featureCount":{"type":"integer"},"features":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"meta":{"additionalProperties":true,"type":"object"},"note":{"type":"string"},"rangeClassification":{"description":"gate-obstructions only: the ~2x house-height proximity range in the note is not in the verified verse.","enum":["convention"],"type":"string"},"rangeSource":{"description":"gate-obstructions only: \"Vedika convention (not a verified verse)\".","type":"string"},"referenceVersion":{"description":"Opaque revision of canonical reference content, including provenance. Replace a cached table when this value changes. Paid refresh calls retain normal billing; this is not an HTTP cache validator.","pattern":"^sha256:[0-9a-f]{64}$","type":"string"},"remedies":{"items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"defectCode":{"type":"string"},"remedy":{"type":"string"},"remedyKey":{"description":"Stable remedy identity: vastu.remedy.defect.<CODE>.","type":"string"},"remedyParams":{"additionalProperties":true,"type":"object"},"source":{"type":"string"}},"type":"object"},"type":"array"},"remedyCount":{"type":"integer"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"verified":{"description":"Whether the served rows are verse-backed. For gate-obstructions it is true because every features row is a verified verse; the proximity range in the note is convention (see rangeClassification).","type":"boolean"},"zoneRemedies":{"description":"remedies/catalog: one remedy per zone, all nine zones, from the same table the audits read.","items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"remedy":{"type":"string"},"remedyKey":{"description":"Stable remedy identity: vastu.remedy.zone.<ZONE>.","type":"string"},"remedyParams":{"additionalProperties":true,"type":"object"},"source":{"type":"string"},"zone":{"type":"string"}},"type":"object"},"type":"array"}},"required":["verified","referenceVersion"],"type":"object"},"VastuChartRequest":{"description":"Only fusion and timing operations accept chart/time inputs.","properties":{"datetime":{"format":"date-time","type":"string"},"facing":{"type":"string"},"latitude":{"maximum":90,"minimum":-90,"type":"number"},"longitude":{"maximum":180,"minimum":-180,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"timezone":{"type":"string"}},"required":["datetime","latitude","longitude","timezone"],"type":"object"},"VastuChatUploadData":{"properties":{"billing":{"properties":{"balanceAfterCents":{"description":"Wallet balance right after the charge; null on a replay answered from the paid receipt.","nullable":true,"type":"integer"},"chargedCents":{"description":"Cents this upload cost. A retry with the same key reports the original charge and is never charged again.","type":"integer"},"currency":{"enum":["USD"],"type":"string"}},"type":"object"},"charsExtracted":{"description":"Characters of text kept (at most 200,000).","minimum":1,"type":"integer"},"digestSha256":{"description":"SHA-256 of the stored text.","pattern":"^[0-9a-f]{64}$","type":"string"},"expiresAt":{"description":"The Idempotency-Key's 24-hour billing deadline, fixed from the key's first use and never renewed; not an access cutoff — a paid upload remains usable after this time.","format":"date-time","type":"string"},"fileSha256":{"description":"SHA-256 of the uploaded PDF file. A retry with the same key must send the same file.","pattern":"^[0-9a-f]{64}$","type":"string"},"pages":{"maximum":40,"minimum":1,"type":"integer"},"pagesSkipped":{"description":"Pages whose text could not be read and were left out.","minimum":0,"type":"integer"},"replayed":{"description":"True when this is a retry of an earlier upload with the same Idempotency-Key.","type":"boolean"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"success":{"enum":[true],"type":"boolean"},"textTruncated":{"description":"True when the text was cut at 200,000 characters.","type":"boolean"},"uploadId":{"description":"Pass as vastuContext.reportRef.id. Usable only by the uploading account; access to a paid upload does not itself expire.","pattern":"^vup_[0-9a-f]{32}$","type":"string"}},"required":["success","uploadId","pages","charsExtracted","expiresAt","digestSha256","fileSha256"],"type":"object"},"VastuChatUploadRequest":{"properties":{"file":{"description":"One PDF with a text layer: at most 5 MiB and 40 pages. Encrypted and scanned (image-only) PDFs are refused.","format":"binary","type":"string"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["file"],"type":"object"},"VastuCompareBeforeAfterRemedyRequest":{"additionalProperties":true,"description":"Source-derived request for compare/before-after-remedy. Fields not listed here are ignored.","properties":{"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"remedies":{"items":{"additionalProperties":false,"allOf":[{"anyOf":[{"required":["toZone"]},{"required":["zone"]}]}],"anyOf":[{"required":["room"]},{"required":["name"]},{"required":["roomType"]}],"description":"toZone (or zone) must be a recognised direction; an unrecognised room or destination is rejected with 400 before any charge.","properties":{"name":{"type":"string"},"room":{"type":"string"},"roomType":{"type":"string"},"toZone":{"type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"minItems":1,"type":"array"},"rooms":{"items":{"additionalProperties":false,"anyOf":[{"required":["name"]},{"required":["room"]},{"required":["roomType"]}],"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"text":{"type":"string"}},"required":["remedies"],"type":"object"},"VastuCompareBeforeAfterRemedyResponse":{"description":"Typed success envelope for compare/before-after-remedy.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRemedyComparisonData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuCompareVersionsData":{"properties":{"changed":{"type":"boolean"},"changes":{"items":{"properties":{"after":{},"before":{},"fromReason":{"nullable":true,"type":"object"},"reason":{"type":"string"},"ruleId":{"type":"string"},"toReason":{"nullable":true,"type":"object"}},"required":["ruleId","before","after","reason","fromReason","toReason"],"type":"object"},"type":"array"},"fromAssessment":{"type":"object"},"fromVersion":{"type":"string"},"inputHash":{"type":"string"},"operation":{"type":"string"},"retainedVersions":{"enum":[2],"type":"integer"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scope":{"type":"string"},"toAssessment":{"type":"object"},"toVersion":{"type":"string"}},"required":["inputHash","operation","fromVersion","toVersion","fromAssessment","toAssessment","changed","changes","retainedVersions","scope"],"type":"object"},"VastuCompareVersionsRequest":{"additionalProperties":false,"properties":{"fromVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"input":{"description":"Same assessment input for both versions; omit rulesVersion and receipt.","type":"object"},"operation":{"default":"plan/analyze","enum":["plan/analyze","assessments","score/overall","score/zone-wise","score/compliance-index"],"type":"string"},"toVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"}},"required":["fromVersion","toVersion","input"],"type":"object"},"VastuCompareVersionsResponse":{"properties":{"billing":{"type":"object"},"data":{"$ref":"#/components/schemas/VastuCompareVersionsData"},"success":{"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuComplianceIndexData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"basis":{"type":"string"},"complianceIndex":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"defectsSummary":{"additionalProperties":true,"type":"object"},"drivingDefects":{"items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"computed":{"type":"boolean"},"issue":{"description":"Placement finding, or the unrecognised-input message when the room or zone is not a standard label (the remedy fields are then null).","type":"string"},"pointsLost":{"type":"number"},"recommendedZone":{"nullable":true,"type":"string"},"remedy":{"nullable":true,"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"remedyType":{"nullable":true,"type":"string"},"room":{"type":"string"},"ruleProvenance":{"additionalProperties":true,"type":"object"},"severity":{"type":"string"},"source":{"description":"Provenance of the placement rule (not of the remedy).","type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"weight":{"type":"integer"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"indexLabel":{"nullable":true,"type":"string"},"indexScale":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"indexScaleNote":{"type":"string"},"indexType":{"type":"string"},"input":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"notAssessed":{"description":"Recognised spaces with no placement rule (balcony, parking, garage, lift, lobby, corridor, terrace, verandah, porch, sit-out, utility, wash area, garden, lawn, courtyard, shaft, duct). Listed, never graded, never counted in the score.","items":{"additionalProperties":false,"properties":{"graded":{"enum":[false],"type":"boolean"},"reason":{"enum":["no placement rule for this space type"],"type":"string"},"room":{"type":"string"},"zone":{"type":"string"}},"required":["room","zone","reason","graded"],"type":"object"},"type":"array"},"receipt":{"properties":{"format":{"enum":["JWS"],"type":"string"},"keyUrl":{"format":"uri","type":"string"},"token":{"maxLength":16384,"type":"string"},"verifyUrl":{"format":"uri","type":"string"}},"required":["format","token","verifyUrl","keyUrl"],"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"score":{"nullable":true,"type":"number"},"scoreNote":{"description":"Present when no room was graded; score and grade are then null.","type":"string"},"scoring":{"additionalProperties":false,"properties":{"basis":{"type":"string"},"classification":{"type":"string"},"comparisonBasis":{"type":"string"},"duplicatePlacementCount":{"minimum":0,"type":"integer"},"formula":{"type":"string"},"inputPlacementCount":{"minimum":0,"type":"integer"},"uniquePlacementCount":{"minimum":0,"type":"integer"},"unit":{"type":"string"},"verified":{"enum":[false],"type":"boolean"},"version":{"type":"string"}},"required":["version","unit","formula","basis","comparisonBasis","classification","inputPlacementCount","uniquePlacementCount","duplicatePlacementCount","verified"],"type":"object"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"system":{"type":"string"},"tradition":{"type":"string"},"verdict":{"nullable":true,"type":"string"},"verified":{"type":"boolean"}},"required":["score","complianceIndex","drivingDefects","sources","verified","scoring"],"type":"object"},"VastuCompoundWallAnalysisRequest":{"additionalProperties":true,"description":"Source-derived request for compound/wall-analysis. Fields not listed here are ignored.","properties":{"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"walls":{"oneOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"additionalProperties":true,"type":"object"}]}},"required":[],"type":"object"},"VastuCompoundWallAnalysisResponse":{"description":"Typed success envelope for compound/wall-analysis.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuWallAnalysisData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuDeclinationRequest":{"properties":{"date":{"format":"date","type":"string"},"lat":{"maximum":90,"minimum":-90,"type":"number"},"lon":{"maximum":180,"minimum":-180,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["lat","lon"],"type":"object"},"VastuDetailedFloorPlanAuditData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"bearingAssumedNorth":{"type":"boolean"},"classification":{"type":"string"},"completeness":{"additionalProperties":false,"properties":{"computedComponents":{"items":{"type":"string"},"type":"array"},"missingInputs":{"items":{"type":"string"},"type":"array"},"note":{"type":"string"},"physicalCoverageVerified":{"enum":[false],"type":"boolean"},"projectedCellCount":{"minimum":0,"type":"integer"},"status":{"enum":["partial","computed_from_supplied_input"],"type":"string"}},"required":["status","computedComponents","missingInputs","projectedCellCount","physicalCoverageVerified","note"],"type":"object"},"computed":{"type":"boolean"},"defects":{"items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"code":{"nullable":true,"type":"string"},"issue":{"type":"string"},"issueKey":{"description":"Stable template identity: vastu.issue.forbidden_placement or vastu.issue.permitted_not_prescribed. Use issueParams; keep English issue as fallback.","type":"string"},"issueParams":{"additionalProperties":true,"description":"Canonical values remain unchanged during response translation. Render values as text, never HTML.","properties":{"roomType":{"type":"string"},"severity":{"type":"string"},"zone":{"type":"string"}},"required":["roomType","zone","severity"],"type":"object"},"recommendedZone":{"nullable":true,"type":"string"},"remedy":{"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedyKey":{"description":"vastu.remedy.zone.<ZONE>, or null when no remedy applies. Uses remedyParams. A key does not assert translation availability or remedy efficacy.","nullable":true,"type":"string"},"remedyParams":{"additionalProperties":true,"type":"object"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"room":{"type":"string"},"severity":{"type":"string"},"source":{"nullable":true,"type":"string"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"devataHeatmap":{"items":{"additionalProperties":true,"properties":{"deity":{"type":"string"},"deityClassification":{"description":"classical only when the verified verse states this deity name for this zone; else convention.","type":"string"},"deitySource":{"description":"Source for the deity name: a verified verse string, or the convention marker.","type":"string"},"devatas":{"items":{"additionalProperties":true,"description":"One devata slot with keys name; class (main = inner-ring devata, corner = inner-corner devata, boundary = perimeter-row devata, centre = Brahmā); nameClassification (classical: every name is in the verified 45-devata roster); nameSource; placementClassification (classical only when Brihat Samhita 53.43-48 seats this devata on a numbered square inside this 3x3 zone: the zone's inner-ring devata (class main), an inner-corner devata in its own corner, one of the three perimeter devatas whose squares lie in the middle third of that side, or Brahmā at the centre. A side's other perimeter devatas have squares in the corner zones. Else convention.); and placementSource (the verse string, or the convention marker). Kept as an open object because the SDK type generators cannot emit the reserved key class as a typed field.","type":"object"},"type":"array"},"disturbed":{"type":"boolean"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"grade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"gradeScale":{"additionalProperties":true,"description":"The letter bands, A to E, each as the range of scores it covers: the same scale as grade, printed with the response.","type":"object"},"mandalaProjection":{"additionalProperties":true,"nullable":true,"type":"object"},"merchantCatalogId":{"type":"string"},"merchantCatalogRevision":{"format":"int64","minimum":1,"type":"integer"},"notAssessed":{"description":"Recognised spaces with no placement rule (balcony, parking, garage, lift, lobby, corridor, terrace, verandah, porch, sit-out, utility, wash area, garden, lawn, courtyard, shaft, duct). Listed, never graded, never counted in the score.","items":{"additionalProperties":false,"properties":{"graded":{"enum":[false],"type":"boolean"},"reason":{"enum":["no placement rule for this space type"],"type":"string"},"room":{"type":"string"},"zone":{"type":"string"}},"required":["room","zone","reason","graded"],"type":"object"},"type":"array"},"prescribedCount":{"type":"integer"},"receipt":{"properties":{"format":{"enum":["JWS"],"type":"string"},"keyUrl":{"format":"uri","type":"string"},"token":{"maxLength":16384,"type":"string"},"verifyUrl":{"format":"uri","type":"string"}},"required":["format","token","verifyUrl","keyUrl"],"type":"object"},"remediationOrder":{"items":{"additionalProperties":true,"properties":{"action":{"type":"string"},"actionKey":{"nullable":true,"type":"string"},"actionParams":{"additionalProperties":true,"type":"object"},"classification":{"description":"Provenance class of the placement verdict this row reports: classical only for an exact Brihat Samhita 53.118 placement, else convention.","type":"string"},"code":{"nullable":true,"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"room":{"type":"string"},"severity":{"type":"string"},"source":{"nullable":true,"type":"string"},"step":{"type":"integer"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"score":{"nullable":true,"type":"number"},"scoreNote":{"description":"Present when no room was graded; score and grade are then null.","type":"string"},"scoring":{"additionalProperties":false,"properties":{"basis":{"type":"string"},"classification":{"type":"string"},"comparisonBasis":{"type":"string"},"duplicatePlacementCount":{"minimum":0,"type":"integer"},"formula":{"type":"string"},"inputPlacementCount":{"minimum":0,"type":"integer"},"uniquePlacementCount":{"minimum":0,"type":"integer"},"unit":{"type":"string"},"verified":{"enum":[false],"type":"boolean"},"version":{"type":"string"}},"required":["version","unit","formula","basis","comparisonBasis","classification","inputPlacementCount","uniquePlacementCount","duplicatePlacementCount","verified"],"type":"object"},"sources":{"items":{"type":"string"},"type":"array"},"totalRooms":{"type":"integer"},"verified":{"type":"boolean"}},"required":["score","grade","totalRooms","prescribedCount","defects","devataHeatmap","mandalaProjection","remediationOrder","sources","verified","computed","classification","scoring","completeness"],"type":"object"},"VastuDeviceAttestation":{"additionalProperties":false,"description":"Optional proof that the request came from a genuine, unmodified Vedika-integrated native app on a real device. First obtain a challenge from ar/attestation/challenge (single use, 5 minutes, bound to your account and platform). The proof is bound to the request. digest = SHA-256 of the UTF-8 text: vedika-attest-v1, a line feed, the operation (ar/room-capture, ar/scan-quality or scans/save), a line feed, the challenge, a line feed, then the request body without deviceAttestation as RFC 8785 canonical JSON. iOS: send keyId with attestationObject the first time a key is used (DCAppAttestService.attestKey with clientDataHash = the 32-byte digest), then keyId with assertion afterwards (generateAssertion over the same digest). Android: send integrityToken from a Play Integrity request whose nonce (classic) or requestHash (standard) is the digest as unpadded base64url. A proof does not verify for an edited body or another operation. An invalid proof returns 400 ATTESTATION_INVALID and an unverifiable one 503 ATTESTATION_UNAVAILABLE, both before compute and billing. While this deployment verifies no platform the field is ignored and deviceAttestation.status is not_configured.","properties":{"assertion":{"description":"iOS later use: base64 assertion.","type":"string"},"attestationObject":{"description":"iOS first use: base64 attestation object.","type":"string"},"challenge":{"maxLength":128,"minLength":1,"type":"string"},"integrityToken":{"description":"Android: Play Integrity token.","type":"string"},"keyId":{"description":"iOS: base64 App Attest key identifier.","type":"string"},"platform":{"enum":["ios","android"],"type":"string"}},"required":["platform","challenge"],"type":"object"},"VastuDeviceAttestationStatus":{"additionalProperties":false,"description":"Device attestation status for this request. not_configured: this deployment verifies no platform yet (every request today). not_provided: attestation is configured but the request carried none. verified: an App Attest (iOS) or Play Integrity (Android) proof bound to a single-use challenge was verified before compute and billing. Never includes keys, certificates, verdict fields or identifiers.","properties":{"platform":{"enum":["ios","android",null],"nullable":true,"type":"string"},"status":{"enum":["verified","not_provided","not_configured"],"type":"string"}},"required":["status","platform"],"type":"object"},"VastuDirectionAuspiciousFacingRequest":{"additionalProperties":true,"description":"Source-derived request for direction/auspicious-facing. Fields not listed here are ignored.","properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"occupant":{"description":"Optional free-text label for whose activity this is. Echoed back under input.occupant; it does not change the result.","example":"family","type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"purpose":{"description":"The activity the direction is chosen for. Canonical values: sleeping, cooking, worship, study, working, entrance, dining. Aliases are normalised (case and punctuation ignored): sleep/sleeping/bed/bedroom/rest -> sleeping; cook/cooking/kitchen/hearth -> cooking; worship/pooja/puja/prayer/meditation/altar/mandir -> worship; study/studying/reading/exam/learning -> study; work/working/office/desk/business/career -> working; entrance/door/maindoor/entry -> entrance; dining/eating/meal -> dining. Any other value is rejected with 400 and the message lists the canonical set.","example":"sleeping","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["purpose"],"type":"object"},"VastuDirectionAuspiciousFacingResponse":{"description":"Typed success envelope for direction/auspicious-facing.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuAuspiciousFacingData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuDirectionCorrectData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"correctedZone":{"type":"string"},"correctedZoneIsMagnetic":{"description":"Always false: a request with no published declination is rejected with 400, so a corrected zone is never the magnetic one. Kept for compatibility.","type":"boolean"},"declinationCoverage":{"description":"Which model answered: always wmm2025, computed from the NOAA/BGS World Magnetic Model WMM2025 at sea level. A date outside WMM2025's validity window, a geographic pole or the magnetic-pole blackout zone is rejected with 400 before any charge, so outside-model-window, geographic-pole and magnetic-pole-blackout are no longer returned.","type":"string"},"declinationDeg":{"description":"Degrees east of true north (east positive, west negative), rounded to 2 decimals, from the World Magnetic Model WMM2025 (valid 2025.0 up to 2030.0). Always a number: a request with no published declination (date outside the window, a geographic pole, the magnetic-pole blackout zone) is rejected with 400 before it is charged. Never a stand-in 0.","nullable":true,"type":"number"},"input":{"additionalProperties":true,"type":"object"},"magneticBearingDeg":{"nullable":true,"type":"number"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"trueBearingDeg":{"description":"Magnetic bearing plus declinationDeg, modulo 360, rounded to 2 decimals. Always a number.","nullable":true,"type":"number"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verified":{"type":"boolean"}},"required":["input","magneticBearingDeg","declinationDeg","trueBearingDeg","correctedZone","sources","verified"],"type":"object"},"VastuDirectionCorrectRequest":{"additionalProperties":true,"description":"Source-derived request for direction/correct. Fields not listed here are ignored.","properties":{"date":{"description":"Optional ISO date or datetime. Omit to use the current UTC date and time. Must fall from 2025-01-01 to 2029-12-31, the WMM2025 validity window; a date outside it returns 400 INVALID_INPUT naming the date field and the window, and nothing is charged.","type":"string"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lat":{"maximum":90,"minimum":-90,"type":"number"},"lon":{"maximum":180,"minimum":-180,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["direction","lat","lon"],"type":"object"},"VastuDirectionCorrectResponse":{"description":"Typed success envelope for direction/correct.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuDirectionCorrectData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuDirectionDeclinationData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"classification":{"type":"string"},"computed":{"type":"boolean"},"date":{"type":"string"},"declinationCoverage":{"description":"Which model answered: always wmm2025, computed from the NOAA/BGS World Magnetic Model WMM2025 at sea level. A date outside WMM2025's validity window, a geographic pole or the magnetic-pole blackout zone is rejected with 400 before any charge, so outside-model-window, geographic-pole and magnetic-pole-blackout are no longer returned.","type":"string"},"declinationDeg":{"description":"Degrees east of true north (east positive, west negative), rounded to 2 decimals, from the World Magnetic Model WMM2025 (valid 2025.0 up to 2030.0). Always a number: a request with no published declination (date outside the window, a geographic pole, the magnetic-pole blackout zone) is rejected with 400 before it is charged. Never a stand-in 0.","nullable":true,"type":"number"},"gridEpoch":{"description":"Model name and validity window, currently WMM2025 (valid 2025.0-2030.0). The field name is kept for compatibility; no grid is used.","type":"string"},"interpretation":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verified":{"type":"boolean"}},"required":["lat","lon","date","declinationDeg","interpretation","gridEpoch","sources","verified","computed","classification"],"type":"object"},"VastuDirectionDeclinationRequest":{"additionalProperties":true,"description":"Source-derived request for direction/declination. Fields not listed here are ignored.","properties":{"date":{"description":"Optional ISO date or datetime. Omit to use the current UTC date and time. A date without a time means midnight UTC; a datetime without an offset is UTC. Invalid explicit values return 400. Declination is published for dates from 2025.0 up to 2030.0, the WMM2025 validity window; a date outside 2025-01-01 to 2029-12-31 returns 400 INVALID_INPUT naming the date field and the window, and nothing is charged.","type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lat":{"maximum":90,"minimum":-90,"type":"number"},"lon":{"maximum":180,"minimum":-180,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["lat","lon"],"type":"object"},"VastuDirectionDeclinationResponse":{"description":"Typed success envelope for direction/declination.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuDirectionDeclinationData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuDirectionRequest":{"properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"declinationDeg":{"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["bearingDeg"],"type":"object"},"VastuDirectionSunPathRequest":{"additionalProperties":true,"description":"Source-derived request for direction/sun-path. Fields not listed here are ignored.","properties":{"date":{"description":"Optional ISO date or datetime. Omit to use the current UTC date. The calendar date as written is the date used, whatever its UTC offset: 2026-10-02T23:30:00-05:00 is 2 October, not the 3 October of its UTC instant. The time of day is not used.","type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lat":{"maximum":90,"minimum":-90,"type":"number"},"lon":{"maximum":180,"minimum":-180,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["lat","lon"],"type":"object"},"VastuDirectionSunPathResponse":{"description":"Typed success envelope for direction/sun-path.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuSunPathData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuDirectionZoneFromBearingRequest":{"additionalProperties":true,"description":"Source-derived request for direction/zone-from-bearing. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["bearingDeg"],"type":"object"},"VastuDirectionZoneFromBearingResponse":{"description":"Typed success envelope for direction/zone-from-bearing.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuBearingZoneData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuDirections32ReferenceData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"auspiciousCount":{"type":"integer"},"avoidCount":{"type":"integer"},"classicalDoorScheme":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"note":{"type":"string"},"padaCount":{"type":"integer"},"padaWidthDeg":{"type":"number"},"padas":{"description":"The 32 perimeter padas. entrance/pada, entrance/recommend and reference/directions/32 serve one 32-pada ring: the devata names run in the Brihat Samhita 53.43-45 perimeter order with Agni (the NE corner square) beginning at 45 degrees, and pada 0 begins at 337.5 degrees, so each compass octant holds four whole padas. Each pada's quadrant is the octant it lies in; its bearing range and grade are later convention (source is the convention marker). deity is the Brihat Samhita 53.43-45 roster spelling of the pada's devata and deityRosterName repeats it; deityNameClassification and deityNameSource say the name is from that roster; deityPlacementClassification and deityPlacementSource are classical only when the verse also seats that devata on a perimeter square inside the served quadrant's 3x3 zone.","items":{"additionalProperties":true,"type":"object"},"type":"array"},"referenceVersion":{"description":"Opaque revision of canonical reference content, including provenance. Replace a cached table when this value changes. Paid refresh calls retain normal billing; this is not an HTTP cache validator.","pattern":"^sha256:[0-9a-f]{64}$","type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"system":{"type":"string"},"tradition":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verified":{"type":"boolean"}},"required":["padaCount","padas","verified","referenceVersion"],"type":"object"},"VastuDirectionsReferenceData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"directionCount":{"type":"integer"},"directions":{"items":{"additionalProperties":true,"properties":{"bearingEnd":{"type":"number"},"bearingStart":{"type":"number"},"code":{"type":"string"},"deity":{"type":"string"},"deityClassification":{"description":"classical only when the verified verse states this deity name for this direction; else convention.","type":"string"},"deitySource":{"description":"Source for the deity name: a verified verse string, or the convention marker.","type":"string"},"element":{"type":"string"},"sanskrit":{"type":"string"},"source":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"}},"type":"object"},"type":"array"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"note":{"type":"string"},"referenceVersion":{"description":"Opaque revision of canonical reference content, including provenance. Replace a cached table when this value changes. Paid refresh calls retain normal billing; this is not an HTTP cache validator.","pattern":"^sha256:[0-9a-f]{64}$","type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sectorWidthDeg":{"type":"number"},"sources":{"items":{"type":"string"},"type":"array"},"system":{"type":"string"},"tradition":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verified":{"type":"boolean"}},"required":["directionCount","directions","verified","referenceVersion"],"type":"object"},"VastuDrawingSheetData":{"properties":{"contentType":{"type":"string"},"fieldEvidenceCount":{"type":"integer"},"html":{"type":"string"},"inputUnits":{"enum":["m","ft","mm","in"],"type":"string"},"metresPerInputUnit":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"metresToPaperMm":{"type":"number"},"paperHeightMm":{"type":"number"},"paperSize":{"enum":["A3","A2"],"type":"string"},"paperWidthMm":{"type":"number"},"pdfBase64":{"format":"byte","type":"string"},"planHeightMm":{"type":"number"},"planWidthMm":{"type":"number"},"scaleDenominator":{"type":"integer"},"svg":{"type":"string"},"trueNorthDeg":{"type":"number"},"units":{"enum":["m"],"type":"string"}},"required":["html","svg","paperSize","paperWidthMm","paperHeightMm","scaleDenominator","metresToPaperMm","planWidthMm","planHeightMm","trueNorthDeg","fieldEvidenceCount","inputUnits","units","metresPerInputUnit"],"type":"object"},"VastuDrawingSheetRequest":{"additionalProperties":false,"properties":{"dimensions":{"default":true,"type":"boolean"},"fieldEvidence":{"items":{"additionalProperties":false,"properties":{"imageDataUrl":{"nullable":true,"type":"string"},"label":{"type":"string"},"note":{"type":"string"},"roomId":{"nullable":true,"type":"string"}},"required":["label"],"type":"object"},"maxItems":6,"type":"array"},"format":{"default":"html","enum":["html","pdf"],"type":"string"},"paperSize":{"default":"A3","enum":["A3","A2"],"type":"string"},"plan":{"additionalProperties":true,"description":"Unit-tagged plan (m, ft, mm or in; legacy metres accepted), normalized once to metres. Plot and rooms support polygon/holes or multipolygons.","properties":{"units":{"description":"Coordinate units. Legacy metres is accepted; responses echo inputUnits and metresPerInputUnit.","enum":["m","ft","mm","in","metres"],"type":"string"}},"required":["units"],"type":"object"},"scaleDenominator":{"default":100,"enum":[50,100,200],"type":"integer"},"titleBlock":{"additionalProperties":false,"properties":{"architect":{"type":"string"},"date":{"type":"string"},"drawingNumber":{"type":"string"},"project":{"type":"string"},"revision":{"type":"string"}},"required":["project","architect"],"type":"object"},"zoneOverlay":{"default":true,"type":"boolean"}},"required":["plan","titleBlock"],"type":"object"},"VastuDrawingSheetResponse":{"properties":{"billing":{"additionalProperties":true,"type":"object"},"data":{"$ref":"#/components/schemas/VastuDrawingSheetData"},"mode":{"type":"string"},"success":{"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuElementBalanceData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"balanced":{"type":"boolean"},"deficientElements":{"items":{"type":"string"},"type":"array"},"derivedFrom":{"type":"string"},"excessElements":{"items":{"type":"string"},"type":"array"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"remedies":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"summary":{"type":"string"},"system":{"type":"string"}},"required":["derivedFrom","deficientElements","excessElements","remedies","balanced"],"type":"object"},"VastuElementDistributionData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"deficientElements":{"items":{"type":"string"},"type":"array"},"dominantElement":{"type":"string"},"elementDistribution":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"excessElements":{"items":{"type":"string"},"type":"array"},"idealModel":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"system":{"type":"string"},"totalRooms":{"type":"number"},"weightingBasis":{"type":"string"},"zoneBreakdown":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}},"required":["elementDistribution","idealModel","dominantElement","deficientElements","excessElements","zoneBreakdown"],"type":"object"},"VastuElementsBalanceSuggestRequest":{"additionalProperties":true,"anyOf":[{"required":["distribution"]},{"required":["deficient"]},{"required":["excess"]}],"description":"Source-derived request for elements/balance-suggest. Fields not listed here are ignored.","properties":{"deficient":{"items":{"type":"string"},"type":"array"},"distribution":{"additionalProperties":true,"type":"object"},"excess":{"items":{"type":"string"},"type":"array"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":[],"type":"object"},"VastuElementsBalanceSuggestResponse":{"description":"Typed success envelope for elements/balance-suggest.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuElementBalanceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuElementsDistributionRequest":{"additionalProperties":true,"description":"Source-derived request for elements/distribution. Fields not listed here are ignored.","properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"description":"Optional label, echoed in zoneBreakdown (also accepted as name or room).","type":"string"},"zone":{"description":"A recognised direction (N..NW) or center; anything else is rejected with 400.","type":"string"}},"required":["zone"],"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuElementsDistributionResponse":{"description":"Typed success envelope for elements/distribution.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuElementDistributionData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuEntranceObstructionCheckRequest":{"additionalProperties":true,"description":"Source-derived request for entrance/obstruction-check. Fields not listed here are ignored.","properties":{"distanceMeters":{"type":"number"},"feature":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"houseHeightMeters":{"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["feature"],"type":"object"},"VastuEntranceObstructionCheckResponse":{"description":"Typed success envelope for entrance/obstruction-check.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuObstructionData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuEntranceObstructionRequest":{"properties":{"distance":{"minimum":0,"type":"number"},"entranceDirection":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"obstruction":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["obstruction"],"type":"object"},"VastuEntrancePadaData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"doorXY":{"items":{"type":"number"},"type":"array"},"edgeRefined":{"type":"boolean"},"pada":{"additionalProperties":false,"properties":{"auspiciousness":{"description":"Convention grade: auspicious, neutral, avoid or severe. entrance/recommend and reference/directions/32 give the same pada the same grade.","type":"string"},"bearingEnd":{"type":"number"},"bearingStart":{"type":"number"},"deity":{"description":"Brihat Samhita 53.43-45 roster spelling of the pada's devata. entrance/pada, entrance/recommend and reference/directions/32 serve one 32-pada ring: the devata names run in the Brihat Samhita 53.43-45 perimeter order with Agni (the NE corner square) beginning at 45 degrees, and pada 0 begins at 337.5 degrees, so each compass octant holds four whole padas.","type":"string"},"deityNameClassification":{"description":"classical when deityRosterName is set; else convention.","enum":["classical","convention"],"type":"string"},"deityNameSource":{"description":"Brihat Samhita 53.43-48 when deityRosterName is set, else the convention marker. The per-pada assignment itself is convention.","type":"string"},"deityPlacementClassification":{"description":"classical only when Brihat Samhita 53.43-48 names this devata and seats it on a perimeter square inside the served quadrant's 3x3 zone; else convention. The bearing range, the pada-to-devata assignment and the grade are convention in every case.","enum":["classical","convention"],"type":"string"},"deityPlacementSource":{"description":"Brihat Samhita 53.43-48 when deityPlacementClassification is classical, else the convention marker.","type":"string"},"deityRosterName":{"description":"The Brihat Samhita 53.43-48 roster spelling of this pada's devata. Every ring name is a roster name, so it equals deity.","nullable":true,"type":"string"},"index":{"description":"0-31 clockwise. Pada 0 begins at 337.5 degrees (the start of the North octant); Agni, the verse's NE corner square, is pada 6 and begins at 45 degrees.","type":"integer"},"quadrant":{"description":"The compass octant the whole pada lies in: the zone direction/zone-from-bearing gives every bearing inside the pada.","type":"string"},"source":{"type":"string"},"subIndex":{"description":"Position of the pada within its octant, 0-3 clockwise.","type":"integer"}},"required":["index","deity","quadrant","subIndex","bearingStart","bearingEnd","auspiciousness","source"],"type":"object"},"plotCentroid":{"items":{"type":"number"},"type":"array"},"rawBearingDeg":{"type":"number"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"trueBearingDeg":{"type":"number"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verified":{"type":"boolean"}},"required":["doorXY","plotCentroid","rawBearingDeg","trueBearingDeg","pada","edgeRefined","sources","verified"],"type":"object"},"VastuEntrancePadaRequest":{"additionalProperties":true,"description":"Source-derived request for entrance/pada. A doorXY outside the plot by more than 5% of the plot's larger extent, or at the plot centroid, is refused with a 400 before any charge; a door inside or on the plot is read from the plot centroid as before. Fields not listed here are ignored.","properties":{"bearingDeg":{"type":"number"},"doorXY":{"description":"The main door as [x, y] in the same coordinates and units as plotPolygon. A door inside or on the plot is read from the plot centroid; one outside it by more than 5% of the plot's larger extent is refused.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["plotPolygon","doorXY"],"type":"object"},"VastuEntrancePadaResponse":{"description":"Typed success envelope for entrance/pada.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuEntrancePadaData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuEntranceRecommendData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"avoidPadas":{"description":"Avoid and severe padas on the facing wall, labelled like each item of recommendedPadas.","items":{"additionalProperties":true,"type":"object"},"type":"array"},"bestEntranceIsUnfavourable":{"description":"True only when every pada on the facing wall is graded avoid or severe in the 32-pada convention (the south-west wall); bestEntrancePada is then the least-bad of them, also listed in avoidPadas, and not a recommended door position.","type":"boolean"},"bestEntranceNote":{"description":"Plain explanation when bestEntranceIsUnfavourable is true; null otherwise.","nullable":true,"type":"string"},"bestEntrancePada":{"additionalProperties":true,"description":"Always a pada on the facing wall, labelled like each item of recommendedPadas. When the wall has an auspicious or neutral pada, it is the highest-graded of them and never one of avoidPadas. When every pada on that wall is graded avoid or severe (the south-west wall), it is the least-bad of them, also listed in avoidPadas, and bestEntranceIsUnfavourable is true.","type":"object"},"facing":{"additionalProperties":true,"description":"The facing octant. deity is the direction's guardian, the same name direction/zone-from-bearing, reference/directions/8 and plot/orientation serve for that direction.","type":"object"},"facingCaution":{"additionalProperties":true,"nullable":true,"type":"object"},"meta":{"additionalProperties":true,"description":"sources lists the verses this response applies, Brihat Samhita 53.43-48 when a served pada names a roster devata, and the convention marker. verifiedSource is the first applied verse only.","type":"object"},"method":{"type":"string"},"poojaPrescribedHere":{"additionalProperties":true,"nullable":true,"type":"object"},"prescribedRoomsAtFacing":{"items":{"type":"string"},"type":"array"},"recommendedPadas":{"description":"Auspicious padas on the facing wall: the four padas of the facing octant, which lie wholly inside facing.bearingRange. entrance/pada, entrance/recommend and reference/directions/32 serve one 32-pada ring: the devata names run in the Brihat Samhita 53.43-45 perimeter order with Agni (the NE corner square) beginning at 45 degrees, and pada 0 begins at 337.5 degrees, so each compass octant holds four whole padas. Each pada's bearing range and grade are later convention (source is the convention marker). deity is the Brihat Samhita 53.43-45 roster spelling of the pada's devata and deityRosterName repeats it; deityNameClassification and deityNameSource say the name is from that roster; deityPlacementClassification and deityPlacementSource are classical only when the verse also seats that devata on a perimeter square inside the served quadrant's 3x3 zone.","items":{"additionalProperties":true,"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"system":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"}},"required":["facing","bestEntrancePada","recommendedPadas","avoidPadas"],"type":"object"},"VastuEntranceRecommendRequest":{"additionalProperties":true,"description":"Source-derived request for entrance/recommend. Fields not listed here are ignored.","properties":{"facing":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["facing"],"type":"object"},"VastuEntranceRecommendResponse":{"description":"Typed success envelope for entrance/recommend.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuEntranceRecommendData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuFeedListingsData":{"properties":{"accepted":{"type":"integer"},"dryRun":{"type":"boolean"},"rejected":{"type":"integer"},"results":{"items":{"properties":{},"required":[],"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"skipped":{"type":"integer"}},"required":["accepted","rejected","skipped","results"],"type":"object"},"VastuFeedListingsRequest":{"additionalProperties":false,"properties":{"csv":{"maxLength":1048576,"type":"string"},"dryRun":{"default":false,"type":"boolean"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rows":{"items":{"additionalProperties":false,"properties":{"address":{"nullable":true,"type":"string"},"bearingDeg":{"nullable":true,"type":"number"},"building":{"type":"string"},"city":{"nullable":true,"type":"string"},"externalId":{"type":"string"},"floor":{"type":"string"},"planAsset":{"additionalProperties":false,"nullable":true,"properties":{"kind":{"enum":["url","uploadId"],"type":"string"},"value":{"type":"string"}},"required":["kind","value"],"type":"object"},"project":{"type":"string"},"retentionDays":{"default":30,"maximum":30,"minimum":1,"type":"integer"},"revision":{"type":"string"},"title":{"type":"string"},"unit":{"type":"string"}},"required":["externalId","revision","project","building","unit","floor","title"],"type":"object"},"maxItems":1000,"type":"array"},"skipDuplicates":{"default":true,"type":"boolean"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":[],"type":"object"},"VastuFeedListingsResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuFeedListingsData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuFloorLevelAnalysisRequest":{"additionalProperties":true,"description":"Source-derived request for floor/level-analysis. Fields not listed here are ignored.","properties":{"levels":{"oneOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"additionalProperties":true,"type":"object"}]},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":[],"type":"object"},"VastuFloorLevelAnalysisResponse":{"description":"Typed success envelope for floor/level-analysis.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuLevelAnalysisData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuFloorPlanAuditData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"classification":{"type":"string"},"computed":{"type":"boolean"},"defects":{"items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"code":{"nullable":true,"type":"string"},"issue":{"type":"string"},"issueKey":{"description":"Stable template identity: vastu.issue.forbidden_placement or vastu.issue.permitted_not_prescribed. Use issueParams; keep English issue as fallback.","type":"string"},"issueParams":{"additionalProperties":true,"description":"Canonical values remain unchanged during response translation. Render values as text, never HTML.","properties":{"roomType":{"type":"string"},"severity":{"type":"string"},"zone":{"type":"string"}},"required":["roomType","zone","severity"],"type":"object"},"recommendedZone":{"nullable":true,"type":"string"},"remedy":{"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedyKey":{"description":"vastu.remedy.zone.<ZONE>, or null when no remedy applies. Uses remedyParams. A key does not assert translation availability or remedy efficacy.","nullable":true,"type":"string"},"remedyParams":{"additionalProperties":true,"type":"object"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"room":{"type":"string"},"severity":{"type":"string"},"source":{"nullable":true,"type":"string"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"grade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"gradeScale":{"additionalProperties":true,"description":"The letter bands, A to E, each as the range of scores it covers: the same scale as grade, printed with the response.","type":"object"},"merchantCatalogId":{"type":"string"},"merchantCatalogRevision":{"format":"int64","minimum":1,"type":"integer"},"notAssessed":{"description":"Recognised spaces with no placement rule (balcony, parking, garage, lift, lobby, corridor, terrace, verandah, porch, sit-out, utility, wash area, garden, lawn, courtyard, shaft, duct). Listed, never graded, never counted in the score.","items":{"additionalProperties":false,"properties":{"graded":{"enum":[false],"type":"boolean"},"reason":{"enum":["no placement rule for this space type"],"type":"string"},"room":{"type":"string"},"zone":{"type":"string"}},"required":["room","zone","reason","graded"],"type":"object"},"type":"array"},"prescribedCount":{"type":"integer"},"receipt":{"properties":{"format":{"enum":["JWS"],"type":"string"},"keyUrl":{"format":"uri","type":"string"},"token":{"maxLength":16384,"type":"string"},"verifyUrl":{"format":"uri","type":"string"}},"required":["format","token","verifyUrl","keyUrl"],"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"score":{"nullable":true,"type":"number"},"scoreNote":{"description":"Present when no room was graded; score and grade are then null.","type":"string"},"scoring":{"additionalProperties":false,"properties":{"basis":{"type":"string"},"classification":{"type":"string"},"comparisonBasis":{"type":"string"},"duplicatePlacementCount":{"minimum":0,"type":"integer"},"formula":{"type":"string"},"inputPlacementCount":{"minimum":0,"type":"integer"},"uniquePlacementCount":{"minimum":0,"type":"integer"},"unit":{"type":"string"},"verified":{"enum":[false],"type":"boolean"},"version":{"type":"string"}},"required":["version","unit","formula","basis","comparisonBasis","classification","inputPlacementCount","uniquePlacementCount","duplicatePlacementCount","verified"],"type":"object"},"sources":{"items":{"type":"string"},"type":"array"},"textParse":{"additionalProperties":false,"properties":{"coverage":{"type":"string"},"directionVocabulary":{"items":{"type":"string"},"type":"array"},"grammar":{"type":"string"},"parsedClauseCount":{"minimum":0,"type":"integer"},"roomVocabulary":{"items":{"type":"string"},"type":"array"},"supportedLanguages":{"items":{"type":"string"},"type":"array"},"transliterations":{"type":"string"},"unparsedClauses":{"items":{"type":"string"},"type":"array"},"version":{"type":"string"}},"required":["version","transliterations","grammar","coverage","supportedLanguages","roomVocabulary","directionVocabulary","unparsedClauses","parsedClauseCount"],"type":"object"},"totalRooms":{"type":"integer"},"verified":{"type":"boolean"}},"required":["score","grade","totalRooms","prescribedCount","defects","sources","verified","computed","classification","scoring"],"type":"object"},"VastuFloorRulesData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"floorRules":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"input":{"additionalProperties":true,"type":"object"},"masterBedroomFloor":{"type":"integer"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"principle":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"system":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"}},"required":["masterBedroomFloor","floorRules","sources","verified"],"type":"object"},"VastuFusionChartData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"ascendant":{"additionalProperties":true,"description":"Ascendant sign, and nakshatra: the nakshatra of the ascendant's own sidereal longitude (not the Moon's nakshatra). nakshatra is null when no birth time was given and the ascendant is unavailable.","type":"object"},"cautionDirections":{"description":"Directions to keep heavy and closed, one object each: the compass direction, its deity and element, the graha that rules it, how strong that graha's Dig Bala is there (strengthPct), a rationale, and the room uses to avoid. Empty when no direction needs caution.","items":{"additionalProperties":true,"properties":{"avoidUse":{"items":{"type":"string"},"type":"array"},"deity":{"type":"string"},"direction":{"type":"string"},"element":{"type":"string"},"rationale":{"type":"string"},"ruledBy":{"type":"string"},"strengthPct":{"type":"number"}},"required":["direction","rationale"],"type":"object"},"type":"array"},"favourableDirections":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"grahaDirections":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"methodology":{"additionalProperties":true,"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"summary":{"type":"string"},"system":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"}},"required":["ascendant","grahaDirections","favourableDirections","cautionDirections","methodology","summary","sources"],"type":"object"},"VastuFusionChartRequest":{"additionalProperties":true,"description":"Source-derived request for fusion/chart. Fields not listed here are ignored.","properties":{"datetime":{"format":"date-time","type":"string"},"facing":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"timezone":{"type":"string"}},"required":["datetime","latitude","longitude"],"type":"object"},"VastuFusionChartResponse":{"description":"Typed success envelope for fusion/chart.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuFusionChartData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuJobArtifact":{"properties":{"artifactId":{"type":"string"},"content":{"type":"string"},"contentType":{"type":"string"},"filename":{"type":"string"},"itemId":{"type":"string"},"jobId":{"type":"string"}},"required":["artifactId","jobId","itemId","contentType","filename","content"],"type":"object"},"VastuJobResultItem":{"properties":{"artifacts":{"description":"Completed plan items expose an artifact with stable job/item identity and content. Reads reuse the original result and do not charge.","items":{"$ref":"#/components/schemas/VastuJobArtifact"},"type":"array"},"code":{"description":"Failure code such as INVALID_INPUT, INSUFFICIENT_BALANCE or API_KEY_REVOKED.","nullable":true,"type":"string"},"id":{"type":"string"},"index":{"minimum":0,"type":"integer"},"response":{"additionalProperties":true,"description":"The exact single-item response envelope, including its billing block.","type":"object"},"status":{"description":"The HTTP status the single-item call would have returned.","type":"integer"}},"required":["id","index","status","response"],"type":"object"},"VastuJobResultsData":{"properties":{"jobId":{"pattern":"^vjob_[0-9a-f]{32}$","type":"string"},"jobStatus":{"enum":["queued","running","completed","partial","failed","cancelled"],"type":"string"},"nextCursor":{"description":"Pass as ?cursor= for the next page; null on the last page.","nullable":true,"type":"string"},"results":{"items":{"$ref":"#/components/schemas/VastuJobResultItem"},"maxItems":50,"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"}},"required":["jobId","jobStatus","results","nextCursor"],"type":"object"},"VastuJobStatusData":{"properties":{"billing":{"properties":{"basis":{"type":"string"},"charged":{"description":"US dollars.","type":"number"},"currency":{"enum":["USD"],"type":"string"},"maxCharge":{"description":"US dollars.","type":"number"},"pricePerItem":{"description":"US dollars.","type":"number"}},"required":["currency","pricePerItem","maxCharge","charged","basis"],"type":"object"},"cancelRequested":{"type":"boolean"},"counts":{"properties":{"cancelled":{"minimum":0,"type":"integer"},"failed":{"minimum":0,"type":"integer"},"pending":{"minimum":0,"type":"integer"},"succeeded":{"minimum":0,"type":"integer"}},"required":["succeeded","failed","pending","cancelled"],"type":"object"},"createdAt":{"description":"Unix seconds.","type":"integer"},"expiresAt":{"description":"Unix seconds; the job answers 404 afterwards.","type":"integer"},"finishedAt":{"description":"Unix seconds.","nullable":true,"type":"integer"},"itemCount":{"maximum":1000,"minimum":1,"type":"integer"},"jobId":{"pattern":"^vjob_[0-9a-f]{32}$","type":"string"},"operation":{"enum":["assessments","plan-analyze","plan-report"],"type":"string"},"resultsUrl":{"description":"https://api.vedika.io/v2/vastu/jobs/{id}/results","type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"status":{"enum":["queued","running","completed","partial","failed","cancelled"],"type":"string"},"updatedAt":{"description":"Unix seconds.","type":"integer"},"webhookId":{"nullable":true,"type":"string"}},"required":["jobId","status","operation","itemCount","counts","billing","cancelRequested","createdAt","updatedAt","expiresAt","resultsUrl"],"type":"object"},"VastuJobSubmitData":{"properties":{"itemCount":{"maximum":1000,"minimum":1,"type":"integer"},"jobId":{"pattern":"^vjob_[0-9a-f]{32}$","type":"string"},"maxCharge":{"description":"US dollars: the most this job can charge (price per item times items).","type":"number"},"preview":{"description":"Sandbox only: up to 3 items computed at $0.","items":{"$ref":"#/components/schemas/VastuJobResultItem"},"type":"array"},"previewNote":{"description":"Sandbox only.","type":"string"},"replayed":{"description":"True when this answers a retry of an earlier submit.","type":"boolean"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"status":{"enum":["queued","running","completed","partial","failed","cancelled"],"type":"string"}},"required":["jobId","status","itemCount","maxCharge","replayed"],"type":"object"},"VastuJobsIdCancelResponse":{"properties":{"data":{"$ref":"#/components/schemas/VastuJobStatusData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuJobsIdResponse":{"properties":{"data":{"$ref":"#/components/schemas/VastuJobStatusData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuJobsIdResultsResponse":{"properties":{"data":{"$ref":"#/components/schemas/VastuJobResultsData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuJobsRequest":{"additionalProperties":false,"description":"Queue 1 to 1,000 assessment, plan-analyze or plan-report inputs and return 202 at once. Serialized body at most 5 MiB; each item input at most 128 KiB. The Idempotency-Key header is required: the same key and body return the same jobId; the same key with a different body returns 409. Nothing is held at submit: the wallet must cover maxCharge (the selected single-item operation price times the item count), and each item is charged that price only after it computes successfully, with a per-item retry identity so a worker rerun can never charge twice. If the wallet runs out mid-job the remaining items fail with INSUFFICIENT_BALANCE and the job ends partial; a revoked key fails the remaining items uncharged. At most 5 queued or running jobs per account. Jobs are readable for 30 days; item results for 7 days. Webhooks: pass webhookId from POST /api/enterprise/webhooks/create to receive one `vastu.job.completed`, `vastu.job.partial` or `vastu.job.failed` event when the job ends. Each delivery carries `Vedika-Signature: t=<unix>,v1=<hex HMAC-SHA256(secret, \"{t}.{raw body}\")>`, `Vedika-Event` and `Vedika-Delivery-Id`; verify over the raw body and reject t more than 5 minutes from your clock. During the 24 hours after a secret rotation the header carries one v1 per valid secret. Payloads carry only ids, counts and a results URL. Failed deliveries retry after 1m, 5m, 15m, 1h, 6h, 12h and 24h; answering 410 disables the webhook; redirects are never followed.","properties":{"items":{"items":{"additionalProperties":false,"properties":{"id":{"description":"Unique nonempty ID, at most 128 UTF-8 bytes, with no surrounding spaces.","maxLength":128,"minLength":1,"type":"string"},"input":{"anyOf":[{"$ref":"#/components/schemas/VastuAssessmentsRequest"},{"$ref":"#/components/schemas/VastuPlanAnalyzeRequest"},{"$ref":"#/components/schemas/VastuPlanReportRequest"}]}},"required":["id","input"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"},"operation":{"description":"Each item runs the selected existing endpoint: assessments, plan/analyze or plan/report. Report format html returns HTML; other results expose a JSON artifact. There is no job fee.","enum":["assessments","plan-analyze","plan-report"],"type":"string"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"webhookId":{"description":"An active webhook on this account that should receive the job's final event.","maxLength":64,"minLength":8,"type":"string"}},"required":["operation","items"],"type":"object"},"VastuJobsResponse":{"properties":{"data":{"$ref":"#/components/schemas/VastuJobSubmitData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuLayoutRequest":{"description":"A building layout with typed rooms and optional plot geometry.","properties":{"plot":{"properties":{"facing":{"type":"string"},"length":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"polygon":{"description":"Local Cartesian outline: +X is east, +Y is north. Do NOT send geographic coordinates or screen coordinates with +Y downward.","items":{"description":"Local Cartesian [x, y] point: +X is east, +Y is north. Do NOT send latitude/longitude.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"setbacks":{"properties":{"front":{"minimum":0,"type":"number"},"left":{"minimum":0,"type":"number"},"rear":{"minimum":0,"type":"number"},"right":{"minimum":0,"type":"number"}},"type":"object"},"width":{"exclusiveMinimum":true,"minimum":0,"type":"number"}},"type":"object"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"polygon":{"description":"Local Cartesian outline: +X is east, +Y is north. Do NOT send geographic coordinates or screen coordinates with +Y downward.","items":{"description":"Local Cartesian [x, y] point: +X is east, +Y is north. Do NOT send latitude/longitude.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"required":["name"],"type":"object"},"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuLevelAnalysisData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"idealLevels":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"idealOrdering":{"type":"string"},"input":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"observedAnalysis":{"additionalProperties":true,"nullable":true,"type":"object"},"principle":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"system":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"}},"required":["idealLevels","observedAnalysis","sources","verified"],"type":"object"},"VastuLifecycleEvent":{"description":"ID-only Vastu lifecycle notification. Subscribe through POST /api/webhooks/create using the existing customer-webhooks API. Existing raw-body HMAC signatures, secret rotation, SSRF checks and retries apply. eventId is the deduplication identity, scoped to the owner and retained request identity. No property content, plan, report, address or key is included. Unlinked property/revision IDs are null. No-op property writes, scan replays and failed computations do not emit. Retain x-request-id on assessment/report retries.","properties":{"createdAt":{"type":"integer"},"data":{"properties":{"action":{"nullable":true,"type":"string"},"assessmentId":{"nullable":true,"type":"string"},"itemId":{"nullable":true,"type":"string"},"jobId":{"nullable":true,"type":"string"},"propertyId":{"nullable":true,"type":"string"},"reportId":{"nullable":true,"type":"string"},"revisionId":{"nullable":true,"type":"string"},"scanId":{"nullable":true,"type":"string"}},"type":"object"},"event":{"enum":["property.created","property.updated","property.deleted","assessment.completed","report.ready","scan.changed"],"type":"string"},"eventId":{"type":"string"},"schemaVersion":{"enum":[1],"type":"integer"}},"required":["event","eventId","schemaVersion","createdAt","data"],"type":"object"},"VastuMainGateData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"classification":{"type":"string"},"computed":{"type":"boolean"},"facing":{"type":"string"},"facingAffectsPrescribedPadas":{"description":"Always false: Manasara 38 applies one rule to every side, so the prescribed padas do not change with facing.","type":"boolean"},"facingNote":{"description":"Says the verse rule is the same on every side and names the side the nine padas are measured along.","type":"string"},"feature":{"type":"string"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"padaScheme":{"type":"string"},"padaVerdict":{"additionalProperties":true,"type":"object"},"prescribedPadas":{"items":{"type":"integer"},"type":"array"},"remedy":{"type":"string"},"remedyType":{"type":"string"},"rule":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"system":{"type":"string"},"verified":{"type":"boolean"}},"required":["facing","padaScheme","prescribedPadas","rule","remedy","sources","computed","classification"],"type":"object"},"VastuMandalaProject81PadaRequest":{"additionalProperties":true,"description":"Source-derived request for mandala/project/81-pada. Fields not listed here are ignored.","properties":{"bearingDeg":{"type":"number"},"doorXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["plotPolygon"],"type":"object"},"VastuMandalaProject81PadaResponse":{"description":"Typed success envelope for mandala/project/81-pada.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuMandalaProjectionData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuMandalaProject9ZoneRequest":{"additionalProperties":true,"description":"Source-derived request for mandala/project/9-zone. Fields not listed here are ignored.","properties":{"bearingDeg":{"type":"number"},"doorXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["plotPolygon"],"type":"object"},"VastuMandalaProject9ZoneResponse":{"description":"Typed success envelope for mandala/project/9-zone.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuMandalaProjectionData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuMandalaProjectBrahmasthanRequest":{"additionalProperties":true,"description":"Source-derived request for mandala/project/brahmasthan. Fields not listed here are ignored.","properties":{"bearingDeg":{"type":"number"},"doorXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["plotPolygon"],"type":"object"},"VastuMandalaProjectBrahmasthanResponse":{"description":"Typed success envelope for mandala/project/brahmasthan.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuBrahmasthanProjectionData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuMandalaProjectionData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"bearingAssumedNorth":{"type":"boolean"},"bearingDeg":{"type":"number"},"cells":{"description":"Projected cells; the keys depend on the operation. project/81-pada cells: id, zone, polygon, centroid, area (the whole grid cell, which extends past the plot once the grid is rotated), builtUpArea (the part of the plot inside the cell; cells' builtUpArea sum to the plot area at any bearing), fillPct, insidePlot, verseSquare, devata, devataClass, placementClassification, placementSource and classicalSource. The last five are null on the 28 squares the verse leaves unnamed. Every cell also carries inPlotArea (the same quantity as builtUpArea) and inPlotFraction (0 to 1: the share of the cell that lies inside the plot, the same quantity as fillPct as a fraction).","items":{"additionalProperties":true,"type":"object"},"type":"array"},"classification":{"type":"string"},"computed":{"type":"boolean"},"gridFrame":{"additionalProperties":false,"description":"The frame the grid is cut in. Zones are compass directions, so the grid is always north-aligned and never follows the plot's own edges: it is cut from the bounding box of the plot after the plot is rotated to true north. Every cell is an equal part of that box, not of the plot, so on a plot whose edges are not north-aligned the box is larger than the plot and cell sizes vary with the bearing.","properties":{"fittedTo":{"enum":["plot-bounding-box"],"type":"string"},"gridBoxArea":{"description":"Area of the bounding box the grid is cut from, in squared plot units.","type":"number"},"note":{"type":"string"},"orientation":{"enum":["north-aligned"],"type":"string"},"plotAreaShareOfGridBox":{"description":"Plot area divided by gridBoxArea (1 for a north-aligned rectangle, lower the more the plot is rotated).","nullable":true,"type":"number"},"rotationDeg":{"description":"The bearingDeg the plot was rotated by.","type":"number"}},"type":"object"},"plotCentroid":{"items":{"type":"number"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verified":{"type":"boolean"}},"required":["cells","plotCentroid","bearingDeg","sources","verified"],"type":"object"},"VastuMandalaReferenceData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"bearingDeg":{"type":"number"},"brahmasthanPadas":{"items":{"type":"number"},"type":"array"},"cells":{"items":{"additionalProperties":true,"properties":{"area":{"type":"number"},"centroid":{"items":{"type":"number"},"type":"array"},"col":{"type":"integer"},"devata":{"nullable":true,"type":"string"},"devataNameVerified":{"description":"True when the name is in the verified 45-devata roster.","type":"boolean"},"devataVerified":{"description":"False on every 64-pada cell: the verse numbers an 81-square plan, and which 8x8 cell receives a name is layout convention.","type":"boolean"},"id":{"type":"string"},"insidePlot":{"type":"boolean"},"isBrahmasthan":{"type":"boolean"},"padaNumber":{"type":"integer"},"placementClassification":{"description":"Convention on every 64-pada cell. Each named cell carries a name Brihat Samhita 53.43-48 seats on a square inside that compass zone of its 81-square plan, once per zone (Brahmā covers the centre block); which cell in the zone receives it is layout convention.","type":"string"},"placementSource":{"description":"The convention marker on every 64-pada cell.","type":"string"},"polygon":{"items":{"items":{"type":"number"},"type":"array"},"type":"array"},"row":{"type":"integer"},"source":{"description":"Source for the devata NAME (the 45-devata roster); the convention marker on a cell that carries no name.","type":"string"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"classBreakdown":{"additionalProperties":true,"type":"object"},"devataCount":{"type":"integer"},"devataSource":{"type":"string"},"devataVerified":{"description":"64-pada: always false. The verse numbers an 81-square plan; the 8x8 grid, its zone bands and which cell gets which name are layout convention, so every cell's devataVerified is false as well.","type":"boolean"},"devatas":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"grid":{"additionalProperties":true,"type":"object"},"mandala":{"type":"string"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"note":{"type":"string"},"padaCount":{"type":"integer"},"plotCentroid":{"items":{"type":"number"},"type":"array"},"projected":{"type":"boolean"},"referenceVersion":{"description":"Opaque revision of canonical reference content, including provenance. Replace a cached table when this value changes. Paid refresh calls retain normal billing; this is not an HTTP cache validator.","pattern":"^sha256:[0-9a-f]{64}$","type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"system":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"zoneCount":{"type":"integer"},"zones":{"items":{"additionalProperties":true,"properties":{"deity":{"type":"string"},"deityClassification":{"description":"classical only when the deity name is in the matching row of the verified 45-devata roster (Brihat Samhita 53.43-48); else convention.","type":"string"},"deitySource":{"description":"Source for the deity name.","type":"string"},"element":{"type":"string"},"elementClassification":{"description":"classical only for the verified North-East water element; else convention.","type":"string"},"elementSource":{"description":"Source for the element label: the verified verse for the North-East water element, else the convention marker.","type":"string"},"forbidden":{"items":{"type":"string"},"type":"array"},"prescribed":{"items":{"type":"string"},"type":"array"},"remedy":{"type":"string"},"remedyClassification":{"type":"string"},"remedyKey":{"description":"Nine-zone reference key vastu.remedy.reference.zone.<ZONE>. Its text is now the same room-neutral zone remedy served under vastu.remedy.zone.<ZONE>. A key does not assert translation availability or remedy efficacy.","type":"string"},"remedyParams":{"additionalProperties":true,"type":"object"},"remedySource":{"type":"string"},"source":{"type":"string"},"sourceClassification":{"description":"Always convention: no verse backs a 9-zone row as a whole. Verse-backed parts are named in verseBackedRooms and deityClassification.","type":"string"},"verseBackedRooms":{"description":"Room tokens in this row that Brihat Samhita 53.118 places in this zone (NE pooja, SE kitchen, SW storage as the verse's utensil store, NW treasury); empty otherwise. Every other room rule in the row is convention.","items":{"type":"string"},"type":"array"},"verseBackedRoomsSource":{"description":"Verse for verseBackedRooms; present only when that list is non-empty.","type":"string"},"zone":{"type":"string"}},"type":"object"},"type":"array"}},"required":["verified","referenceVersion"],"type":"object"},"VastuMeasurementUncertainty":{"additionalProperties":false,"properties":{"bounds":{"additionalProperties":false,"properties":{"headingErrorDeg":{"maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"maximum":10000,"minimum":0,"type":"number"}},"required":["headingErrorDeg","positionErrorM"],"type":"object"},"coordinateUnits":{"enum":["m"],"type":"string"},"pointResult":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"results":{"items":{"additionalProperties":true,"properties":{"bearingMarginDeg":{"nullable":true,"type":"number"},"headingErrorDeg":{"maximum":180,"minimum":0,"type":"number"},"id":{},"method":{"type":"string"},"pointResult":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"positionErrorM":{"maximum":10000,"minimum":0,"type":"number"},"possiblePadas":{"items":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"type":"array"},"possibleZones":{"items":{"type":"string"},"type":"array"},"stable":{"type":"boolean"}},"required":["pointResult","possibleZones","possiblePadas","stable","bearingMarginDeg"],"type":"object"},"type":"array"},"rulesChanged":{"enum":[false],"type":"boolean"},"stable":{"type":"boolean"}},"required":["pointResult","results","stable","bounds","rulesChanged"],"type":"object"},"VastuMerchantCatalogDeleteRequest":{"additionalProperties":false,"properties":{"confirmId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"id":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},"required":["id","confirmId"],"type":"object"},"VastuMerchantCatalogDeleteResponse":{"additionalProperties":false,"properties":{"billing":{"additionalProperties":false,"properties":{"charged":{"pattern":"^[0-9]+(\\.[0-9]+)?$","type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuWorkflowData"},"replayed":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","replayed"],"type":"object"},"VastuMerchantCatalogGetRequest":{"additionalProperties":false,"properties":{"catalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},"required":["catalogId"],"type":"object"},"VastuMerchantCatalogGetResponse":{"additionalProperties":false,"properties":{"billing":{"additionalProperties":false,"properties":{"charged":{"pattern":"^[0-9]+(\\.[0-9]+)?$","type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuWorkflowData"},"replayed":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","replayed"],"type":"object"},"VastuMerchantCatalogUploadRequest":{"additionalProperties":false,"properties":{"catalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"content":{"oneOf":[{"maxLength":65536,"type":"string"},{"items":{"additionalProperties":false,"properties":{"availability":{"enum":["in_stock","out_of_stock","on_request","unavailable"],"type":"string"},"itemId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"kind":{"enum":["sku","service"],"type":"string"},"label":{"maxLength":160,"minLength":1,"type":"string"},"link":{"format":"uri","maxLength":2048,"minLength":1,"nullable":true,"pattern":"^https://","type":"string"},"referralRef":{"maxLength":128,"minLength":1,"nullable":true,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"remedyKey":{"maxLength":160,"minLength":1,"type":"string"}},"required":["remedyKey","itemId","kind","label","availability"],"type":"object"},"maxItems":200,"minItems":1,"type":"array"}]},"expectedRevision":{"format":"int64","maximum":9223372036854775806,"minimum":0,"type":"integer"},"format":{"enum":["csv","json"],"type":"string"},"mutationId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},"required":["expectedRevision","mutationId","catalogId","format","content"],"type":"object"},"VastuMerchantCatalogUploadResponse":{"additionalProperties":false,"properties":{"billing":{"additionalProperties":false,"properties":{"charged":{"pattern":"^[0-9]+(\\.[0-9]+)?$","type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuWorkflowData"},"replayed":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","replayed"],"type":"object"},"VastuMerchantRemediesRequest":{"additionalProperties":false,"properties":{"catalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"remedyKeys":{"items":{"maxLength":160,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"}},"required":["catalogId","remedyKeys"],"type":"object"},"VastuMerchantRemediesResponse":{"additionalProperties":false,"properties":{"billing":{"additionalProperties":false,"properties":{"charged":{"pattern":"^[0-9]+(\\.[0-9]+)?$","type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuWorkflowData"},"replayed":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","replayed"],"type":"object"},"VastuMultiStoreyFloorRulesRequest":{"additionalProperties":true,"description":"Source-derived request for multi-storey/floor-rules. Fields not listed here are ignored.","properties":{"floors":{"maximum":30,"minimum":1,"type":"integer"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["floors"],"type":"object"},"VastuMultiStoreyFloorRulesResponse":{"description":"Typed success envelope for multi-storey/floor-rules.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuFloorRulesData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuObstructionData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"classification":{"type":"string"},"computed":{"type":"boolean"},"effect":{"type":"string"},"houseHeightMultiples":{"nullable":true,"type":"number"},"inRange":{"nullable":true,"type":"boolean"},"input":{"additionalProperties":true,"type":"object"},"matchedFeature":{"type":"string"},"note":{"type":"string"},"rangeChecked":{"type":"boolean"},"rangeClassification":{"description":"Always convention: the ~2x house-height proximity range is not in the verified verse.","type":"string"},"rangeSource":{"description":"Owner of the proximity range: \"Vedika convention (not a verified verse)\", the same owner the note names.","type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"source":{"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"verdict":{"type":"string"},"verified":{"type":"boolean"}},"required":["input","matchedFeature","effect","rangeChecked","inRange","houseHeightMultiples","verdict","note","source","sources","verified","computed","classification"],"type":"object"},"VastuOperationRequest":{"description":"Typed common Vastu building inputs. Send only fields documented for the selected operation.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"datetime":{"format":"date-time","type":"string"},"doorXY":{"description":"Local Cartesian [x, y] point: +X is east, +Y is north. Do NOT send latitude/longitude.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"latitude":{"maximum":90,"minimum":-90,"type":"number"},"longitude":{"maximum":180,"minimum":-180,"type":"number"},"plot":{"properties":{"facing":{"type":"string"},"length":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"polygon":{"description":"Local Cartesian outline: +X is east, +Y is north. Do NOT send geographic coordinates or screen coordinates with +Y downward.","items":{"description":"Local Cartesian [x, y] point: +X is east, +Y is north. Do NOT send latitude/longitude.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"width":{"exclusiveMinimum":true,"minimum":0,"type":"number"}},"type":"object"},"plotPolygon":{"description":"Local Cartesian outline: +X is east, +Y is north. Do NOT send geographic coordinates or screen coordinates with +Y downward.","items":{"description":"Local Cartesian [x, y] point: +X is east, +Y is north. Do NOT send latitude/longitude.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"polygon":{"description":"Local Cartesian outline: +X is east, +Y is north. Do NOT send geographic coordinates or screen coordinates with +Y downward.","items":{"description":"Local Cartesian [x, y] point: +X is east, +Y is north. Do NOT send latitude/longitude.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"required":["name"],"type":"object"},"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"type":"object"},"VastuOperationResponse":{"properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"description":"Operation-specific typed result documented by the selected operation.","type":"object"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuOptimizationConstraints":{"additionalProperties":false,"properties":{"columns":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"}},"required":["polygon"],"type":"object"},"maxItems":128,"type":"array"},"loadBearingWalls":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"}},"required":["polygon"],"type":"object"},"maxItems":128,"type":"array"},"lockedRooms":{"items":{"type":"string"},"type":"array"},"minSizes":{"additionalProperties":{"additionalProperties":false,"properties":{"minAreaM2":{"minimum":0,"type":"number"},"minHeightM":{"minimum":0,"type":"number"},"minWidthM":{"minimum":0,"type":"number"}},"required":[],"type":"object"},"type":"object"},"plumbingStacks":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"maxDistanceM":{"minimum":0,"type":"number"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"roomIds":{"items":{"type":"string"},"type":"array"}},"required":["id","polygon"],"type":"object"},"maxItems":64,"type":"array"},"wetShafts":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"maxDistanceM":{"minimum":0,"type":"number"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"roomIds":{"items":{"type":"string"},"type":"array"}},"required":["id","polygon"],"type":"object"},"maxItems":64,"type":"array"}},"required":[],"type":"object"},"VastuOverallScoreData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"basis":{"type":"string"},"formula":{"type":"string"},"grade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"gradeLabel":{"nullable":true,"type":"string"},"indexType":{"type":"string"},"input":{"additionalProperties":true,"type":"object"},"maxScore":{"type":"number"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"notAssessed":{"description":"Recognised spaces with no placement rule (balcony, parking, garage, lift, lobby, corridor, terrace, verandah, porch, sit-out, utility, wash area, garden, lawn, courtyard, shaft, duct). Listed, never graded, never counted in the score.","items":{"additionalProperties":false,"properties":{"graded":{"enum":[false],"type":"boolean"},"reason":{"enum":["no placement rule for this space type"],"type":"string"},"room":{"type":"string"},"zone":{"type":"string"}},"required":["room","zone","reason","graded"],"type":"object"},"type":"array"},"placements":{"items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"compliant":{"type":"boolean"},"computed":{"type":"boolean"},"demerit":{"type":"number"},"issue":{"description":"Placement finding, or the unrecognised-input message when the room or zone is not a standard label (the remedy fields are then null).","type":"string"},"merit":{"type":"number"},"recommendedZone":{"nullable":true,"type":"string"},"remedy":{"nullable":true,"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"remedyType":{"nullable":true,"type":"string"},"room":{"type":"string"},"ruleProvenance":{"additionalProperties":true,"type":"object"},"severity":{"type":"string"},"source":{"description":"Provenance of the placement rule (not of the remedy).","type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"weight":{"type":"integer"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"receipt":{"properties":{"format":{"enum":["JWS"],"type":"string"},"keyUrl":{"format":"uri","type":"string"},"token":{"maxLength":16384,"type":"string"},"verifyUrl":{"format":"uri","type":"string"}},"required":["format","token","verifyUrl","keyUrl"],"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"score":{"nullable":true,"type":"number"},"scoreBreakdown":{"additionalProperties":true,"type":"object"},"scoreNote":{"description":"Present when no room was graded; score and grade are then null.","type":"string"},"scoring":{"additionalProperties":false,"properties":{"basis":{"type":"string"},"classification":{"type":"string"},"comparisonBasis":{"type":"string"},"duplicatePlacementCount":{"minimum":0,"type":"integer"},"formula":{"type":"string"},"inputPlacementCount":{"minimum":0,"type":"integer"},"uniquePlacementCount":{"minimum":0,"type":"integer"},"unit":{"type":"string"},"verified":{"enum":[false],"type":"boolean"},"version":{"type":"string"}},"required":["version","unit","formula","basis","comparisonBasis","classification","inputPlacementCount","uniquePlacementCount","duplicatePlacementCount","verified"],"type":"object"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"system":{"type":"string"},"tradition":{"type":"string"},"verdict":{"nullable":true,"type":"string"},"verified":{"type":"boolean"}},"required":["score","grade","placements","sources","verified","scoring"],"type":"object"},"VastuPlacementBalconyRequest":{"additionalProperties":true,"description":"Source-derived request for placement/balcony. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuPlacementBalconyResponse":{"description":"Typed success envelope for placement/balcony.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlacementData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlacementBorewellRequest":{"additionalProperties":true,"description":"Source-derived request for placement/borewell. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuPlacementBorewellResponse":{"description":"Typed success envelope for placement/borewell.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlacementData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlacementData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"acceptableZones":{"description":"Every zone this endpoint grades acceptable: the zones its rule lists as permitted, plus each zone the rule neither prescribes nor forbids. idealZones, acceptableZones and forbiddenZones Vedika AI name each of the nine zones once.","items":{"type":"string"},"type":"array"},"deity":{"type":"string"},"deityClassification":{"description":"classical only when the zone deity sits in the matching row of the Brihat Samhita 53.43-48 roster.","enum":["classical","convention"],"type":"string"},"deitySource":{"type":"string"},"element":{"type":"string"},"elementSource":{"description":"The verse behind a verified element label, or the convention note for an unverified one.","type":"string"},"elementVerified":{"type":"boolean"},"feature":{"type":"string"},"forbiddenZones":{"items":{"type":"string"},"type":"array"},"idealZones":{"items":{"type":"string"},"type":"array"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"principle":{"type":"string"},"proposedZone":{"type":"string"},"reason":{"type":"string"},"remedy":{"nullable":true,"type":"string"},"remedyType":{"nullable":true,"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"severity":{"type":"string"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"system":{"type":"string"},"tradition":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verdict":{"type":"string"},"verified":{"type":"boolean"}},"required":["system","method","feature","proposedZone","verdict","severity","idealZones","acceptableZones","forbiddenZones","deity","element","elementVerified","principle","reason","remedy","remedyType","sources","verified","meta"],"type":"object"},"VastuPlacementGardenRequest":{"additionalProperties":true,"description":"Source-derived request for placement/garden. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuPlacementGardenResponse":{"description":"Typed success envelope for placement/garden.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlacementData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlacementGeneratorElectricalRequest":{"additionalProperties":true,"description":"Source-derived request for placement/generator-electrical. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuPlacementGeneratorElectricalResponse":{"description":"Typed success envelope for placement/generator-electrical.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlacementData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlacementMainGateRequest":{"additionalProperties":true,"description":"Source-derived request for placement/main-gate. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"facing":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"pada":{"maximum":9,"minimum":1,"type":"integer"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":["facing"],"type":"object"},"VastuPlacementMainGateResponse":{"description":"Typed success envelope for placement/main-gate.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuMainGateData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlacementOverheadTankRequest":{"additionalProperties":true,"description":"Source-derived request for placement/overhead-tank. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuPlacementOverheadTankResponse":{"description":"Typed success envelope for placement/overhead-tank.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlacementData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlacementSepticTankRequest":{"additionalProperties":true,"description":"Source-derived request for placement/septic-tank. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuPlacementSepticTankResponse":{"description":"Typed success envelope for placement/septic-tank.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlacementData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlacementTreeRequest":{"additionalProperties":true,"description":"Source-derived request for placement/tree. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuPlacementTreeResponse":{"description":"Typed success envelope for placement/tree.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlacementData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlacementWellRequest":{"additionalProperties":true,"description":"Source-derived request for placement/well. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuPlacementWellResponse":{"description":"Typed success envelope for placement/well.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlacementData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlacementWindowRequest":{"additionalProperties":true,"description":"Source-derived request for placement/window. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuPlacementWindowResponse":{"description":"Typed success envelope for placement/window.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlacementData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanAnalyzeRequest":{"additionalProperties":true,"description":"Source-derived request for plan/analyze. Fields not listed here are ignored. Explicit units/inputUnits is recommended for interchange. Omitted units retain legacy coordinate behavior.","properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"importReview":{"properties":{"analysisReady":{"type":"boolean"},"coordinateFrame":{"enum":["north-up","drawing-up"],"type":"string"},"northKnown":{"type":"boolean"},"scaleKnown":{"type":"boolean"},"units":{"enum":["m","drawing-units"],"type":"string"}},"required":["northKnown","scaleKnown","analysisReady","coordinateFrame","units"],"type":"object"},"inputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"plot":{"additionalProperties":true,"type":"object"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"receipt":{"default":false,"description":"Return a signed Ed25519 JWS receipt. Missing signing key returns 503 before billing.","type":"boolean"},"rooms":{"items":{"additionalProperties":false,"anyOf":[{"required":["name"]},{"required":["room"]},{"required":["roomType"]},{"required":["label"]}],"description":"Each room needs a label and EITHER a zone/direction, a rectangle {x, y, w, h} (w/h may be sent as width/height) that lies inside the plot frame (1% tolerance), or a polygon/outline. If a room carries both a zone and geometry (a rectangle or a polygon) that lies in a different zone of the plot, the geometry decides the zone: the room is scored there, roomByRoom shows statedZone and zoneConflict, and warnings lists it.","properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"h":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"height":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"label":{"type":"string"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"name":{"type":"string"},"outline":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"polygon":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"type":"string"},"w":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"width":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"minItems":1,"type":"array"},"rulesVersion":{"description":"Pin an immutable retained room-placement ruleset; omitted selects current. Geometry normalization is shared.","enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"units":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"zoneResolution":{"default":8,"description":"Compass subdivisions for the traced-outline sector reading (tracedGeometry). Used only with plot.polygon.","enum":[8,16,32],"type":"integer"}},"required":["rooms"],"type":"object"},"VastuPlanAnalyzeResponse":{"description":"Typed success envelope for plan/analyze.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanAuditData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"artifact":{"additionalProperties":false,"properties":{"content":{"description":"Complete HTML document containing escaped report text, findings and provenance. No scripts or remote assets.","type":"string"},"contentType":{"enum":["text/html; charset=utf-8","application/pdf"],"type":"string"},"encoding":{"enum":["base64"],"type":"string"},"filename":{"enum":["vastu-report.html","vastu-report.pdf"],"type":"string"}},"required":["contentType","filename","content"],"type":"object"},"defects":{"items":{"additionalProperties":true,"properties":{"issue":{"type":"string"},"mappedItems":{"items":{"additionalProperties":false,"properties":{"availability":{"enum":["in_stock","out_of_stock","on_request","unavailable"],"type":"string"},"itemId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"kind":{"enum":["sku","service"],"type":"string"},"label":{"maxLength":160,"minLength":1,"type":"string"},"link":{"format":"uri","maxLength":2048,"minLength":1,"nullable":true,"pattern":"^https://","type":"string"},"referralRef":{"maxLength":128,"minLength":1,"nullable":true,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"remedyKey":{"maxLength":160,"minLength":1,"type":"string"}},"required":["remedyKey","itemId","kind","label","availability"],"type":"object"},"type":"array"},"remedy":{"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"remedyType":{"type":"string"},"room":{"type":"string"},"severity":{"type":"string"},"source":{"description":"Provenance of the placement rule (not of the remedy).","type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"elementBalance":{"additionalProperties":true,"type":"object"},"facing":{"additionalProperties":true,"type":"object"},"grade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"gradeLabel":{"nullable":true,"type":"string"},"input":{"additionalProperties":true,"type":"object"},"inputUnits":{"type":"string"},"merchantCatalogId":{"type":"string"},"merchantCatalogRevision":{"format":"int64","minimum":1,"type":"integer"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"metresPerInputUnit":{"type":"number"},"notAssessed":{"description":"Recognised spaces with no placement rule (balcony, parking, garage, lift, lobby, corridor, terrace, verandah, porch, sit-out, utility, wash area, garden, lawn, courtyard, shaft, duct). Listed, never graded, never counted in the score.","items":{"additionalProperties":false,"properties":{"graded":{"enum":[false],"type":"boolean"},"reason":{"enum":["no placement rule for this space type"],"type":"string"},"room":{"type":"string"},"zone":{"type":"string"}},"required":["room","zone","reason","graded"],"type":"object"},"type":"array"},"overallScore":{"nullable":true,"type":"number"},"plotShape":{"additionalProperties":true,"description":"The plot-shape reading (shape, grade, notes). Null when the request declared no plot (rooms only): the shape of a plot that was not described is not guessed.","nullable":true,"type":"object"},"printReady":{"additionalProperties":true,"type":"object"},"provenance":{"additionalProperties":true,"type":"object"},"receipt":{"properties":{"format":{"enum":["JWS"],"type":"string"},"keyUrl":{"format":"uri","type":"string"},"token":{"maxLength":16384,"type":"string"},"verifyUrl":{"format":"uri","type":"string"}},"required":["format","token","verifyUrl","keyUrl"],"type":"object"},"remedies":{"items":{"additionalProperties":true,"properties":{"action":{"type":"string"},"mappedItems":{"items":{"additionalProperties":false,"properties":{"availability":{"enum":["in_stock","out_of_stock","on_request","unavailable"],"type":"string"},"itemId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"kind":{"enum":["sku","service"],"type":"string"},"label":{"maxLength":160,"minLength":1,"type":"string"},"link":{"format":"uri","maxLength":2048,"minLength":1,"nullable":true,"pattern":"^https://","type":"string"},"referralRef":{"maxLength":128,"minLength":1,"nullable":true,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"remedyKey":{"maxLength":160,"minLength":1,"type":"string"}},"required":["remedyKey","itemId","kind","label","availability"],"type":"object"},"type":"array"},"priority":{"type":"integer"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedyKey":{"maxLength":160,"minLength":1,"nullable":true,"type":"string"},"remedyParams":{"additionalProperties":true,"type":"object"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"remedyType":{"type":"string"},"room":{"type":"string"},"severity":{"type":"string"},"source":{"description":"Provenance of the placement rule (not of the remedy).","type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"roomByRoom":{"items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"computed":{"type":"boolean"},"defect":{"nullable":true,"type":"string"},"ideal":{"nullable":true,"type":"string"},"mappedItems":{"items":{"additionalProperties":false,"properties":{"availability":{"enum":["in_stock","out_of_stock","on_request","unavailable"],"type":"string"},"itemId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"kind":{"enum":["sku","service"],"type":"string"},"label":{"maxLength":160,"minLength":1,"type":"string"},"link":{"format":"uri","maxLength":2048,"minLength":1,"nullable":true,"pattern":"^https://","type":"string"},"referralRef":{"maxLength":128,"minLength":1,"nullable":true,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"remedyKey":{"maxLength":160,"minLength":1,"type":"string"}},"required":["remedyKey","itemId","kind","label","availability"],"type":"object"},"type":"array"},"remedy":{"nullable":true,"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"room":{"type":"string"},"ruleProvenance":{"additionalProperties":true,"type":"object"},"severity":{"type":"string"},"source":{"description":"Provenance of the placement rule (not of the remedy).","type":"string"},"statedZone":{"description":"Present only when the stated zone was contradicted by the room's geometry: the zone the caller stated. zone is then the geometry's.","type":"string"},"tradition":{"type":"string"},"verdict":{"type":"string"},"verified":{"type":"boolean"},"zone":{"type":"string"},"zoneConflict":{"description":"Present only when the stated zone was contradicted by the room's geometry.","enum":[true],"type":"boolean"},"zoneSource":{"type":"string"}},"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scoreDisclaimer":{"type":"string"},"scoreNote":{"description":"Present when no room was graded; score and grade are then null.","type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"summary":{"type":"string"},"system":{"type":"string"},"tracedGeometry":{"additionalProperties":true,"properties":{"region":{"additionalProperties":true,"properties":{"area":{"type":"number"},"brahmasthan":{"properties":{"basis":{"type":"string"},"netArea":{"type":"number"},"pole":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"poleInside":{"type":"boolean"}},"type":"object"},"centroid":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"centroidInside":{"type":"boolean"},"geometry":{"additionalProperties":true,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"type":"array"},"multipolygons":{"items":{"$ref":"#/components/schemas/VastuPlanRegion"},"type":"array"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"}},"type":"object"},"gridZones":{"items":{"properties":{"area":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"sectors":{"items":{"properties":{"area":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"}},"type":"object"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"units":{"type":"string"},"warnings":{"description":"One entry per room whose stated zone its own geometry contradicts (code stated-zone-contradicted-by-geometry): room, statedZone, geometryZone and usedZone. Present only when there is a contradiction.","items":{"additionalProperties":true,"type":"object"},"type":"array"},"zoneCompliance":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}},"required":["system","method","input","facing","plotShape","overallScore","grade","summary","zoneCompliance","roomByRoom","defects","remedies","elementBalance","sources","provenance","meta"],"type":"object"},"VastuPlanBhk":{"oneOf":[{"maximum":8.5,"minimum":0,"multipleOf":0.5,"type":"number"},{"description":"BHK numeric string, optionally followed by BHK, in half steps from 0 through 8.5. Runtime validates parsed bounds and half steps.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*(?:[bB][hH][kK])?\\s*$","type":"string"}]},"VastuPlanConvertUnitsData":{"properties":{"canonicalUnits":{"enum":["m"],"type":"string"},"inputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"metresPerInputUnit":{"type":"number"},"outputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"plan":{"type":"object"},"pricing":{"type":"object"},"scaleFactor":{"type":"number"},"units":{"type":"string"}},"required":["plan","inputUnits","outputUnits","scaleFactor","canonicalUnits"],"type":"object"},"VastuPlanConvertUnitsRequest":{"additionalProperties":false,"properties":{"inputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"outputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"plan":{"description":"Structured geometric plan. Preserves IDs, bearings and metric-suffixed fields.","type":"object"},"requestId":{"type":"string"}},"required":["plan","inputUnits","outputUnits"],"type":"object"},"VastuPlanConvertUnitsResponse":{"description":"Free deterministic unit conversion. No wallet debit on success or error.","properties":{"billing":{"properties":{"category":{"type":"string"},"charged":{"enum":[0],"type":"number"},"currency":{"enum":["USD"],"type":"string"},"endpoint":{"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPlanConvertUnitsData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanDimension":{"oneOf":[{"exclusiveMinimum":true,"minimum":0,"type":"number"},{"description":"Numeric string parsed as a finite number; must be > 0.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"VastuPlanExportDxfData":{"additionalProperties":true,"properties":{"contentType":{"type":"string"},"dimensionCount":{"type":"integer"},"dxf":{"type":"string"},"fileName":{"type":"string"},"findingCount":{"type":"integer"},"inputUnits":{"type":"string"},"metresPerInputUnit":{"type":"number"},"needsReview":{"type":"boolean"},"openingCount":{"type":"integer"},"pricing":{"additionalProperties":true,"description":"Paid cost arithmetic and settled debit; omitted by frozen previews.","type":"object"},"roomCount":{"type":"integer"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"trueNorthDeg":{"type":"number"},"units":{"type":"string"},"unitsCode":{"type":"integer"},"version":{"type":"string"},"zones":{"type":"integer"}},"required":["dxf","contentType","fileName","version","unitsCode","trueNorthDeg","zones","roomCount","openingCount","dimensionCount","findingCount","needsReview"],"type":"object"},"VastuPlanExportDxfRequest":{"additionalProperties":true,"description":" Explicit units/inputUnits is recommended for interchange. Omitted units retain legacy coordinate behavior.","properties":{"analysis":{"additionalProperties":true,"type":"object"},"inputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"maxChargeUsd":{"description":"Optional ceiling on the settled USD debit. Checked before charging.","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]{1,2})?$","type":"string"},"outputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"plan":{"additionalProperties":true,"type":"object"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"trueNorthDeg":{"description":"Clockwise bearing of true north from drawing +Y. Overrides file north.","exclusiveMaximum":true,"maximum":360,"minimum":0,"type":"number"},"units":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"unitsCode":{"maximum":24,"minimum":1,"type":"integer"},"zones":{"default":16,"enum":[8,16,32],"type":"integer"}},"required":["plan"],"type":"object"},"VastuPlanExportDxfResponse":{"description":"Paid CAD success envelope. Measured compute and delivery cost x4; USD-cent settlement has a $0.01 minimum. 4xx unbilled.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanExportDxfData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanExportIfcData":{"properties":{"canonicalUnits":{"enum":["m"],"type":"string"},"contentType":{"type":"string"},"fileName":{"type":"string"},"ifc":{"type":"string"},"inputUnits":{"type":"string"},"metresPerInputUnit":{"type":"number"},"outputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"pricing":{"type":"object"},"roomCount":{"type":"integer"},"schema":{"enum":["IFC4"],"type":"string"},"units":{"enum":["m"],"type":"string"}},"required":["ifc","schema","contentType","fileName","outputUnits","roomCount","canonicalUnits"],"type":"object"},"VastuPlanExportIfcRequest":{"properties":{"inputUnits":{"enum":["m","ft","mm","in"],"type":"string"},"maxChargeUsd":{"description":"Maximum successful charge, USD decimal string.","type":"string"},"outputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"plan":{"type":"object"},"units":{"enum":["m","ft","mm","in"],"type":"string"}},"required":["plan"],"type":"object"},"VastuPlanExportIfcResponse":{"description":"Paid CAD success envelope. Measured compute and delivery cost x4; USD-cent settlement has a $0.01 minimum. 4xx unbilled.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanExportIfcData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanFacing":{"description":"Caller-supplied compass direction. Accepts normalized English and Sanskrit direction aliases; CENTER and unknown directions are invalid.","pattern":"^(?:[^A-Za-z]*(?:[nN][^A-Za-z]*[eE]|[eE][^A-Za-z]*[nN][^A-Za-z]*[eE]|[nN][^A-Za-z]*[nN][^A-Za-z]*[eE]|[nN][^A-Za-z]*[wW]|[wW][^A-Za-z]*[nN][^A-Za-z]*[wW]|[nN][^A-Za-z]*[nN][^A-Za-z]*[wW]|[sS][^A-Za-z]*[wW]|[wW][^A-Za-z]*[sS][^A-Za-z]*[wW]|[sS][^A-Za-z]*[sS][^A-Za-z]*[wW]|[sS][^A-Za-z]*[eE]|[eE][^A-Za-z]*[sS][^A-Za-z]*[eE]|[sS][^A-Za-z]*[sS][^A-Za-z]*[eE]|[nN]|[nN][^A-Za-z]*[oO][^A-Za-z]*[rR][^A-Za-z]*[tT][^A-Za-z]*[hH]|[sS]|[sS][^A-Za-z]*[oO][^A-Za-z]*[uU][^A-Za-z]*[tT][^A-Za-z]*[hH]|[yY][^A-Za-z]*[aA][^A-Za-z]*[mM][^A-Za-z]*[aA]|[eE]|[eE][^A-Za-z]*[aA][^A-Za-z]*[sS][^A-Za-z]*[tT]|[iI][^A-Za-z]*[nN][^A-Za-z]*[dD][^A-Za-z]*[rR][^A-Za-z]*[aA]|[wW]|[wW][^A-Za-z]*[eE][^A-Za-z]*[sS][^A-Za-z]*[tT])[^A-Za-z]*|[\\s\\S]*(?:[nN][^A-Za-z]*[oO][^A-Za-z]*[rR][^A-Za-z]*[tT][^A-Za-z]*[hH][^A-Za-z]*[eE][^A-Za-z]*[aA][^A-Za-z]*[sS][^A-Za-z]*[tT]|[iI][^A-Za-z]*[sS][^A-Za-z]*[hH][^A-Za-z]*[aA][^A-Za-z]*[nN]|[nN][^A-Za-z]*[oO][^A-Za-z]*[rR][^A-Za-z]*[tT][^A-Za-z]*[hH][^A-Za-z]*[wW][^A-Za-z]*[eE][^A-Za-z]*[sS][^A-Za-z]*[tT]|[vV][^A-Za-z]*[aA][^A-Za-z]*[yY][^A-Za-z]*[aA][^A-Za-z]*[vV]|[sS][^A-Za-z]*[oO][^A-Za-z]*[uU][^A-Za-z]*[tT][^A-Za-z]*[hH][^A-Za-z]*[wW][^A-Za-z]*[eE][^A-Za-z]*[sS][^A-Za-z]*[tT]|[nN][^A-Za-z]*[aA][^A-Za-z]*[iI][^A-Za-z]*[rR][^A-Za-z]*[uU]|[pP][^A-Za-z]*[iI][^A-Za-z]*[tT][^A-Za-z]*[rR][^A-Za-z]*[uU]|[sS][^A-Za-z]*[oO][^A-Za-z]*[uU][^A-Za-z]*[tT][^A-Za-z]*[hH][^A-Za-z]*[eE][^A-Za-z]*[aA][^A-Za-z]*[sS][^A-Za-z]*[tT]|[aA][^A-Za-z]*[gG][^A-Za-z]*[nN][^A-Za-z]*[eE][^A-Za-z]*[yY]|[aA][^A-Za-z]*[gG][^A-Za-z]*[nN][^A-Za-z]*[iI]|[kK][^A-Za-z]*[uU][^A-Za-z]*[bB][^A-Za-z]*[eE][^A-Za-z]*[rR]|[uU][^A-Za-z]*[tT][^A-Za-z]*[tT][^A-Za-z]*[aA][^A-Za-z]*[rR]|[dD][^A-Za-z]*[aA][^A-Za-z]*[kK][^A-Za-z]*[sS][^A-Za-z]*[hH][^A-Za-z]*[iI][^A-Za-z]*[nN]|[pP][^A-Za-z]*[uU][^A-Za-z]*[rR][^A-Za-z]*[vV][^A-Za-z]*[aA]|[vV][^A-Za-z]*[aA][^A-Za-z]*[rR][^A-Za-z]*[uU][^A-Za-z]*[nN]|[pP][^A-Za-z]*[aA][^A-Za-z]*[sS][^A-Za-z]*[cC][^A-Za-z]*[hH][^A-Za-z]*[iI][^A-Za-z]*[mM])[\\s\\S]*)$","type":"string"},"VastuPlanFloorCount":{"oneOf":[{"maximum":5,"minimum":1,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 1 and <= 5.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"VastuPlanFloorProgramme":{"description":"One entry per storey, levels 0 (ground) upward without gaps. Each storey lists rooms or a room brief. A staircase is added to every storey unless staircase or core.staircase is false; the staircase and any lifts keep one zone and one footprint on every floor. Parking is ground floor only.","items":{"additionalProperties":false,"oneOf":[{"required":["rooms"]},{"required":["requirements"]},{"required":["brief"]}],"properties":{"brief":{"$ref":"#/components/schemas/VastuPlanRoomBrief"},"label":{"maxLength":60,"type":"string"},"level":{"description":"Storey index; defaults to the entry's position.","maximum":4,"minimum":0,"type":"integer"},"requirements":{"$ref":"#/components/schemas/VastuPlanRoomBrief"},"rooms":{"items":{"additionalProperties":false,"properties":{"area":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanDimension"},{"enum":[null],"nullable":true,"type":"number"}]},"direction":{"type":"string"},"floor":{"$ref":"#/components/schemas/VastuPlanRoomFloor"},"name":{"minLength":1,"pattern":"\\S","type":"string"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"roomType":{"type":"string"},"type":{"type":"string"},"zone":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanFacing"},{"enum":[null],"nullable":true,"type":"string"}]}},"required":["name"],"type":"object"},"minItems":1,"type":"array"}},"type":"object"},"maxItems":5,"minItems":1,"type":"array"},"VastuPlanFromRequirementsRequest":{"additionalProperties":true,"allOf":[{"anyOf":[{"required":["plot"]},{"allOf":[{"not":{"required":["plot"]}},{"required":["width","facing"]},{"anyOf":[{"required":["length"]},{"required":["depth"]},{"required":["height"]}]}]}]},{"oneOf":[{"allOf":[{"required":["rooms"]},{"not":{"anyOf":[{"required":["requirements"]},{"required":["brief"]},{"required":["bhk"]},{"required":["configuration"]},{"required":["bhkType"]},{"required":["bedrooms"]},{"required":["bathrooms"]},{"required":["toilets"]},{"properties":{"floors":{"type":"array"}},"required":["floors"]}]}}]},{"allOf":[{"required":["requirements"]},{"not":{"anyOf":[{"required":["rooms"]},{"required":["brief"]},{"required":["bhk"]},{"required":["configuration"]},{"required":["bhkType"]},{"required":["bedrooms"]},{"required":["bathrooms"]},{"required":["toilets"]},{"properties":{"floors":{"type":"array"}},"required":["floors"]}]}}]},{"allOf":[{"required":["brief"]},{"not":{"anyOf":[{"required":["rooms"]},{"required":["requirements"]},{"required":["bhk"]},{"required":["configuration"]},{"required":["bhkType"]},{"required":["bedrooms"]},{"required":["bathrooms"]},{"required":["toilets"]},{"properties":{"floors":{"type":"array"}},"required":["floors"]}]}}]},{"allOf":[{"$ref":"#/components/schemas/VastuPlanRoomBrief"},{"not":{"anyOf":[{"required":["rooms"]},{"required":["requirements"]},{"required":["brief"]},{"properties":{"floors":{"type":"array"}},"required":["floors"]}]}}]},{"allOf":[{"properties":{"floors":{"type":"array"}},"required":["floors"]},{"not":{"anyOf":[{"required":["rooms"]},{"required":["requirements"]},{"required":["brief"]},{"required":["bhk"]},{"required":["configuration"]},{"required":["bhkType"]},{"required":["bedrooms"]},{"required":["bathrooms"]},{"required":["toilets"]}]}}]}]}],"description":"Requires caller-supplied physical plot dimensions and facing, nested under plot or at the root, and exactly one programme: nonempty rooms, requirements, brief, or root-level brief fields. Core programme choices are explicit; BHK encodes living, kitchen and half-room study choices. Fields not listed here are ignored. Explicit units/inputUnits is recommended for interchange. Omitted units retain legacy coordinate behavior.","properties":{"additionalRooms":{"items":{"oneOf":[{"minLength":1,"type":"string"},{"additionalProperties":true,"type":"object"}]},"type":"array"},"areas":{"additionalProperties":{"$ref":"#/components/schemas/VastuPlanDimension"},"type":"object"},"balconies":{"oneOf":[{"maximum":6,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 6.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"bathrooms":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"bedrooms":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"bhk":{"$ref":"#/components/schemas/VastuPlanBhk"},"bhkType":{"$ref":"#/components/schemas/VastuPlanBhk"},"brief":{"$ref":"#/components/schemas/VastuPlanRoomBrief"},"carParking":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"configuration":{"$ref":"#/components/schemas/VastuPlanBhk"},"core":{"additionalProperties":false,"description":"Multi-floor spelling of the top-level staircase and lift specs; do not send both.","properties":{"lift":{"oneOf":[{"oneOf":[{"maximum":4,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 4.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},{"type":"boolean"},{"additionalProperties":true,"type":"object"}]},"staircase":{"description":"true/1 adds one staircase, false/0 declines it, or an object { type, width, area, zone }. On a multi-floor plan a staircase is added to every storey unless this is false.","oneOf":[{"type":"boolean"},{"maximum":1,"minimum":0,"type":"integer"},{"additionalProperties":true,"type":"object"}]}},"type":"object"},"corners":{"$ref":"#/components/schemas/VastuPlanPolygon"},"depth":{"$ref":"#/components/schemas/VastuPlanDimension"},"entrance":{"additionalProperties":true,"type":"object"},"facing":{"$ref":"#/components/schemas/VastuPlanFacing"},"floors":{"description":"A number is the storey count of a room brief. An array is a per-storey programme (multi-floor plan).","oneOf":[{"$ref":"#/components/schemas/VastuPlanFloorCount"},{"$ref":"#/components/schemas/VastuPlanFloorProgramme"}]},"hasBalcony":{"type":"boolean"},"hasDining":{"type":"boolean"},"hasGuest":{"type":"boolean"},"hasKitchen":{"type":"boolean"},"hasLift":{"type":"boolean"},"hasLiving":{"type":"boolean"},"hasOffice":{"type":"boolean"},"hasParking":{"type":"boolean"},"hasPooja":{"type":"boolean"},"hasServant":{"type":"boolean"},"hasStaircase":{"type":"boolean"},"hasStore":{"type":"boolean"},"hasStudy":{"type":"boolean"},"hasUtility":{"type":"boolean"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"height":{"$ref":"#/components/schemas/VastuPlanDimension"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"homeOffice":{"type":"boolean"},"includeSvg":{"default":true,"description":"Set false to skip rendering and returning all SVG drawings while keeping geometry, openings, scores and ranking unchanged.","type":"boolean"},"inputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"length":{"$ref":"#/components/schemas/VastuPlanDimension"},"lift":{"oneOf":[{"oneOf":[{"maximum":4,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 4.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},{"type":"boolean"},{"additionalProperties":true,"type":"object"}]},"lifts":{"oneOf":[{"maximum":4,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 4.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"parking":{"oneOf":[{"$ref":"#/components/schemas/VastuPlanRoomCount"},{"type":"boolean"},{"additionalProperties":true,"type":"object"}]},"plot":{"$ref":"#/components/schemas/VastuPlanPhysicalPlot"},"plotPolygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"requirements":{"$ref":"#/components/schemas/VastuPlanRoomBrief"},"rooms":{"items":{"additionalProperties":false,"properties":{"area":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanDimension"},{"enum":[null],"nullable":true,"type":"number"}]},"direction":{"type":"string"},"floor":{"$ref":"#/components/schemas/VastuPlanRoomFloor"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"name":{"minLength":1,"pattern":"\\S","type":"string"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"type":{"type":"string"},"zone":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanFacing"},{"enum":[null],"nullable":true,"type":"string"}]}},"required":["name"],"type":"object"},"minItems":1,"type":"array"},"servantRoom":{"type":"boolean"},"setback":{"$ref":"#/components/schemas/VastuPlanSetbacks"},"setbacks":{"$ref":"#/components/schemas/VastuPlanSetbacks"},"staircase":{"description":"true/1 adds one staircase, false/0 declines it, or an object { type, width, area, zone }. On a multi-floor plan a staircase is added to every storey unless this is false.","oneOf":[{"type":"boolean"},{"maximum":1,"minimum":0,"type":"integer"},{"additionalProperties":true,"type":"object"}]},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"toilets":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"units":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"utility":{"type":"boolean"},"variantSvg":{"type":"boolean"},"variants":{"maximum":3,"minimum":1,"type":"integer"},"width":{"$ref":"#/components/schemas/VastuPlanDimension"}},"type":"object"},"VastuPlanFromRequirementsResponse":{"description":"Typed success envelope for plan/from-requirements.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanGenerateData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanGenerateData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"architecturalRooms":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"compliance":{"additionalProperties":true,"type":"object"},"core":{"additionalProperties":true,"description":"Multi-floor plans only: the staircase/lift core zone and footprint shared by every storey, or a warning when the request declined a staircase.","type":"object"},"derivedRoomProgramme":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"entrance":{"additionalProperties":true,"description":"The main door. line holds its two ends on the real plot edge; onPlotBoundary says whether it lies on the traced outline; movedToOutline is the distance it was moved in from the bounding-box wall to reach a traced edge, or null.","type":"object"},"floorNote":{"type":"string"},"floors":{"description":"Multi-floor plans only: one entry per storey with its rooms, compliance, utilisation and, unless includeSvg is false, its own drawing.","items":{"additionalProperties":true,"type":"object"},"type":"array"},"input":{"additionalProperties":true,"type":"object"},"inputUnits":{"type":"string"},"mandala":{"additionalProperties":true,"type":"object"},"merchantCatalogId":{"type":"string"},"merchantCatalogRevision":{"format":"int64","minimum":1,"type":"integer"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"metresPerInputUnit":{"type":"number"},"openings":{"additionalProperties":true,"type":"object"},"plot":{"additionalProperties":true,"description":"The plot as generated: area is the declared width x length, tracedArea the area the outline encloses, buildableArea what remains after setbacks, and dimensionsFromPolygon is true when width or length came from the traced outline.","type":"object"},"plotRegion":{"additionalProperties":true,"properties":{"area":{"type":"number"},"brahmasthan":{"properties":{"basis":{"type":"string"},"netArea":{"type":"number"},"pole":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"poleInside":{"type":"boolean"}},"type":"object"},"centroid":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"centroidInside":{"type":"boolean"},"geometry":{"additionalProperties":true,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"type":"array"},"multipolygons":{"items":{"$ref":"#/components/schemas/VastuPlanRegion"},"type":"array"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"}},"type":"object"},"gridZones":{"items":{"properties":{"area":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"sectors":{"items":{"properties":{"area":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"recommendedVariant":{"type":"string"},"requirements":{"additionalProperties":true,"type":"object"},"roomProgrammeNote":{"type":"string"},"rooms":{"description":"Placed rooms. Each room's polygon is its footprint in plot units; rect is the largest axis-aligned rectangle inside it; footprint is \"rectangle\" or \"follows-plot-outline\" (the room extends to a slanted or stepped plot boundary); placedArea is the footprint area; floor is the storey.","items":{"additionalProperties":true,"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"svg":{"description":"Recommended drawing; omitted when includeSvg is false.","type":"string"},"system":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"units":{"type":"string"},"variantCount":{"type":"number"},"variantNote":{"type":"string"},"variants":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"verified":{"type":"boolean"},"verticalChecks":{"description":"Multi-floor plans only: stacking findings between a storey and the one beneath it (traditional Vastu convention, verified false).","items":{"additionalProperties":true,"type":"object"},"type":"array"}},"required":["plot","entrance","rooms","mandala","compliance","openings","variants","recommendedVariant"],"type":"object"},"VastuPlanGenerateRequest":{"additionalProperties":true,"allOf":[{"anyOf":[{"required":["plot"]},{"allOf":[{"not":{"required":["plot"]}},{"required":["width","facing"]},{"anyOf":[{"required":["length"]},{"required":["depth"]},{"required":["height"]}]}]}]},{"oneOf":[{"allOf":[{"required":["rooms"]},{"not":{"anyOf":[{"required":["requirements"]},{"required":["brief"]},{"required":["bhk"]},{"required":["configuration"]},{"required":["bhkType"]},{"required":["bedrooms"]},{"required":["bathrooms"]},{"required":["toilets"]},{"properties":{"floors":{"type":"array"}},"required":["floors"]}]}}]},{"allOf":[{"required":["requirements"]},{"not":{"anyOf":[{"required":["rooms"]},{"required":["brief"]},{"required":["bhk"]},{"required":["configuration"]},{"required":["bhkType"]},{"required":["bedrooms"]},{"required":["bathrooms"]},{"required":["toilets"]},{"properties":{"floors":{"type":"array"}},"required":["floors"]}]}}]},{"allOf":[{"required":["brief"]},{"not":{"anyOf":[{"required":["rooms"]},{"required":["requirements"]},{"required":["bhk"]},{"required":["configuration"]},{"required":["bhkType"]},{"required":["bedrooms"]},{"required":["bathrooms"]},{"required":["toilets"]},{"properties":{"floors":{"type":"array"}},"required":["floors"]}]}}]},{"allOf":[{"$ref":"#/components/schemas/VastuPlanRoomBrief"},{"not":{"anyOf":[{"required":["rooms"]},{"required":["requirements"]},{"required":["brief"]},{"properties":{"floors":{"type":"array"}},"required":["floors"]}]}}]},{"allOf":[{"properties":{"floors":{"type":"array"}},"required":["floors"]},{"not":{"anyOf":[{"required":["rooms"]},{"required":["requirements"]},{"required":["brief"]},{"required":["bhk"]},{"required":["configuration"]},{"required":["bhkType"]},{"required":["bedrooms"]},{"required":["bathrooms"]},{"required":["toilets"]}]}}]}]}],"description":"Requires caller-supplied physical plot dimensions and facing, nested under plot or at the root, and exactly one programme: nonempty rooms, requirements, brief, or root-level brief fields. Core programme choices are explicit; BHK encodes living, kitchen and half-room study choices. Fields not listed here are ignored. Explicit units/inputUnits is recommended for interchange. Omitted units retain legacy coordinate behavior.","properties":{"additionalRooms":{"items":{"oneOf":[{"minLength":1,"type":"string"},{"additionalProperties":true,"type":"object"}]},"type":"array"},"areas":{"additionalProperties":{"$ref":"#/components/schemas/VastuPlanDimension"},"type":"object"},"balconies":{"oneOf":[{"maximum":6,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 6.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"bathrooms":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"bedrooms":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"bhk":{"$ref":"#/components/schemas/VastuPlanBhk"},"bhkType":{"$ref":"#/components/schemas/VastuPlanBhk"},"brief":{"$ref":"#/components/schemas/VastuPlanRoomBrief"},"carParking":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"configuration":{"$ref":"#/components/schemas/VastuPlanBhk"},"core":{"additionalProperties":false,"description":"Multi-floor spelling of the top-level staircase and lift specs; do not send both.","properties":{"lift":{"oneOf":[{"oneOf":[{"maximum":4,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 4.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},{"type":"boolean"},{"additionalProperties":true,"type":"object"}]},"staircase":{"description":"true/1 adds one staircase, false/0 declines it, or an object { type, width, area, zone }. On a multi-floor plan a staircase is added to every storey unless this is false.","oneOf":[{"type":"boolean"},{"maximum":1,"minimum":0,"type":"integer"},{"additionalProperties":true,"type":"object"}]}},"type":"object"},"corners":{"$ref":"#/components/schemas/VastuPlanPolygon"},"depth":{"$ref":"#/components/schemas/VastuPlanDimension"},"entrance":{"additionalProperties":true,"type":"object"},"facing":{"$ref":"#/components/schemas/VastuPlanFacing"},"floors":{"description":"A number is the storey count of a room brief. An array is a per-storey programme (multi-floor plan).","oneOf":[{"$ref":"#/components/schemas/VastuPlanFloorCount"},{"$ref":"#/components/schemas/VastuPlanFloorProgramme"}]},"hasBalcony":{"type":"boolean"},"hasDining":{"type":"boolean"},"hasGuest":{"type":"boolean"},"hasKitchen":{"type":"boolean"},"hasLift":{"type":"boolean"},"hasLiving":{"type":"boolean"},"hasOffice":{"type":"boolean"},"hasParking":{"type":"boolean"},"hasPooja":{"type":"boolean"},"hasServant":{"type":"boolean"},"hasStaircase":{"type":"boolean"},"hasStore":{"type":"boolean"},"hasStudy":{"type":"boolean"},"hasUtility":{"type":"boolean"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"height":{"$ref":"#/components/schemas/VastuPlanDimension"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"homeOffice":{"type":"boolean"},"includeSvg":{"default":true,"description":"Set false to skip rendering and returning all SVG drawings while keeping geometry, openings, scores and ranking unchanged.","type":"boolean"},"inputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"length":{"$ref":"#/components/schemas/VastuPlanDimension"},"lift":{"oneOf":[{"oneOf":[{"maximum":4,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 4.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},{"type":"boolean"},{"additionalProperties":true,"type":"object"}]},"lifts":{"oneOf":[{"maximum":4,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 4.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"parking":{"oneOf":[{"$ref":"#/components/schemas/VastuPlanRoomCount"},{"type":"boolean"},{"additionalProperties":true,"type":"object"}]},"plot":{"$ref":"#/components/schemas/VastuPlanPhysicalPlot"},"plotPolygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"plotShape":{"description":"Optional shape label. \"rectangle\" (or \"rectangular\", \"square\", \"regular\") needs only width and length. \"irregular\" (or \"polygon\", \"custom\", \"l-shape\", \"cut\", \"triangle\", \"trapezoid\") requires the traced corners in polygon; without them the request is rejected instead of silently drawing a rectangle.","enum":["rectangle","rectangular","square","regular","irregular","polygon","custom","l-shape","l-shaped","cut","triangle","triangular","trapezoid","trapezium"],"type":"string"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"requirements":{"$ref":"#/components/schemas/VastuPlanRoomBrief"},"rooms":{"items":{"additionalProperties":false,"properties":{"area":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanDimension"},{"enum":[null],"nullable":true,"type":"number"}]},"direction":{"type":"string"},"floor":{"$ref":"#/components/schemas/VastuPlanRoomFloor"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"name":{"minLength":1,"pattern":"\\S","type":"string"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"type":{"type":"string"},"zone":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanFacing"},{"enum":[null],"nullable":true,"type":"string"}]}},"required":["name"],"type":"object"},"minItems":1,"type":"array"},"servantRoom":{"type":"boolean"},"setback":{"$ref":"#/components/schemas/VastuPlanSetbacks"},"setbacks":{"$ref":"#/components/schemas/VastuPlanSetbacks"},"shape":{"description":"Optional shape label. \"rectangle\" (or \"rectangular\", \"square\", \"regular\") needs only width and length. \"irregular\" (or \"polygon\", \"custom\", \"l-shape\", \"cut\", \"triangle\", \"trapezoid\") requires the traced corners in polygon; without them the request is rejected instead of silently drawing a rectangle.","enum":["rectangle","rectangular","square","regular","irregular","polygon","custom","l-shape","l-shaped","cut","triangle","triangular","trapezoid","trapezium"],"type":"string"},"staircase":{"description":"true/1 adds one staircase, false/0 declines it, or an object { type, width, area, zone }. On a multi-floor plan a staircase is added to every storey unless this is false.","oneOf":[{"type":"boolean"},{"maximum":1,"minimum":0,"type":"integer"},{"additionalProperties":true,"type":"object"}]},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"toilets":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"units":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"utility":{"type":"boolean"},"variantSvg":{"type":"boolean"},"variants":{"maximum":3,"minimum":1,"type":"integer"},"width":{"$ref":"#/components/schemas/VastuPlanDimension"}},"type":"object"},"VastuPlanGenerateResponse":{"description":"Typed success envelope for plan/generate.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanGenerateData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanImportData":{"description":"Editable extracted plan. Missing or unreliable north/scale stay null with needsReview. Pass plan directly to plan/analyze once review confirms metres and north-up coordinates.","properties":{"analysisReady":{"type":"boolean"},"confidence":{"additionalProperties":{"maximum":1,"minimum":0,"type":"number"},"type":"object"},"dimensions":{"items":{"properties":{"confidence":{"type":"number"},"end":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"start":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"text":{"type":"string"}},"required":["text","start","end","confidence"],"type":"object"},"type":"array"},"inputUnits":{"description":"Physical measurement unit, echoed in the result. Pixel/PDF coordinates still require calibration; this field alone never establishes scale.","enum":["m","ft","mm","in"],"type":"string"},"metresPerInputUnit":{"type":"number"},"needsReview":{"items":{"properties":{"field":{"type":"string"},"reason":{"type":"string"}},"required":["field","reason"],"type":"object"},"type":"array"},"north":{"properties":{"bearingDeg":{"nullable":true,"type":"number"},"confidence":{"type":"number"},"source":{"type":"string"}},"required":["bearingDeg","confidence","source"],"type":"object"},"plan":{"properties":{"entrance":{"nullable":true,"properties":{"end":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"kind":{"enum":["door","window","opening"],"type":"string"},"start":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"}},"required":["start","end","kind"],"type":"object"},"importReview":{"properties":{"analysisReady":{"type":"boolean"},"coordinateFrame":{"enum":["north-up","drawing-up"],"type":"string"},"northKnown":{"type":"boolean"},"scaleKnown":{"type":"boolean"},"units":{"enum":["m","drawing-units"],"type":"string"}},"required":["northKnown","scaleKnown","analysisReady","coordinateFrame","units"],"type":"object"},"openings":{"items":{"properties":{"end":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"kind":{"enum":["door","window","opening"],"type":"string"},"start":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"}},"required":["start","end","kind"],"type":"object"},"type":"array"},"plot":{"properties":{"length":{"nullable":true,"type":"number"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":129,"minItems":4,"type":"array"},"width":{"nullable":true,"type":"number"}},"required":["polygon","width","length"],"type":"object"},"rooms":{"items":{"properties":{"id":{"type":"string"},"label":{"type":"string"},"name":{"type":"string"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":129,"minItems":4,"type":"array"},"roomType":{"type":"string"}},"required":["id","name","roomType","label","polygon"],"type":"object"},"type":"array"},"units":{"enum":["m","drawing-units"],"type":"string"}},"required":["plot","rooms","openings","entrance","importReview"],"type":"object"},"pricing":{"properties":{"attributableCost":{"type":"string"},"computeCost":{"type":"string"},"computedPrice":{"description":"Price from this extraction usage, before a native-ledger replay retains its original charge.","type":"string"},"currency":{"enum":["USD"],"type":"string"},"deliveryCost":{"description":"USD allocation for the measured imported data payload; shared HTTP/auth envelope excluded.","type":"string"},"markup":{"enum":[4],"type":"integer"},"modelCost":{"type":"string"},"price":{"type":"string"},"unit":{"enum":["image","selected-page"],"type":"string"},"walletRounding":{"type":"string"}},"required":["currency","attributableCost","modelCost","computeCost","markup","price","unit","walletRounding","computedPrice","deliveryCost"],"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scale":{"properties":{"metersPerUnit":{"nullable":true,"type":"number"},"source":{"type":"string"}},"required":["metersPerUnit","source"],"type":"object"},"source":{"properties":{"document":{"nullable":true,"properties":{"page":{"type":"integer"},"pageCount":{"type":"integer"}},"required":["page","pageCount"],"type":"object"},"method":{"enum":["vector","ocr","vision"],"type":"string"}},"required":["method","document"],"type":"object"},"units":{"enum":["m","drawing-units"],"type":"string"},"usage":{"properties":{"computeMicros":{"description":"Extraction elapsed time used to allocate compute and memory, including model wait.","format":"int64","type":"integer"},"cpuMicros":{"description":"Measured extraction CPU time, excluding model wait.","format":"int64","type":"integer"},"deliveryBytes":{"description":"Serialized imported data payload bytes; shared transport envelope excluded.","format":"int64","type":"integer"},"inputTokens":{"format":"int64","type":"integer"},"outputTokens":{"format":"int64","type":"integer"}},"required":["inputTokens","outputTokens","computeMicros","cpuMicros","deliveryBytes"],"type":"object"}},"required":["plan","north","scale","dimensions","confidence","needsReview","analysisReady","source","usage","pricing"],"type":"object"},"VastuPlanImportDxfData":{"additionalProperties":true,"properties":{"inputUnits":{"type":"string"},"mappingReport":{"items":{"additionalProperties":true,"properties":{"entityId":{"type":"string"},"entityType":{"type":"string"},"handle":{"nullable":true,"type":"string"},"layer":{"type":"string"},"parentId":{"description":"Source parent id for an attached attribute or polyline child.","type":"string"},"planIds":{"items":{"type":"string"},"type":"array"},"reason":{"nullable":true,"type":"string"},"role":{"type":"string"},"status":{"type":"string"},"stepId":{"type":"integer"}},"required":["entityId","entityType","status"],"type":"object"},"type":"array"},"metresPerInputUnit":{"type":"number"},"needsReview":{"type":"boolean"},"plan":{"additionalProperties":true,"properties":{"cadMetadata":{"additionalProperties":true,"type":"object"},"openings":{"additionalProperties":true,"properties":{"doors":{"items":{"additionalProperties":true,"properties":{"centre":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"id":{"type":"string"},"line":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"source":{"additionalProperties":true,"type":"object"},"type":{"type":"string"},"width":{"type":"number"}},"required":["id","type","line","width"],"type":"object"},"type":"array"},"units":{"type":"string"},"windows":{"items":{"additionalProperties":true,"properties":{"centre":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"id":{"type":"string"},"line":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"source":{"additionalProperties":true,"type":"object"},"type":{"type":"string"},"width":{"type":"number"}},"required":["id","type","line","width"],"type":"object"},"type":"array"}},"required":[],"type":"object"},"orientationDeg":{"type":"number"},"plot":{"additionalProperties":true,"properties":{"length":{"type":"number"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"units":{"type":"string"},"width":{"type":"number"}},"required":["width","length"],"type":"object"},"rooms":{"items":{"additionalProperties":true,"properties":{"area":{"type":"number"},"centre":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"h":{"type":"number"},"holes":{"items":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"type":"array"},"id":{"type":"string"},"labelEntityId":{"description":"Source TEXT, MTEXT or attribute entity id used to name this room.","type":"string"},"name":{"type":"string"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"source":{"additionalProperties":true,"type":"object"},"w":{"type":"number"},"x":{"type":"number"},"y":{"type":"number"}},"required":["id","name","polygon"],"type":"object"},"type":"array"},"trueNorthDeg":{"type":"number"},"units":{"type":"string"}},"required":["plot","rooms","trueNorthDeg","units"],"type":"object"},"pricing":{"additionalProperties":true,"description":"Paid cost arithmetic and settled debit; omitted by frozen previews.","type":"object"},"reviewReasons":{"items":{"additionalProperties":true,"properties":{"id":{"type":"string"},"reason":{"type":"string"}},"required":["reason"],"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"units":{"type":"string"}},"required":["plan","mappingReport","needsReview","reviewReasons"],"type":"object"},"VastuPlanImportDxfRequest":{"additionalProperties":true,"properties":{"contentType":{"type":"string"},"dxf":{"maxLength":1500000,"type":"string"},"fileName":{"type":"string"},"inputUnits":{"description":"Explicit input units; must agree with the drawing units. Unitless DXF uses this unit.","enum":["m","ft","mm","in"],"type":"string"},"layerRoles":{"additionalProperties":{"enum":["room","plot","door","window","label","hole","ignore"],"type":"string"},"type":"object"},"maxChargeUsd":{"description":"Optional ceiling on the settled USD debit. Checked before charging.","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]{1,2})?$","type":"string"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"trueNorthDeg":{"description":"Clockwise bearing of true north from drawing +Y. Overrides file north.","exclusiveMaximum":true,"maximum":360,"minimum":0,"type":"number"},"units":{"description":"Explicit input units; must agree with the drawing units. Unitless DXF uses this unit.","enum":["m","ft","mm","in"],"type":"string"},"unitsOverride":{"maximum":24,"minimum":1,"type":"integer"}},"required":["dxf"],"type":"object"},"VastuPlanImportDxfResponse":{"description":"Paid CAD success envelope. Measured compute and delivery cost x4; USD-cent settlement has a $0.01 minimum. 4xx unbilled.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanImportDxfData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanImportIfcData":{"additionalProperties":true,"properties":{"buildings":{"items":{"additionalProperties":true,"properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"type":"object"},"type":"array"},"inputUnits":{"type":"string"},"mappingReport":{"items":{"additionalProperties":true,"properties":{"entityId":{"type":"string"},"entityType":{"type":"string"},"handle":{"nullable":true,"type":"string"},"layer":{"type":"string"},"planIds":{"items":{"type":"string"},"type":"array"},"reason":{"nullable":true,"type":"string"},"role":{"type":"string"},"status":{"type":"string"},"stepId":{"type":"integer"},"storeyId":{"description":"Containing IfcBuildingStorey GlobalId when resolved.","nullable":true,"type":"string"}},"required":["entityId","entityType","status"],"type":"object"},"type":"array"},"metresPerInputUnit":{"type":"number"},"needsReview":{"type":"boolean"},"pricing":{"additionalProperties":true,"description":"Paid cost arithmetic and settled debit; omitted by frozen previews.","type":"object"},"reviewReasons":{"items":{"additionalProperties":true,"properties":{"id":{"type":"string"},"reason":{"type":"string"}},"required":["reason"],"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"schema":{"type":"string"},"storeys":{"items":{"additionalProperties":true,"properties":{"buildingId":{"nullable":true,"type":"string"},"elevationMetres":{"nullable":true,"type":"number"},"id":{"type":"string"},"name":{"type":"string"},"plan":{"additionalProperties":true,"properties":{"cadMetadata":{"additionalProperties":true,"type":"object"},"openings":{"additionalProperties":true,"properties":{"doors":{"items":{"additionalProperties":true,"properties":{"centre":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"id":{"type":"string"},"line":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"name":{"type":"string"},"openingHeight":{"description":"Opening height in metres when declared in IFC.","nullable":true,"type":"number"},"source":{"additionalProperties":true,"type":"object"},"type":{"type":"string"},"width":{"type":"number"}},"required":["id","type","line","width"],"type":"object"},"type":"array"},"units":{"type":"string"},"windows":{"items":{"additionalProperties":true,"properties":{"centre":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"id":{"type":"string"},"line":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"name":{"type":"string"},"openingHeight":{"description":"Opening height in metres when declared in IFC.","nullable":true,"type":"number"},"source":{"additionalProperties":true,"type":"object"},"type":{"type":"string"},"width":{"type":"number"}},"required":["id","type","line","width"],"type":"object"},"type":"array"}},"required":[],"type":"object"},"orientationDeg":{"type":"number"},"plot":{"additionalProperties":true,"properties":{"length":{"type":"number"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"units":{"type":"string"},"width":{"type":"number"}},"required":["width","length"],"type":"object"},"rooms":{"items":{"additionalProperties":true,"properties":{"area":{"type":"number"},"centre":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"h":{"type":"number"},"holes":{"items":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"type":"array"},"id":{"type":"string"},"name":{"type":"string"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"type":"array"},"source":{"additionalProperties":true,"type":"object"},"w":{"type":"number"},"x":{"type":"number"},"y":{"type":"number"}},"required":["id","name","polygon"],"type":"object"},"type":"array"},"trueNorthDeg":{"type":"number"},"units":{"type":"string"}},"required":["plot","rooms","trueNorthDeg","units"],"type":"object"}},"required":["id","name","buildingId","elevationMetres","plan"],"type":"object"},"type":"array"},"trueNorthDeg":{"type":"number"},"units":{"type":"string"}},"required":["schema","buildings","storeys","trueNorthDeg","mappingReport","needsReview","reviewReasons"],"type":"object"},"VastuPlanImportIfcRequest":{"additionalProperties":true,"properties":{"ifc":{"maxLength":1500000,"type":"string"},"inputUnits":{"description":"Explicit input units; must agree with the drawing units. Unitless DXF uses this unit.","enum":["m","ft","mm","in"],"type":"string"},"maxChargeUsd":{"description":"Optional ceiling on the settled USD debit. Checked before charging.","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]{1,2})?$","type":"string"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"trueNorthDeg":{"description":"Clockwise bearing of true north from drawing +Y. Overrides file north.","exclusiveMaximum":true,"maximum":360,"minimum":0,"type":"number"},"units":{"description":"Explicit input units; must agree with the drawing units. Unitless DXF uses this unit.","enum":["m","ft","mm","in"],"type":"string"}},"required":["ifc"],"type":"object"},"VastuPlanImportIfcResponse":{"description":"Paid CAD success envelope. Measured compute and delivery cost x4; USD-cent settlement has a $0.01 minimum. 4xx unbilled.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanImportIfcData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanImportImageRequest":{"additionalProperties":true,"properties":{"fileBase64":{"description":"Raw file bytes encoded as base64, without a data URL. Existing 5 MiB decoded upload limit.","format":"byte","maxLength":6990508,"type":"string"},"inputUnits":{"description":"Physical measurement unit, echoed in the result. Pixel/PDF coordinates still require calibration; this field alone never establishes scale.","enum":["m","ft","mm","in"],"type":"string"},"northBearingDeg":{"description":"Caller-confirmed north clockwise from drawing up. Never inferred when no legible arrow is drawn.","exclusiveMaximum":true,"maximum":360,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"scaleInputUnitsPerUnit":{"description":"Optional inputUnits (or units, default m) per original image pixel or displayed PDF point. Converted once to metres; must agree with scaleMetersPerUnit when both are supplied.","exclusiveMinimum":true,"minimum":0,"type":"number"},"scaleMetersPerUnit":{"description":"Caller-confirmed metres per original image pixel or displayed PDF point. Otherwise extracted only from legible dimension endpoints or scale bars.","exclusiveMinimum":true,"minimum":0,"type":"number"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"units":{"description":"Physical measurement unit, echoed in the result. Pixel/PDF coordinates still require calibration; this field alone never establishes scale.","enum":["m","ft","mm","in"],"type":"string"}},"required":["fileBase64"],"type":"object"},"VastuPlanImportImageResponse":{"description":"Paid useful-result envelope for plan/import-image.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanImportData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanImportPdfRequest":{"additionalProperties":true,"properties":{"fileBase64":{"description":"Raw file bytes encoded as base64, without a data URL. Existing 5 MiB decoded upload limit.","format":"byte","maxLength":6990508,"type":"string"},"inputUnits":{"description":"Physical measurement unit, echoed in the result. Pixel/PDF coordinates still require calibration; this field alone never establishes scale.","enum":["m","ft","mm","in"],"type":"string"},"northBearingDeg":{"description":"Caller-confirmed north clockwise from drawing up. Never inferred when no legible arrow is drawn.","exclusiveMaximum":true,"maximum":360,"minimum":0,"type":"number"},"page":{"description":"One selected page, numbered from 1; the document may contain at most 40 pages.","maximum":40,"minimum":1,"type":"integer"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"scaleInputUnitsPerUnit":{"description":"Optional inputUnits (or units, default m) per original image pixel or displayed PDF point. Converted once to metres; must agree with scaleMetersPerUnit when both are supplied.","exclusiveMinimum":true,"minimum":0,"type":"number"},"scaleMetersPerUnit":{"description":"Caller-confirmed metres per original image pixel or displayed PDF point. Otherwise extracted only from legible dimension endpoints or scale bars.","exclusiveMinimum":true,"minimum":0,"type":"number"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"units":{"description":"Physical measurement unit, echoed in the result. Pixel/PDF coordinates still require calibration; this field alone never establishes scale.","enum":["m","ft","mm","in"],"type":"string"}},"required":["fileBase64","page"],"type":"object"},"VastuPlanImportPdfResponse":{"description":"Paid useful-result envelope for plan/import-pdf.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanImportData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanNonnegativeNumber":{"oneOf":[{"minimum":0,"type":"number"},{"description":"Numeric string parsed as a finite number; must be >= 0.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"VastuPlanOptimizeData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"after":{"additionalProperties":true,"type":"object"},"before":{"additionalProperties":true,"type":"object"},"compliance":{"additionalProperties":true,"type":"object"},"entrance":{"additionalProperties":true,"type":"object"},"feasible":{"type":"boolean"},"improvement":{"additionalProperties":true,"type":"object"},"initialConstraintViolations":{"items":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"type":"array"},"inputUnits":{"type":"string"},"mandala":{"additionalProperties":true,"type":"object"},"merchantCatalogId":{"type":"string"},"merchantCatalogRevision":{"format":"int64","minimum":1,"type":"integer"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"metresPerInputUnit":{"type":"number"},"moves":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"openings":{"additionalProperties":true,"type":"object"},"plot":{"additionalProperties":true,"type":"object"},"plotRegion":{"additionalProperties":true,"properties":{"area":{"type":"number"},"brahmasthan":{"properties":{"basis":{"type":"string"},"netArea":{"type":"number"},"pole":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"poleInside":{"type":"boolean"}},"type":"object"},"centroid":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"centroidInside":{"type":"boolean"},"geometry":{"additionalProperties":true,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"type":"array"},"multipolygons":{"items":{"$ref":"#/components/schemas/VastuPlanRegion"},"type":"array"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"}},"type":"object"},"gridZones":{"items":{"properties":{"area":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"sectors":{"items":{"properties":{"area":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scoring":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"search":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"svg":{"description":"Recommended drawing; omitted when includeSvg is false.","type":"string"},"system":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"units":{"type":"string"},"unmetConstraints":{"items":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"type":"array"},"verified":{"type":"boolean"}},"required":["before","after","improvement","moves","mandala"],"type":"object"},"VastuPlanOptimizeRequest":{"additionalProperties":true,"allOf":[{"anyOf":[{"required":["plot"]},{"allOf":[{"not":{"required":["plot"]}},{"required":["width","facing"]},{"anyOf":[{"required":["length"]},{"required":["depth"]},{"required":["height"]}]}]}]},{"oneOf":[{"allOf":[{"required":["rooms"]},{"not":{"required":["layout"]}}]},{"allOf":[{"required":["layout"]},{"not":{"required":["rooms"]}}]}]},{"oneOf":[{"allOf":[{"not":{"anyOf":[{"required":["constraints"]},{"required":["lockedRooms"]},{"required":["wetShafts"]},{"required":["plumbingStacks"]},{"required":["loadBearingWalls"]},{"required":["columns"]},{"required":["minSizes"]},{"properties":{"rooms":{"not":{"items":{"not":{"required":["locked"]}}}}},"required":["rooms"]},{"properties":{"layout":{"not":{"items":{"not":{"required":["locked"]}}}}},"required":["layout"]}]}},{"properties":{"layout":{"items":{"required":["name","zone"]}},"rooms":{"items":{"required":["name","zone"]}}}}]},{"allOf":[{"anyOf":[{"required":["constraints"]},{"required":["lockedRooms"]},{"required":["wetShafts"]},{"required":["plumbingStacks"]},{"required":["loadBearingWalls"]},{"required":["columns"]},{"required":["minSizes"]},{"properties":{"rooms":{"not":{"items":{"not":{"required":["locked"]}}}}},"required":["rooms"]},{"properties":{"layout":{"not":{"items":{"not":{"required":["locked"]}}}}},"required":["layout"]}]},{"properties":{"layout":{"items":{"anyOf":[{"required":["id"]},{"required":["name"]}],"properties":{"id":{"minLength":1,"pattern":"\\S","type":"string"}},"required":["polygon"]},"maxItems":16},"plot":{"properties":{"units":{"enum":["m"]}},"required":["units"]},"rooms":{"items":{"anyOf":[{"required":["id"]},{"required":["name"]}],"properties":{"id":{"minLength":1,"pattern":"\\S","type":"string"}},"required":["polygon"]},"maxItems":16}},"required":["plot"]}]}]}],"description":"Optimizes exactly one caller-supplied rooms or layout array. Requires real plot width, length (or depth/height) and facing, nested under plot or at the root. No synthetic plot is created. Fields not listed here are ignored. With constraints or locked rooms, accepts 1-16 rooms with IDs and current polygons, plot.units=m and a buildable polygon/dimensions. Deterministic feasible move/atomic-swap/minimum-size-resize search. All sizes are metres; width/height minima refer to axis-aligned extents. Declared plot.setbacks/setback are applied with the existing cardinal/relative setback rules; relative setbacks require plot.facing. Locked room coordinates are preserved without rescaling. No random or global-optimality claim. Explicit units/inputUnits is recommended for interchange. Omitted units retain legacy coordinate behavior.","properties":{"columns":{"items":{"additionalProperties":false,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"id":{"type":"string"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"}},"required":[],"type":"object"},"maxItems":128,"type":"array"},"constraints":{"$ref":"#/components/schemas/VastuOptimizationConstraints"},"corners":{"$ref":"#/components/schemas/VastuPlanPolygon"},"depth":{"$ref":"#/components/schemas/VastuPlanDimension"},"facing":{"$ref":"#/components/schemas/VastuPlanFacing"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"height":{"$ref":"#/components/schemas/VastuPlanDimension"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"includeSvg":{"default":true,"description":"Set false to skip rendering and returning all SVG drawings while keeping geometry, openings, scores and ranking unchanged.","type":"boolean"},"inputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"layout":{"items":{"additionalProperties":false,"properties":{"area":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanDimension"},{"enum":[null],"nullable":true,"type":"number"}]},"direction":{"type":"string"},"floor":{"$ref":"#/components/schemas/VastuPlanRoomFloor"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"id":{"type":"string"},"locked":{"type":"boolean"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"name":{"minLength":1,"pattern":"\\S","type":"string"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"type":{"type":"string"},"zone":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanFacing"},{"pattern":"[\\s\\S]*(?:[cC][^A-Za-z]*[eE][^A-Za-z]*[nN][^A-Za-z]*[tT][^A-Za-z]*[eE][^A-Za-z]*[rR]|[cC][^A-Za-z]*[eE][^A-Za-z]*[nN][^A-Za-z]*[tT][^A-Za-z]*[rR][^A-Za-z]*[eE]|[bB][^A-Za-z]*[rR][^A-Za-z]*[aA][^A-Za-z]*[hH][^A-Za-z]*[mM][^A-Za-z]*[aA]|[mM][^A-Za-z]*[aA][^A-Za-z]*[dD][^A-Za-z]*[hH][^A-Za-z]*[yY][^A-Za-z]*[aA])[\\s\\S]*","type":"string"}]}},"type":"object"},"minItems":1,"type":"array"},"length":{"$ref":"#/components/schemas/VastuPlanDimension"},"loadBearingWalls":{"items":{"additionalProperties":false,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"id":{"type":"string"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"}},"required":[],"type":"object"},"maxItems":128,"type":"array"},"lockedRooms":{"items":{"type":"string"},"type":"array"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"minSizes":{"additionalProperties":{"additionalProperties":false,"properties":{"minAreaM2":{"minimum":0,"type":"number"},"minHeightM":{"minimum":0,"type":"number"},"minWidthM":{"minimum":0,"type":"number"}},"required":[],"type":"object"},"type":"object"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"plot":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanPhysicalPlot"},{"additionalProperties":true,"description":"Measured constrained layout plot. Declare polygons or both dimensions.","properties":{"facing":{"type":"string"},"length":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"setbacks":{"additionalProperties":{"minimum":0,"type":"number"},"type":"object"},"units":{"enum":["m"],"type":"string"},"width":{"exclusiveMinimum":true,"minimum":0,"type":"number"}},"required":["units"],"type":"object"}]},"plotPolygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"plumbingStacks":{"items":{"additionalProperties":false,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"id":{"type":"string"},"maxDistanceM":{"minimum":0,"type":"number"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"roomIds":{"items":{"type":"string"},"type":"array"}},"required":["id"],"type":"object"},"maxItems":64,"type":"array"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"properties":{"area":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanDimension"},{"enum":[null],"nullable":true,"type":"number"}]},"direction":{"type":"string"},"floor":{"$ref":"#/components/schemas/VastuPlanRoomFloor"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"id":{"type":"string"},"locked":{"type":"boolean"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"name":{"minLength":1,"pattern":"\\S","type":"string"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"type":{"type":"string"},"zone":{"anyOf":[{"$ref":"#/components/schemas/VastuPlanFacing"},{"pattern":"[\\s\\S]*(?:[cC][^A-Za-z]*[eE][^A-Za-z]*[nN][^A-Za-z]*[tT][^A-Za-z]*[eE][^A-Za-z]*[rR]|[cC][^A-Za-z]*[eE][^A-Za-z]*[nN][^A-Za-z]*[tT][^A-Za-z]*[rR][^A-Za-z]*[eE]|[bB][^A-Za-z]*[rR][^A-Za-z]*[aA][^A-Za-z]*[hH][^A-Za-z]*[mM][^A-Za-z]*[aA]|[mM][^A-Za-z]*[aA][^A-Za-z]*[dD][^A-Za-z]*[hH][^A-Za-z]*[yY][^A-Za-z]*[aA])[\\s\\S]*","type":"string"}]}},"type":"object"},"minItems":1,"type":"array"},"setback":{"$ref":"#/components/schemas/VastuPlanSetbacks"},"setbacks":{"$ref":"#/components/schemas/VastuPlanSetbacks"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"units":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"wetShafts":{"items":{"additionalProperties":false,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"id":{"type":"string"},"maxDistanceM":{"minimum":0,"type":"number"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"polygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"roomIds":{"items":{"type":"string"},"type":"array"}},"required":["id"],"type":"object"},"maxItems":64,"type":"array"},"width":{"$ref":"#/components/schemas/VastuPlanDimension"}},"type":"object"},"VastuPlanOptimizeResponse":{"description":"Typed success envelope for plan/optimize.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanOptimizeData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanPhysicalPlot":{"additionalProperties":false,"anyOf":[{"required":["width","length"]},{"required":["width","depth"]},{"required":["width","height"]},{"required":["polygon"]},{"required":["corners"]},{"required":["plotPolygon"]}],"description":"Plot dimensions and facing. With traced corners (polygon, corners or plotPolygon) width and length are optional: a missing one is taken from the outline's bounding box, and a single stated side scales the other by the outline's proportions. Corners may be in any units; they are normalised onto width x length.","properties":{"corners":{"$ref":"#/components/schemas/VastuPlanPolygon"},"depth":{"$ref":"#/components/schemas/VastuPlanDimension"},"facing":{"$ref":"#/components/schemas/VastuPlanFacing"},"height":{"$ref":"#/components/schemas/VastuPlanDimension"},"length":{"$ref":"#/components/schemas/VastuPlanDimension"},"plotPolygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"plotShape":{"description":"Optional shape label. \"rectangle\" (or \"rectangular\", \"square\", \"regular\") needs only width and length. \"irregular\" (or \"polygon\", \"custom\", \"l-shape\", \"cut\", \"triangle\", \"trapezoid\") requires the traced corners in polygon; without them the request is rejected instead of silently drawing a rectangle.","enum":["rectangle","rectangular","square","regular","irregular","polygon","custom","l-shape","l-shaped","cut","triangle","triangular","trapezoid","trapezium"],"type":"string"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"},"setback":{"$ref":"#/components/schemas/VastuPlanSetbacks"},"setbacks":{"$ref":"#/components/schemas/VastuPlanSetbacks"},"shape":{"description":"Optional shape label. \"rectangle\" (or \"rectangular\", \"square\", \"regular\") needs only width and length. \"irregular\" (or \"polygon\", \"custom\", \"l-shape\", \"cut\", \"triangle\", \"trapezoid\") requires the traced corners in polygon; without them the request is rejected instead of silently drawing a rectangle.","enum":["rectangle","rectangular","square","regular","irregular","polygon","custom","l-shape","l-shaped","cut","triangle","triangular","trapezoid","trapezium"],"type":"string"},"units":{"enum":["m","ft"],"type":"string"},"width":{"$ref":"#/components/schemas/VastuPlanDimension"}},"required":["facing"],"type":"object"},"VastuPlanPolygon":{"description":"Traced ring as [x, y] pairs or {x, y} objects. Coordinates must be finite numbers. Runtime also requires at least three distinct corners enclosing nonzero area.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":true,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"VastuPlanRegion":{"description":"Filled outer boundary minus disjoint interior rings. Voids must lie strictly inside.","properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"polygon":{"$ref":"#/components/schemas/VastuPlanPolygon"}},"required":["polygon"],"type":"object"},"VastuPlanReportRequest":{"additionalProperties":true,"description":"Source-derived request for plan/report. Fields not listed here are ignored. Explicit units/inputUnits is recommended for interchange. Omitted units retain legacy coordinate behavior.","properties":{"brand":{"additionalProperties":false,"properties":{"generatedFor":{"type":"string"},"reportTitle":{"type":"string"}},"type":"object"},"composition":{"additionalProperties":false,"properties":{"ctaBlocks":{"items":{"additionalProperties":false,"properties":{"label":{"maxLength":160,"minLength":1,"type":"string"},"link":{"format":"uri","maxLength":2048,"minLength":1,"pattern":"^https://","type":"string"},"phone":{"maxLength":40,"minLength":1,"nullable":true,"type":"string"}},"required":["label","link"],"type":"object"},"maxItems":8,"type":"array"},"intro":{"maxLength":4000,"minLength":1,"nullable":true,"type":"string"},"outro":{"maxLength":4000,"minLength":1,"nullable":true,"type":"string"},"sections":{"items":{"enum":["summary","facing","plot-shape","compliance","rooms","zones","defects","remedies","elements","sources"],"type":"string"},"maxItems":10,"minItems":1,"type":"array","uniqueItems":true}},"required":[],"type":"object"},"format":{"default":"json","description":"json returns report data; html adds escaped standalone HTML; pdf adds an existing-renderer PDF as base64 artifact.content. Composition applies to HTML and PDF. Render failure returns 503 without charge.","enum":["json","html","pdf"],"type":"string"},"generatedFor":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"inputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"plot":{"additionalProperties":true,"type":"object"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"reportTitle":{"type":"string"},"rooms":{"items":{"additionalProperties":false,"anyOf":[{"required":["name"]},{"required":["room"]},{"required":["roomType"]},{"required":["label"]}],"description":"Each room needs a label and EITHER a zone/direction, a rectangle {x, y, w, h} (w/h may be sent as width/height) that lies inside the plot frame (1% tolerance), or a polygon/outline.","properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"h":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"height":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"label":{"type":"string"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"name":{"type":"string"},"outline":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"polygon":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"type":"string"},"w":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"width":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"minItems":1,"type":"array"},"tenantName":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"units":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"}},"required":["rooms"],"type":"object"},"VastuPlanReportResponse":{"description":"Typed success envelope for plan/report.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlanRoomBrief":{"additionalProperties":true,"allOf":[{"anyOf":[{"required":["bedrooms"]},{"required":["bhk"]},{"required":["configuration"]},{"required":["bhkType"]}]}],"anyOf":[{"properties":{"inferMissing":{"enum":[true]}},"required":["inferMissing"]},{"allOf":[{"anyOf":[{"required":["toilets"]},{"required":["bathrooms"]}]},{"anyOf":[{"anyOf":[{"required":["bhk"]},{"required":["configuration"]},{"required":["bhkType"]}]},{"required":["hasLiving","hasKitchen","hasStudy"]}]}],"required":["floors","hasPooja","hasDining","hasStore","hasGuest","hasStaircase"]}],"description":"Room programme. By default all core counts and room decisions are caller-supplied: BHK may encode living, kitchen and half-room study choices, and no toilet, floor or core room-choice defaults are assumed. With inferMissing: true, only a bedroom count or BHK is required and every assumed value is listed in requirements.assumedFields.","properties":{"additionalRooms":{"items":{"oneOf":[{"minLength":1,"type":"string"},{"additionalProperties":true,"type":"object"}]},"type":"array"},"areas":{"additionalProperties":{"$ref":"#/components/schemas/VastuPlanDimension"},"type":"object"},"balconies":{"oneOf":[{"maximum":6,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 6.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"bathrooms":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"bedrooms":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"bhk":{"$ref":"#/components/schemas/VastuPlanBhk"},"bhkType":{"$ref":"#/components/schemas/VastuPlanBhk"},"carParking":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"configuration":{"$ref":"#/components/schemas/VastuPlanBhk"},"floors":{"$ref":"#/components/schemas/VastuPlanFloorCount"},"hasBalcony":{"type":"boolean"},"hasDining":{"type":"boolean"},"hasGuest":{"type":"boolean"},"hasKitchen":{"type":"boolean"},"hasLift":{"type":"boolean"},"hasLiving":{"type":"boolean"},"hasOffice":{"type":"boolean"},"hasParking":{"type":"boolean"},"hasPooja":{"type":"boolean"},"hasServant":{"type":"boolean"},"hasStaircase":{"type":"boolean"},"hasStore":{"type":"boolean"},"hasStudy":{"type":"boolean"},"hasUtility":{"type":"boolean"},"homeOffice":{"type":"boolean"},"inferMissing":{"default":false,"description":"Opt in to stated defaults for omitted fields: toilets (one per two bedrooms, at least one), floors (1), living and kitchen (true) and the other core room choices (false). A bedroom count or BHK is always required. Every assumed value is listed in the response's requirements.assumedFields.","type":"boolean"},"lift":{"oneOf":[{"maximum":4,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 4.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"lifts":{"oneOf":[{"maximum":4,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 4.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"parking":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"servantRoom":{"type":"boolean"},"toilets":{"$ref":"#/components/schemas/VastuPlanRoomCount"},"utility":{"type":"boolean"}},"type":"object"},"VastuPlanRoomCount":{"oneOf":[{"maximum":8,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 8.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"VastuPlanRoomFloor":{"oneOf":[{"maximum":20,"minimum":0,"type":"integer"},{"description":"Numeric string parsed as a finite integer; must be >= 0 and <= 20.","pattern":"^\\s*[+]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$","type":"string"}]},"VastuPlanSetbacks":{"additionalProperties":false,"properties":{"back":{"$ref":"#/components/schemas/VastuPlanNonnegativeNumber"},"east":{"$ref":"#/components/schemas/VastuPlanNonnegativeNumber"},"front":{"$ref":"#/components/schemas/VastuPlanNonnegativeNumber"},"left":{"$ref":"#/components/schemas/VastuPlanNonnegativeNumber"},"north":{"$ref":"#/components/schemas/VastuPlanNonnegativeNumber"},"rear":{"$ref":"#/components/schemas/VastuPlanNonnegativeNumber"},"right":{"$ref":"#/components/schemas/VastuPlanNonnegativeNumber"},"south":{"$ref":"#/components/schemas/VastuPlanNonnegativeNumber"},"west":{"$ref":"#/components/schemas/VastuPlanNonnegativeNumber"}},"type":"object"},"VastuPlanUploadRequest":{"additionalProperties":true,"description":"Source-derived request for plan/upload. Fields not listed here are ignored. Explicit units/inputUnits is recommended for interchange. Omitted units retain legacy coordinate behavior.","properties":{"asciiGrid":{"description":"A grid of room names, north at the top: one row per line, cells separated by \"|\", \",\" or two spaces. A cell is a room name, optionally with its zone (\"kitchen:SE\"); \".\" or \"-\" marks an empty cell. A bare zone code is not a room. Example: \"kitchen:NE | living:N\\npooja:NE | dining:E\\nbedroom:SW | toilet:SE\".","type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"inputUnits":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"},"layout":{"description":"The floor plan as an array of rooms (same items as rooms) or as an object {rooms, plot}. Send exactly one of rooms, layout or asciiGrid. An object layout may carry its own plot; do not also send a different top-level plot.","oneOf":[{"items":{"additionalProperties":false,"anyOf":[{"required":["name"]},{"required":["room"]},{"required":["roomType"]},{"required":["label"]}],"description":"Each room needs a label and EITHER a zone/direction, a rectangle {x, y, w, h} (w/h may be sent as width/height) that lies inside the plot frame (1% tolerance), or a polygon/outline.","properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"h":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"height":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"label":{"type":"string"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"name":{"type":"string"},"outline":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"polygon":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"room":{"type":"string"},"roomType":{"type":"string"},"w":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"width":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"type":"array"},{"additionalProperties":true,"properties":{"plot":{"additionalProperties":true,"type":"object"},"rooms":{"items":{"additionalProperties":false,"anyOf":[{"required":["name"]},{"required":["room"]},{"required":["roomType"]},{"required":["label"]}],"description":"Each room needs a label and EITHER a zone/direction, a rectangle {x, y, w, h} (w/h may be sent as width/height) that lies inside the plot frame (1% tolerance), or a polygon/outline.","properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"h":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"height":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"label":{"type":"string"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"name":{"type":"string"},"outline":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"polygon":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"room":{"type":"string"},"roomType":{"type":"string"},"w":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"width":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"type":"array"}},"required":["rooms"],"type":"object"}]},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"plot":{"additionalProperties":true,"type":"object"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"anyOf":[{"required":["name"]},{"required":["room"]},{"required":["roomType"]},{"required":["label"]}],"description":"Each room needs a label and EITHER a zone/direction, a rectangle {x, y, w, h} (w/h may be sent as width/height) that lies inside the plot frame (1% tolerance), or a polygon/outline.","properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"h":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"height":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"label":{"type":"string"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"name":{"type":"string"},"outline":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"polygon":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"type":"string"},"w":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"width":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"units":{"description":"Linear plan coordinates and unsuffixed dimensions use this unit. area fields use its square. Internally normalized once to metres; fields explicitly suffixed M/M2 remain metres.","enum":["m","ft","mm","in"],"type":"string"}},"required":[],"type":"object"},"VastuPlanUploadResponse":{"description":"Typed success envelope for plan/upload.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlanAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlotExtensionsCutsData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"actualPlotArea":{"type":"number"},"areaEfficiency":{"type":"number"},"cuts":{"description":"Compass directions of the plot that are cut (the plot does not fill that corner or side), as direction codes such as \"SW\". The per-direction detail is in directions[].","items":{"type":"string"},"type":"array"},"directions":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"extensions":{"items":{"type":"string"},"type":"array"},"idealRectangleArea":{"type":"number"},"input":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"provenance":{"additionalProperties":true,"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"severeCuts":{"description":"The subset of cuts graded severe, as direction codes such as \"NE\". Empty when no cut is severe.","items":{"type":"string"},"type":"array"},"sources":{"items":{"type":"string"},"type":"array"},"summary":{"type":"string"},"system":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verdict":{"type":"string"},"verified":{"type":"boolean"}},"required":["directions","extensions","cuts","severeCuts","sources","verified"],"type":"object"},"VastuPlotExtensionsCutsRequest":{"additionalProperties":true,"anyOf":[{"required":["plotPolygon"]},{"required":["length","width"]}],"description":"Extensions and cuts. The server draws the plot's north-up bounding rectangle, splits it into a 3×3 grid, skips the centre (Brahmasthan) and measures how much of each of the eight direction cells the plot fills (fillRatio, 0 to 1). A cell at least 0.97 full is complete (regular); it is reported as an extension only in NE, N or E (a boon by convention) when the plot protrudes there, i.e. a neighbouring cell is not full, so a plain square or rectangle has no extension. Anything less than 0.97 full is a cut, and the response grades each cut. Send the polygon north-up: rotating it changes the answer. Grades are traditional convention, not verified verses. fillRatio is the exact share of the cell the plot occupies: the plot's area clipped to the cell over the cell's area, 0 to 1, shown to 3 decimals. A triangle (3 corners) is accepted. Fields not listed here are ignored.","properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"length":{"description":"Instead of a polygon: the north-south size of a plain rectangle, in your units. A rectangle has no cuts or extensions.","type":"number"},"plotPolygon":{"description":"Plot corners as [x, y] pairs in a local flat plane, not latitude/longitude: +X is east, +Y is north, and the origin can be anywhere. Units are yours and are never converted, so feet in means feet out. Must be drawn north-up. Send this or length and width.","items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"width":{"description":"Instead of a polygon: the east-west size of a plain rectangle, in your units.","type":"number"}},"required":[],"type":"object"},"VastuPlotExtensionsCutsResponse":{"description":"Typed success envelope for plot/extensions-cuts.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlotExtensionsCutsData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlotFromSurveyData":{"additionalProperties":false,"properties":{"areaM2":{"minimum":0,"type":"number"},"boundaryGridConvergenceDeg":{"items":{"type":"number"},"type":"array"},"controlPoints":{"items":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"type":"array"},"coordinateOrder":{"type":"string"},"frame":{"additionalProperties":true,"properties":{},"required":[],"type":"object"},"gridConvergenceDeg":{"type":"number"},"maxDistanceFromOriginM":{"minimum":0,"type":"number"},"method":{"enum":["plot-from-survey"],"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":1024,"minItems":3,"type":"array"},"pricing":{"additionalProperties":false,"description":"Returned on the paid route after a successful computation; absent from fixed-sample sandbox results.","properties":{"attributableCostUsd":{"description":"Measured attributable compute cost in USD, before markup.","type":"string"},"computedPriceUsd":{"description":"Attributable cost multiplied by four, before settlement.","type":"string"},"markupMultiplier":{"enum":[4],"type":"integer"},"settledChargeUsd":{"description":"Wallet charge in USD after half-even cent rounding and the positive one-cent minimum.","type":"string"},"settlement":{"type":"string"}},"required":["attributableCostUsd","markupMultiplier","computedPriceUsd","settledChargeUsd","settlement"],"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sourceCrs":{"type":"string"},"sourceUnits":{"type":"string"},"trueNorthGridBearingDeg":{"type":"number"}},"required":["method","sourceCrs","sourceUnits","coordinateOrder","frame","plotPolygon","controlPoints","areaM2","gridConvergenceDeg","boundaryGridConvergenceDeg","trueNorthGridBearingDeg","maxDistanceFromOriginM"],"type":"object"},"VastuPlotFromSurveyRequest":{"additionalProperties":false,"description":"Explicit EPSG code and units; no inference. EPSG:4326 XY is [longitude,latitude] in degrees. Projected XY is [easting,northing], in metres or international feet. WGS84 UTM 42N-46N and WGS84 India NSF LCC / Andhra Pradesh grids use published parameters. Result is local WGS84 topocentric east/north with geographic origin and per-point grid convergence. Boundary/control points must be within 20 km of origin and inside the CRS area of use. Historical datums are refused without a declared transformation.","properties":{"boundary":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":1024,"minItems":3,"type":"array"},"controlPoints":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"xy":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"}},"required":["id","xy"],"type":"object"},"maxItems":256,"type":"array"},"crs":{"enum":["EPSG:4326","EPSG:32642","EPSG:32643","EPSG:32644","EPSG:32645","EPSG:32646","EPSG:7755","EPSG:7756"],"type":"string"},"maxChargeUsd":{"description":"Optional maximum wallet debit in USD, as an exact nonnegative decimal string. The server checks the cent-settled charge before debit. A charge above this bound returns 400 without computed data or debit. Applies to the paid route.","pattern":"^(0|[1-9][0-9]*)(\\.[0-9]{1,2})?$","type":"string"},"origin":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"units":{"enum":["degrees","m","ft"],"type":"string"}},"required":["crs","units","boundary"],"type":"object"},"VastuPlotFromSurveyResponse":{"additionalProperties":false,"properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlotFromSurveyData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlotOrientationData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"auspicious":{"type":"boolean"},"deity":{"type":"string"},"doorPadaScheme":{"additionalProperties":true,"type":"object"},"facing":{"type":"string"},"facingSanskrit":{"type":"string"},"grade":{"type":"string"},"gradeProvenance":{"additionalProperties":true,"type":"object"},"input":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"note":{"type":"string"},"provenance":{"additionalProperties":true,"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"system":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verified":{"type":"boolean"}},"required":["facing","grade","doorPadaScheme","sources","verified"],"type":"object"},"VastuPlotOrientationRequest":{"additionalProperties":true,"anyOf":[{"required":["facingBearingDeg"]},{"required":["bearingDeg"]}],"description":"Source-derived request for plot/orientation. Fields not listed here are ignored.","properties":{"bearingDeg":{"type":"number"},"facingBearingDeg":{"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":[],"type":"object"},"VastuPlotOrientationResponse":{"description":"Typed success envelope for plot/orientation.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlotOrientationData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlotRatioData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"acceptable":{"description":"Whether the plot's ratio is within the 2:1 convention. Always false for a non-rectangular plot: the convention describes rectangles.","type":"boolean"},"boundingFrame":{"description":"Dimensions measured in a local frame aligned with the longest polygon edge.","enum":["longest-edge-aligned"],"type":"string"},"category":{"description":"square, compliant, borderline or excessive for a rectangular plot; non-rectangular for an outline that fills 95% or less of its bounding frame, which is never graded on its ratio.","type":"string"},"classicalSource":{"type":"string"},"fillRatio":{"description":"Present only for a non-rectangular outline: the plot's area over the area of its bounding frame, 0 to 0.95.","type":"number"},"length":{"description":"Dimension in caller-supplied coordinate units; no physical scale or conversion is inferred.","type":"number"},"lengthM":{"deprecated":true,"description":"Always null: the request does not establish a metre scale. Use length in caller-supplied coordinate units.","nullable":true,"type":"number"},"ratio":{"type":"number"},"ratioScope":{"description":"Present only for a non-rectangular outline: states that ratio, length and width are those of the bounding frame, not of the plot.","type":"string"},"rectangular":{"description":"Present only for a non-rectangular outline.","enum":[false],"type":"boolean"},"remedy":{"nullable":true,"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"units":{"type":"string"},"unitsNote":{"type":"string"},"verified":{"type":"boolean"},"width":{"description":"Dimension in caller-supplied coordinate units; no physical scale or conversion is inferred.","type":"number"},"widthM":{"deprecated":true,"description":"Always null: the request does not establish a metre scale. Use width in caller-supplied coordinate units.","nullable":true,"type":"number"}},"required":["length","width","units","unitsNote","lengthM","widthM","ratio","category","acceptable","remedy","classicalSource","sources","verified","boundingFrame"],"type":"object"},"VastuPlotRatioRequest":{"additionalProperties":true,"description":"Plot proportion check. The server measures the plot along its longest edge and at right angles to it, so a rotated plot gives the same answer, then divides the longer side by the shorter. Grades: ratio ≤ 1.05 is square, ≤ 1.5 compliant, ≤ 2.0 borderline (a remedy is returned), above 2.0 excessive (not acceptable). The 2:1 cap is a later Vastu convention, not a verified verse. The ratio is that of the plot's bounding frame, which is the plot's own proportion only for a rectangle. A plot that fills 95% or less of that frame (an L, a triangle, a trapezoid) is not graded on it: its category is non-rectangular, acceptable is false, and fillRatio says how much of the frame it fills. Fields not listed here are ignored.","properties":{"bearingDeg":{"description":"Not used by this check. Accepted so the same plot body can be sent to every plot/* operation.","type":"number"},"doorXY":{"description":"Not used by this check. Accepted so the same plot body can be sent to every plot/* operation. If sent, a door outside the plot by more than 5% of the plot's larger extent is refused with a 400 before any charge; a door inside or on the plot is unaffected.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"plotPolygon":{"description":"Plot corners as [x, y] pairs in a local flat plane, not latitude/longitude: +X is east, +Y is north, and the origin can be anywhere. Units are yours and are never converted, so feet in means feet out. At least 3 corners. Corner order does not matter for this check.","items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["plotPolygon"],"type":"object"},"VastuPlotRatioResponse":{"description":"Typed success envelope for plot/ratio.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlotRatioData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlotRequest":{"description":"Plot geometry in a local Cartesian plane. +X is east, +Y is north. Do NOT send birth-chart coordinates.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"doorXY":{"description":"Local Cartesian [x, y] point: +X is east, +Y is north. Do NOT send latitude/longitude.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"plotPolygon":{"description":"Local Cartesian outline: +X is east, +Y is north. Do NOT send geographic coordinates or screen coordinates with +Y downward.","items":{"description":"Local Cartesian [x, y] point: +X is east, +Y is north. Do NOT send latitude/longitude.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["plotPolygon"],"type":"object"},"VastuPlotRoadOrientationRequest":{"additionalProperties":true,"anyOf":[{"required":["roads"]},{"required":["roadSides"]}],"description":"Source-derived request for plot/road-orientation. Fields not listed here are ignored.","properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"roadSides":{"items":{"type":"string"},"type":"array"},"roadThrustFrom":{"type":"string"},"roads":{"items":{"type":"string"},"type":"array"},"tPointFrom":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"veedhiShoola":{"type":"string"}},"required":[],"type":"object"},"VastuPlotRoadOrientationResponse":{"description":"Typed success envelope for plot/road-orientation.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoadOrientationData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlotShapeData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"area":{"type":"number"},"bboxArea":{"type":"number"},"boundingFrame":{"description":"Dimensions measured in a local frame aligned with the longest polygon edge.","enum":["longest-edge-aligned"],"type":"string"},"classicalSource":{"type":"string"},"fillRatio":{"type":"number"},"notes":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"shape":{"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"vastuGrade":{"type":"string"},"verified":{"type":"boolean"},"vertices":{"type":"integer"}},"required":["shape","vertices","area","bboxArea","fillRatio","vastuGrade","notes","classicalSource","sources","verified","boundingFrame"],"type":"object"},"VastuPlotShapeRequest":{"additionalProperties":true,"description":"Source-derived request for plot/shape. Fields not listed here are ignored.","properties":{"bearingDeg":{"type":"number"},"doorXY":{"description":"Not used by this check. Accepted so the same plot body can be sent to every plot/* operation. If sent, a door outside the plot by more than 5% of the plot's larger extent is refused with a 400 before any charge; a door inside or on the plot is unaffected.","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["plotPolygon"],"type":"object"},"VastuPlotShapeResponse":{"description":"Typed success envelope for plot/shape.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlotShapeData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPlotSlopeData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"auspicious":{"type":"boolean"},"classicalReference":{"additionalProperties":true,"type":"object"},"downSlopeDirection":{"type":"string"},"effect":{"type":"string"},"effectProvenance":{"additionalProperties":true,"type":"object"},"idealRule":{"type":"string"},"idealRuleProvenance":{"additionalProperties":true,"type":"object"},"input":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"provenance":{"additionalProperties":true,"type":"object"},"remedy":{"nullable":true,"type":"string"},"remedyType":{"nullable":true,"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"system":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verdict":{"type":"string"},"verified":{"type":"boolean"}},"required":["downSlopeDirection","classicalReference","sources","verified"],"type":"object"},"VastuPlotSlopeRequest":{"additionalProperties":true,"anyOf":[{"required":["slopeDirection"]},{"required":["lowSide"]},{"required":["lowCorner"]},{"required":["slopeBearingDeg"]}],"description":"Source-derived request for plot/slope. Fields not listed here are ignored.","properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lowCorner":{"type":"string"},"lowSide":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"slopeBearingDeg":{"type":"number"},"slopeDirection":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":[],"type":"object"},"VastuPlotSlopeResponse":{"description":"Typed success envelope for plot/slope.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuPlotSlopeData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuPortfolioAnalyticsData":{"properties":{"account":{"properties":{"counts":{"properties":{"propertiesAssessed":{"type":"integer"},"propertiesCreated":{"type":"integer"},"reportsDelivered":{"type":"integer"},"returningProperties":{"type":"integer"}},"required":["propertiesCreated","propertiesAssessed","reportsDelivered","returningProperties"],"type":"object"},"coverage":{"type":"string"},"daily":{"items":{"properties":{"counts":{"properties":{"propertiesAssessed":{"type":"integer"},"propertiesCreated":{"type":"integer"},"reportsDelivered":{"type":"integer"},"returningProperties":{"type":"integer"}},"required":["propertiesCreated","propertiesAssessed","reportsDelivered","returningProperties"],"type":"object"},"date":{"type":"string"}},"required":["date","counts"],"type":"object"},"type":"array"},"deliveryDefinition":{"type":"string"},"returningDefinition":{"type":"string"}},"required":["counts","daily","returningDefinition","deliveryDefinition","coverage"],"type":"object"},"byTag":{"additionalProperties":{"properties":{"counts":{"properties":{"propertiesAssessed":{"type":"integer"},"propertiesCreated":{"type":"integer"},"reportsDelivered":{"type":"integer"},"returningProperties":{"type":"integer"}},"required":["propertiesCreated","propertiesAssessed","reportsDelivered","returningProperties"],"type":"object"},"coverage":{"type":"string"},"daily":{"items":{"properties":{"counts":{"properties":{"propertiesAssessed":{"type":"integer"},"propertiesCreated":{"type":"integer"},"reportsDelivered":{"type":"integer"},"returningProperties":{"type":"integer"}},"required":["propertiesCreated","propertiesAssessed","reportsDelivered","returningProperties"],"type":"object"},"date":{"type":"string"}},"required":["date","counts"],"type":"object"},"type":"array"},"deliveryDefinition":{"type":"string"},"returningDefinition":{"type":"string"}},"required":["counts","daily","returningDefinition","deliveryDefinition","coverage"],"type":"object"},"type":"object"},"fromEpoch":{"format":"int64","type":"integer"},"toEpoch":{"format":"int64","type":"integer"}},"required":["fromEpoch","toEpoch","account","byTag"],"type":"object"},"VastuPortfolioAnalyticsRequest":{"additionalProperties":false,"properties":{"fromEpoch":{"format":"int64","type":"integer"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tag":{"type":"string"},"toEpoch":{"format":"int64","type":"integer"}},"required":[],"type":"object"},"VastuPortfolioAnalyticsResponse":{"properties":{"billing":{"properties":{"charged":{"enum":["0"],"type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPortfolioAnalyticsData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPortfolioBudgetsGetData":{"properties":{"dimensions":{"additionalProperties":{"properties":{"capUsd":{"nullable":true,"pattern":"^\\d+(\\.\\d{1,4})?$","type":"string"},"reservedUsd":{"pattern":"^\\d+(\\.\\d{1,4})?$","type":"string"},"spentUsd":{"pattern":"^\\d+(\\.\\d{1,4})?$","type":"string"}},"required":["capUsd","spentUsd","reservedUsd"],"type":"object"},"type":"object"},"period":{"enum":["lifetime"],"type":"string"}},"required":["dimensions","period"],"type":"object"},"VastuPortfolioBudgetsGetRequest":{"additionalProperties":false,"properties":{"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":[],"type":"object"},"VastuPortfolioBudgetsGetResponse":{"properties":{"billing":{"properties":{"charged":{"enum":["0"],"type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPortfolioBudgetsGetData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPortfolioBudgetsSetData":{"properties":{"capUsd":{"nullable":true,"pattern":"^\\d+(\\.\\d{1,4})?$","type":"string"},"period":{"enum":["lifetime"],"type":"string"},"scope":{"properties":{"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":[],"type":"object"}},"required":["scope","capUsd","period"],"type":"object"},"VastuPortfolioBudgetsSetRequest":{"additionalProperties":false,"properties":{"capUsd":{"nullable":true,"pattern":"^\\d+(\\.\\d{1,4})?$","type":"string"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["capUsd"],"type":"object"},"VastuPortfolioBudgetsSetResponse":{"properties":{"billing":{"properties":{"charged":{"enum":["0"],"type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPortfolioBudgetsSetData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPortfolioCompareData":{"properties":{"comparableGroups":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"type":"object"},"crossRulesetRanking":{"enum":[false],"type":"boolean"},"properties":{"items":{"properties":{"assessedAtEpoch":{"format":"int64","nullable":true,"type":"integer"},"assessment":{"nullable":true,"properties":{"grade":{"type":"string"},"inputSource":{"type":"string"},"kind":{"enum":["assessed","reportDelivered","computed"],"type":"string"},"ruleset":{"type":"string"},"score":{"type":"integer"},"zoneDefects":{"items":{"type":"string"},"type":"array"}},"required":[],"type":"object"},"city":{"type":"string"},"createdAtEpoch":{"format":"int64","type":"integer"},"propertyId":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"title":{"type":"string"}},"required":["propertyId","title","city","tags","createdAtEpoch","assessment","assessedAtEpoch"],"type":"object"},"type":"array"}},"required":["properties","comparableGroups","crossRulesetRanking"],"type":"object"},"VastuPortfolioCompareRequest":{"additionalProperties":false,"properties":{"propertyIds":{"items":{"type":"string"},"maxItems":10,"minItems":2,"type":"array","uniqueItems":true}},"required":["propertyIds"],"type":"object"},"VastuPortfolioCompareResponse":{"properties":{"billing":{"properties":{"charged":{"enum":["0"],"type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPortfolioCompareData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPortfolioSearchData":{"properties":{"nextCursor":{"nullable":true,"type":"string"},"properties":{"items":{"properties":{"assessedAtEpoch":{"format":"int64","nullable":true,"type":"integer"},"assessment":{"nullable":true,"properties":{"grade":{"type":"string"},"inputSource":{"type":"string"},"kind":{"enum":["assessed","reportDelivered","computed"],"type":"string"},"ruleset":{"type":"string"},"score":{"type":"integer"},"zoneDefects":{"items":{"type":"string"},"type":"array"}},"required":[],"type":"object"},"city":{"type":"string"},"createdAtEpoch":{"format":"int64","type":"integer"},"propertyId":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"title":{"type":"string"}},"required":["propertyId","title","city","tags","createdAtEpoch","assessment","assessedAtEpoch"],"type":"object"},"type":"array"},"total":{"type":"integer"}},"required":["properties","total","nextCursor"],"type":"object"},"VastuPortfolioSearchRequest":{"additionalProperties":false,"properties":{"city":{"type":"string"},"cursor":{"type":"string"},"inputSource":{"type":"string"},"limit":{"default":50,"maximum":100,"minimum":1,"type":"integer"},"maxScore":{"maximum":100,"minimum":0,"type":"integer"},"minScore":{"maximum":100,"minimum":0,"type":"integer"},"ruleset":{"type":"string"},"sort":{"default":"propertyId","enum":["propertyId","scoreAsc","scoreDesc","city","createdAt","tags","zoneDefectsAsc","zoneDefectsDesc"],"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"zoneDefects":{"items":{"type":"string"},"type":"array"}},"required":[],"type":"object"},"VastuPortfolioSearchResponse":{"properties":{"billing":{"properties":{"charged":{"enum":["0"],"type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPortfolioSearchData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPortfolioUsageData":{"properties":{"fromEpoch":{"format":"int64","type":"integer"},"groups":{"items":{"properties":{"calls":{"type":"integer"},"chargedUsd":{"pattern":"^\\d+(\\.\\d{1,4})?$","type":"string"},"pending":{"type":"integer"},"propertyId":{"nullable":true,"type":"string"},"tenantRef":{"nullable":true,"type":"string"}},"required":["propertyId","tenantRef","calls","chargedUsd","pending"],"type":"object"},"type":"array"},"retentionDays":{"type":"integer"},"toEpoch":{"format":"int64","type":"integer"}},"required":["fromEpoch","toEpoch","retentionDays","groups"],"type":"object"},"VastuPortfolioUsageExportData":{"properties":{"contentType":{"type":"string"},"csv":{"type":"string"},"filename":{"type":"string"}},"required":["csv","filename","contentType"],"type":"object"},"VastuPortfolioUsageExportRequest":{"additionalProperties":false,"properties":{"fromEpoch":{"format":"int64","type":"integer"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"toEpoch":{"format":"int64","type":"integer"}},"required":[],"type":"object"},"VastuPortfolioUsageExportResponse":{"properties":{"billing":{"properties":{"charged":{"enum":["0"],"type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPortfolioUsageExportData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPortfolioUsageRequest":{"additionalProperties":false,"properties":{"fromEpoch":{"format":"int64","type":"integer"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"toEpoch":{"format":"int64","type":"integer"}},"required":[],"type":"object"},"VastuPortfolioUsageResponse":{"properties":{"billing":{"properties":{"charged":{"enum":["0"],"type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPortfolioUsageData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPropertiesActivityExportData":{"properties":{"content":{"type":"string"},"events":{"items":{"properties":{"action":{"type":"string"},"actorId":{"maxLength":128,"minLength":1,"type":"string"},"at":{"format":"int64","type":"integer"},"contentHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"details":{"type":"object"},"hash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"previousHash":{"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"sequence":{"format":"int64","type":"integer"}},"required":["sequence","actorId","propertyId","revision","contentHash","action","at","previousHash","hash","details"],"type":"object"},"type":"array"},"format":{"enum":["jsonl"],"type":"string"},"nextCursor":{"format":"int64","nullable":true,"type":"integer"}},"required":["events","nextCursor","format","content"],"type":"object"},"VastuPropertiesActivityExportRequest":{"additionalProperties":false,"properties":{"cursor":{"format":"int64","minimum":0,"type":"integer"},"limit":{"maximum":50,"minimum":1,"type":"integer"},"ownerId":{"maxLength":128,"minLength":1,"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuPropertiesActivityExportResponse":{"properties":{"billing":{"properties":{"chargedCents":{"type":"integer"}},"required":["chargedCents"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPropertiesActivityExportData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPropertiesActivityListData":{"properties":{"events":{"items":{"properties":{"action":{"type":"string"},"actorId":{"maxLength":128,"minLength":1,"type":"string"},"at":{"format":"int64","type":"integer"},"contentHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"details":{"type":"object"},"hash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"previousHash":{"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"sequence":{"format":"int64","type":"integer"}},"required":["sequence","actorId","propertyId","revision","contentHash","action","at","previousHash","hash","details"],"type":"object"},"type":"array"},"nextCursor":{"format":"int64","nullable":true,"type":"integer"}},"required":["events","nextCursor"],"type":"object"},"VastuPropertiesActivityListRequest":{"additionalProperties":false,"properties":{"cursor":{"format":"int64","minimum":0,"type":"integer"},"limit":{"maximum":50,"minimum":1,"type":"integer"},"ownerId":{"maxLength":128,"minLength":1,"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuPropertiesActivityListResponse":{"properties":{"billing":{"properties":{"chargedCents":{"type":"integer"}},"required":["chargedCents"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPropertiesActivityListData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPropertiesCollaborationCommentData":{"properties":{"comment":{"properties":{"actorId":{"maxLength":128,"minLength":1,"type":"string"},"assessmentId":{"maxLength":128,"minLength":1,"type":"string"},"at":{"format":"int64","type":"integer"},"contentHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"id":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"text":{"maxLength":2000,"minLength":1,"type":"string"}},"required":["id","actorId","assessmentId","revision","contentHash","at","text"],"type":"object"}},"required":["comment"],"type":"object"},"VastuPropertiesCollaborationCommentRequest":{"additionalProperties":false,"properties":{"assessmentId":{"maxLength":128,"minLength":1,"type":"string"},"expectedContentHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"ownerId":{"maxLength":128,"minLength":1,"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"text":{"maxLength":2000,"minLength":1,"type":"string"}},"required":["propertyId","assessmentId","revision","expectedContentHash","text"],"type":"object"},"VastuPropertiesCollaborationCommentResponse":{"properties":{"billing":{"properties":{"chargedCents":{"type":"integer"}},"required":["chargedCents"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPropertiesCollaborationCommentData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPropertiesCollaborationGetData":{"properties":{"comments":{"items":{"properties":{"actorId":{"maxLength":128,"minLength":1,"type":"string"},"assessmentId":{"maxLength":128,"minLength":1,"type":"string"},"at":{"format":"int64","type":"integer"},"contentHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"id":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"text":{"maxLength":2000,"minLength":1,"type":"string"}},"required":["id","actorId","assessmentId","revision","contentHash","at","text"],"type":"object"},"type":"array"},"property":{"properties":{"archiveTier":{"nullable":true,"properties":{"months":{"maximum":60,"minimum":1,"type":"integer"},"priceCents":{"type":"integer"},"retainUntilEpoch":{"format":"int64","type":"integer"},"setAtEpoch":{"format":"int64","type":"integer"},"storedBytes":{"format":"int64","type":"integer"}},"required":["months","storedBytes","priceCents","setAtEpoch","retainUntilEpoch"],"type":"object"},"contentHash":{"type":"string"},"createdAtEpoch":{"format":"int64","type":"integer"},"data":{"properties":{},"required":[],"type":"object"},"expiresAtEpoch":{"format":"int64","type":"integer"},"externalId":{"nullable":true,"type":"string"},"ids":{"additionalProperties":false,"properties":{"building":{"maxLength":128,"minLength":1,"type":"string"},"floor":{"maxLength":128,"minLength":1,"type":"string"},"project":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"unit":{"maxLength":128,"minLength":1,"type":"string"}},"required":["project","building","unit","floor","revision"],"type":"object"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"ownerId":{"type":"string"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"title":{"type":"string"},"updatedAtEpoch":{"format":"int64","type":"integer"}},"required":["propertyId","ownerId","ids","title","data","retentionDays","expiresAtEpoch","linkedScanIds","linkedAssessmentIds","archiveTier","externalId","createdAtEpoch","updatedAtEpoch","contentHash"],"type":"object"},"reviews":{"items":{"properties":{"actorId":{"maxLength":128,"minLength":1,"type":"string"},"assessmentId":{"maxLength":128,"minLength":1,"type":"string"},"at":{"format":"int64","type":"integer"},"contentHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"decision":{"enum":["approved","rejected"],"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"}},"required":["actorId","assessmentId","revision","contentHash","at","decision"],"type":"object"},"type":"array"}},"required":["property","comments","reviews"],"type":"object"},"VastuPropertiesCollaborationGetRequest":{"additionalProperties":false,"properties":{"ownerId":{"maxLength":128,"minLength":1,"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuPropertiesCollaborationGetResponse":{"properties":{"billing":{"properties":{"chargedCents":{"type":"integer"}},"required":["chargedCents"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPropertiesCollaborationGetData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPropertiesCollaborationInviteData":{"additionalProperties":false,"properties":{"invitationId":{"format":"uuid","type":"string"},"status":{"enum":["pending","accepted"],"type":"string"}},"required":["invitationId","status"],"type":"object"},"VastuPropertiesCollaborationInviteRequest":{"additionalProperties":false,"oneOf":[{"not":{"required":["email"]},"required":["accountId"]},{"not":{"required":["accountId"]},"required":["email"]}],"properties":{"accept":{"default":false,"description":"Set true as the recipient to accept an existing invitation. The stored invited role is used.","type":"boolean"},"accountId":{"maxLength":128,"minLength":1,"type":"string"},"email":{"maxLength":254,"type":"string"},"ownerId":{"maxLength":128,"minLength":1,"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"role":{"enum":["viewer","editor","reviewer"],"type":"string"}},"required":["propertyId","role"],"type":"object"},"VastuPropertiesCollaborationInviteResponse":{"properties":{"billing":{"properties":{"chargedCents":{"type":"integer"}},"required":["chargedCents"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPropertiesCollaborationInviteData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPropertiesCollaborationMembersData":{"properties":{"members":{"additionalProperties":{"enum":["viewer","editor","reviewer"],"type":"string"},"type":"object"}},"required":["members"],"type":"object"},"VastuPropertiesCollaborationMembersRequest":{"additionalProperties":false,"properties":{"ownerId":{"maxLength":128,"minLength":1,"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuPropertiesCollaborationMembersResponse":{"properties":{"billing":{"properties":{"chargedCents":{"type":"integer"}},"required":["chargedCents"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPropertiesCollaborationMembersData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPropertiesCollaborationReviewData":{"properties":{"review":{"properties":{"actorId":{"maxLength":128,"minLength":1,"type":"string"},"assessmentId":{"maxLength":128,"minLength":1,"type":"string"},"at":{"format":"int64","type":"integer"},"contentHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"decision":{"enum":["approved","rejected"],"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"}},"required":["actorId","assessmentId","revision","contentHash","at","decision"],"type":"object"}},"required":["review"],"type":"object"},"VastuPropertiesCollaborationReviewRequest":{"additionalProperties":false,"properties":{"assessmentId":{"maxLength":128,"minLength":1,"type":"string"},"decision":{"enum":["approved","rejected"],"type":"string"},"expectedContentHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"ownerId":{"maxLength":128,"minLength":1,"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"}},"required":["propertyId","assessmentId","revision","expectedContentHash","decision"],"type":"object"},"VastuPropertiesCollaborationReviewResponse":{"properties":{"billing":{"properties":{"chargedCents":{"type":"integer"}},"required":["chargedCents"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPropertiesCollaborationReviewData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPropertiesCollaborationRevokeData":{"properties":{"accountId":{"maxLength":128,"minLength":1,"type":"string"},"invitationId":{"format":"uuid","type":"string"},"revoked":{"type":"boolean"}},"required":["revoked"],"type":"object"},"VastuPropertiesCollaborationRevokeRequest":{"additionalProperties":false,"oneOf":[{"not":{"required":["invitationId"]},"required":["accountId"]},{"not":{"required":["accountId"]},"required":["invitationId"]}],"properties":{"accountId":{"maxLength":128,"minLength":1,"type":"string"},"invitationId":{"description":"Cancel a pending invitation without learning its recipient identity.","format":"uuid","type":"string"},"ownerId":{"maxLength":128,"minLength":1,"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuPropertiesCollaborationRevokeResponse":{"properties":{"billing":{"properties":{"chargedCents":{"type":"integer"}},"required":["chargedCents"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPropertiesCollaborationRevokeData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPropertiesCollaborationUpdateData":{"properties":{"property":{"properties":{"archiveTier":{"nullable":true,"properties":{"months":{"maximum":60,"minimum":1,"type":"integer"},"priceCents":{"type":"integer"},"retainUntilEpoch":{"format":"int64","type":"integer"},"setAtEpoch":{"format":"int64","type":"integer"},"storedBytes":{"format":"int64","type":"integer"}},"required":["months","storedBytes","priceCents","setAtEpoch","retainUntilEpoch"],"type":"object"},"contentHash":{"type":"string"},"createdAtEpoch":{"format":"int64","type":"integer"},"data":{"properties":{},"required":[],"type":"object"},"expiresAtEpoch":{"format":"int64","type":"integer"},"externalId":{"nullable":true,"type":"string"},"ids":{"additionalProperties":false,"properties":{"building":{"maxLength":128,"minLength":1,"type":"string"},"floor":{"maxLength":128,"minLength":1,"type":"string"},"project":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"unit":{"maxLength":128,"minLength":1,"type":"string"}},"required":["project","building","unit","floor","revision"],"type":"object"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"ownerId":{"type":"string"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"title":{"type":"string"},"updatedAtEpoch":{"format":"int64","type":"integer"}},"required":["propertyId","ownerId","ids","title","data","retentionDays","expiresAtEpoch","linkedScanIds","linkedAssessmentIds","archiveTier","externalId","createdAtEpoch","updatedAtEpoch","contentHash"],"type":"object"}},"required":["property"],"type":"object"},"VastuPropertiesCollaborationUpdateRequest":{"additionalProperties":false,"properties":{"data":{"type":"object"},"expectedContentHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"ownerId":{"maxLength":128,"minLength":1,"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"title":{"maxLength":160,"minLength":1,"type":"string"}},"required":["propertyId","revision","expectedContentHash","title","data"],"type":"object"},"VastuPropertiesCollaborationUpdateResponse":{"properties":{"billing":{"properties":{"chargedCents":{"type":"integer"}},"required":["chargedCents"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuPropertiesCollaborationUpdateData"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing"],"type":"object"},"VastuPropertiesCreateData":{"properties":{"archiveTier":{"nullable":true,"properties":{"months":{"maximum":60,"minimum":1,"type":"integer"},"priceCents":{"type":"integer"},"retainUntilEpoch":{"format":"int64","type":"integer"},"setAtEpoch":{"format":"int64","type":"integer"},"storedBytes":{"format":"int64","type":"integer"}},"required":["months","storedBytes","priceCents","setAtEpoch","retainUntilEpoch"],"type":"object"},"contentHash":{"type":"string"},"createdAtEpoch":{"format":"int64","type":"integer"},"data":{"properties":{},"required":[],"type":"object"},"expiresAtEpoch":{"format":"int64","type":"integer"},"externalId":{"nullable":true,"type":"string"},"ids":{"additionalProperties":false,"properties":{"building":{"maxLength":128,"minLength":1,"type":"string"},"floor":{"maxLength":128,"minLength":1,"type":"string"},"project":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"unit":{"maxLength":128,"minLength":1,"type":"string"}},"required":["project","building","unit","floor","revision"],"type":"object"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"ownerId":{"type":"string"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"title":{"type":"string"},"updatedAtEpoch":{"format":"int64","type":"integer"}},"required":["propertyId","ownerId","ids","title","data","retentionDays","expiresAtEpoch","linkedScanIds","linkedAssessmentIds","archiveTier","externalId","createdAtEpoch","updatedAtEpoch","contentHash"],"type":"object"},"VastuPropertiesCreateRequest":{"additionalProperties":false,"properties":{"data":{"properties":{},"required":[],"type":"object"},"externalId":{"type":"string"},"ids":{"additionalProperties":false,"properties":{"building":{"maxLength":128,"minLength":1,"type":"string"},"floor":{"maxLength":128,"minLength":1,"type":"string"},"project":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"unit":{"maxLength":128,"minLength":1,"type":"string"}},"required":["project","building","unit","floor","revision"],"type":"object"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"title":{"maxLength":160,"minLength":1,"type":"string"}},"required":["ids","title","data","retentionDays"],"type":"object"},"VastuPropertiesCreateResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuPropertiesCreateData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuPropertiesDeleteData":{"properties":{"deleted":{"type":"boolean"},"erasureReceipt":{"properties":{"backupPolicy":{"type":"string"},"backupRetentionDays":{"type":"integer"},"completedAt":{"type":"string"},"deletedAtEpoch":{"format":"int64","type":"integer"},"deletedByAccountHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"hashAlgorithm":{"enum":["SHA-256"],"type":"string"},"linkedAssessmentIds":{"items":{"type":"string"},"type":"array"},"linkedScanIds":{"items":{"type":"string"},"type":"array"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"receiptHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"removed":{"items":{"properties":{"artifactHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"artifactId":{"type":"string"},"deleteMarker":{"type":"boolean"},"deleteMarkerCount":{"minimum":0,"type":"integer"},"kind":{"type":"string"},"recordId":{"type":"string"},"versionCount":{"minimum":0,"type":"integer"},"versionHash":{"pattern":"^[a-f0-9]{64}$","type":"string"},"versionsSha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["kind"],"type":"object"},"type":"array"},"retained":{"items":{"properties":{"kind":{"type":"string"},"purpose":{"type":"string"}},"required":["kind","purpose"],"type":"object"},"type":"array"},"revisionId":{"type":"string"},"schemaVersion":{"enum":[1],"type":"integer"},"scope":{"enum":["active-property-storage"],"type":"string"},"status":{"enum":["completed"],"type":"string"}},"required":["schemaVersion","propertyId","status","scope","completedAt","removed","retained","backupRetentionDays","backupPolicy","hashAlgorithm","receiptHash","deletedByAccountHash","deletedAtEpoch"],"type":"object"},"erasureStatus":{"enum":["pending","completed"],"type":"string"},"exportDeleted":{"type":"boolean"},"linkedAssessmentIds":{"items":{"type":"string"},"type":"array"},"linkedScanIds":{"items":{"type":"string"},"type":"array"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"replayed":{"type":"boolean"},"retryAfterEpoch":{"format":"int64","type":"integer"},"revisionId":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"}},"required":["propertyId","deleted"],"type":"object"},"VastuPropertiesDeleteRequest":{"additionalProperties":false,"properties":{"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuPropertiesDeleteResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuPropertiesDeleteData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuPropertiesGetData":{"properties":{"archiveTier":{"nullable":true,"properties":{"months":{"maximum":60,"minimum":1,"type":"integer"},"priceCents":{"type":"integer"},"retainUntilEpoch":{"format":"int64","type":"integer"},"setAtEpoch":{"format":"int64","type":"integer"},"storedBytes":{"format":"int64","type":"integer"}},"required":["months","storedBytes","priceCents","setAtEpoch","retainUntilEpoch"],"type":"object"},"contentHash":{"type":"string"},"createdAtEpoch":{"format":"int64","type":"integer"},"data":{"properties":{},"required":[],"type":"object"},"expiresAtEpoch":{"format":"int64","type":"integer"},"externalId":{"nullable":true,"type":"string"},"ids":{"additionalProperties":false,"properties":{"building":{"maxLength":128,"minLength":1,"type":"string"},"floor":{"maxLength":128,"minLength":1,"type":"string"},"project":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"unit":{"maxLength":128,"minLength":1,"type":"string"}},"required":["project","building","unit","floor","revision"],"type":"object"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"ownerId":{"type":"string"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"title":{"type":"string"},"updatedAtEpoch":{"format":"int64","type":"integer"}},"required":["propertyId","ownerId","ids","title","data","retentionDays","expiresAtEpoch","linkedScanIds","linkedAssessmentIds","archiveTier","externalId","createdAtEpoch","updatedAtEpoch","contentHash"],"type":"object"},"VastuPropertiesGetRequest":{"additionalProperties":false,"properties":{"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuPropertiesGetResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuPropertiesGetData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuPropertiesLinkScanData":{"properties":{"archiveTier":{"nullable":true,"properties":{"months":{"maximum":60,"minimum":1,"type":"integer"},"priceCents":{"type":"integer"},"retainUntilEpoch":{"format":"int64","type":"integer"},"setAtEpoch":{"format":"int64","type":"integer"},"storedBytes":{"format":"int64","type":"integer"}},"required":["months","storedBytes","priceCents","setAtEpoch","retainUntilEpoch"],"type":"object"},"contentHash":{"type":"string"},"createdAtEpoch":{"format":"int64","type":"integer"},"data":{"properties":{},"required":[],"type":"object"},"expiresAtEpoch":{"format":"int64","type":"integer"},"externalId":{"nullable":true,"type":"string"},"ids":{"additionalProperties":false,"properties":{"building":{"maxLength":128,"minLength":1,"type":"string"},"floor":{"maxLength":128,"minLength":1,"type":"string"},"project":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"unit":{"maxLength":128,"minLength":1,"type":"string"}},"required":["project","building","unit","floor","revision"],"type":"object"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"ownerId":{"type":"string"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"title":{"type":"string"},"updatedAtEpoch":{"format":"int64","type":"integer"}},"required":["propertyId","ownerId","ids","title","data","retentionDays","expiresAtEpoch","linkedScanIds","linkedAssessmentIds","archiveTier","externalId","createdAtEpoch","updatedAtEpoch","contentHash"],"type":"object"},"VastuPropertiesLinkScanRequest":{"additionalProperties":false,"properties":{"addAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"addScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"replace":{"default":true,"type":"boolean"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuPropertiesLinkScanResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuPropertiesLinkScanData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuPropertiesListData":{"properties":{"nextCursor":{"nullable":true,"type":"string"},"properties":{"items":{"properties":{"archiveTier":{"nullable":true,"properties":{"months":{"maximum":60,"minimum":1,"type":"integer"},"priceCents":{"type":"integer"},"retainUntilEpoch":{"format":"int64","type":"integer"},"setAtEpoch":{"format":"int64","type":"integer"},"storedBytes":{"format":"int64","type":"integer"}},"required":["months","storedBytes","priceCents","setAtEpoch","retainUntilEpoch"],"type":"object"},"contentHash":{"type":"string"},"createdAtEpoch":{"format":"int64","type":"integer"},"data":{"properties":{},"required":[],"type":"object"},"expiresAtEpoch":{"format":"int64","type":"integer"},"externalId":{"nullable":true,"type":"string"},"ids":{"additionalProperties":false,"properties":{"building":{"maxLength":128,"minLength":1,"type":"string"},"floor":{"maxLength":128,"minLength":1,"type":"string"},"project":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"unit":{"maxLength":128,"minLength":1,"type":"string"}},"required":["project","building","unit","floor","revision"],"type":"object"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"ownerId":{"type":"string"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"title":{"type":"string"},"updatedAtEpoch":{"format":"int64","type":"integer"}},"required":["propertyId","ownerId","ids","title","data","retentionDays","expiresAtEpoch","linkedScanIds","linkedAssessmentIds","archiveTier","externalId","createdAtEpoch","updatedAtEpoch","contentHash"],"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"}},"required":["properties","nextCursor"],"type":"object"},"VastuPropertiesListRequest":{"additionalProperties":false,"properties":{"cursor":{"type":"string"},"limit":{"maximum":50,"minimum":1,"type":"integer"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":[],"type":"object"},"VastuPropertiesListResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuPropertiesListData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuPropertiesUpdateData":{"properties":{"archiveTier":{"nullable":true,"properties":{"months":{"maximum":60,"minimum":1,"type":"integer"},"priceCents":{"type":"integer"},"retainUntilEpoch":{"format":"int64","type":"integer"},"setAtEpoch":{"format":"int64","type":"integer"},"storedBytes":{"format":"int64","type":"integer"}},"required":["months","storedBytes","priceCents","setAtEpoch","retainUntilEpoch"],"type":"object"},"contentHash":{"type":"string"},"createdAtEpoch":{"format":"int64","type":"integer"},"data":{"properties":{},"required":[],"type":"object"},"expiresAtEpoch":{"format":"int64","type":"integer"},"externalId":{"nullable":true,"type":"string"},"ids":{"additionalProperties":false,"properties":{"building":{"maxLength":128,"minLength":1,"type":"string"},"floor":{"maxLength":128,"minLength":1,"type":"string"},"project":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"unit":{"maxLength":128,"minLength":1,"type":"string"}},"required":["project","building","unit","floor","revision"],"type":"object"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"ownerId":{"type":"string"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"title":{"type":"string"},"updatedAtEpoch":{"format":"int64","type":"integer"}},"required":["propertyId","ownerId","ids","title","data","retentionDays","expiresAtEpoch","linkedScanIds","linkedAssessmentIds","archiveTier","externalId","createdAtEpoch","updatedAtEpoch","contentHash"],"type":"object"},"VastuPropertiesUpdateRequest":{"additionalProperties":false,"properties":{"data":{"properties":{},"required":[],"type":"object"},"externalId":{"type":"string"},"ids":{"additionalProperties":false,"properties":{"building":{"maxLength":128,"minLength":1,"type":"string"},"floor":{"maxLength":128,"minLength":1,"type":"string"},"project":{"maxLength":128,"minLength":1,"type":"string"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"unit":{"maxLength":128,"minLength":1,"type":"string"}},"required":["project","building","unit","floor","revision"],"type":"object"},"linkedAssessmentIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"linkedScanIds":{"items":{"type":"string"},"maxItems":256,"type":"array"},"propertyId":{"maxLength":128,"minLength":1,"type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"title":{"maxLength":160,"minLength":1,"type":"string"}},"required":["ids","title","data","retentionDays","propertyId"],"type":"object"},"VastuPropertiesUpdateResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuPropertiesUpdateData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuQuoteCalculateData":{"properties":{"currency":{"enum":["USD"],"type":"string"},"explanation":{"type":"string"},"lineItems":{"items":{"properties":{"baseCostUsd":{"type":"string"},"category":{"type":"string"},"label":{"type":"string"},"quantity":{"type":"integer"},"slug":{"type":"string"},"totalPriceUsd":{"type":"string"}},"required":[],"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"subtotal":{"type":"string"},"total":{"type":"string"},"workflowId":{"type":"string"}},"required":["workflowId","currency","subtotal","total","lineItems","explanation"],"type":"object"},"VastuQuoteCalculateRequest":{"additionalProperties":false,"properties":{"operations":{"items":{"additionalProperties":false,"properties":{"label":{"type":"string"},"op":{"type":"string"},"quantity":{"default":1,"minimum":1,"type":"integer"}},"required":["op"],"type":"object"},"type":"array"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"retentionMonths":{"maximum":60,"minimum":1,"type":"integer"},"retentionStoredBytes":{"format":"int64","minimum":1,"type":"integer"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"workflowId":{"maxLength":128,"type":"string"}},"required":[],"type":"object"},"VastuQuoteCalculateResponse":{"properties":{"billing":{"properties":{"actionCents":{"type":"integer"},"chargedCents":{"type":"integer"},"endpoint":{"type":"string"},"meterCents":{"type":"integer"},"refundPending":{"type":"boolean"},"refundedCents":{"type":"integer"},"storedBytes":{"type":"integer"},"totalCents":{"type":"integer"}},"required":[],"type":"object"},"changed":{"type":"boolean"},"data":{"$ref":"#/components/schemas/VastuQuoteCalculateData"},"preview":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuReceiptVerifyData":{"properties":{"charged":{"enum":[0],"type":"number"},"inputMatched":{"nullable":true,"type":"boolean"},"receipt":{"properties":{"assessmentId":{"type":"string"},"grade":{"nullable":true,"type":"string"},"inputHash":{"type":"string"},"resultHash":{"type":"string"},"rulesVersion":{"type":"string"},"score":{"maximum":100,"minimum":0,"type":"integer"},"sourceLabels":{"items":{"type":"string"},"type":"array"},"timestamp":{"format":"int64","type":"integer"}},"required":["assessmentId","inputHash","resultHash","rulesVersion","score","grade","sourceLabels","timestamp"],"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"valid":{"enum":[true],"type":"boolean"}},"required":["valid","receipt","inputMatched","charged"],"type":"object"},"VastuReceiptVerifyRequest":{"additionalProperties":false,"properties":{"input":{"type":"object"},"token":{"maxLength":16384,"type":"string"}},"required":["token"],"type":"object"},"VastuReceiptVerifyResponse":{"properties":{"billing":{"type":"object"},"data":{"$ref":"#/components/schemas/VastuReceiptVerifyData"},"success":{"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuReferenceColorsByZoneResponse":{"description":"Typed success envelope for reference/colors-by-zone.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuZoneReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuReferenceDefectsCatalogResponse":{"description":"Typed success envelope for reference/defects/catalog.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuCatalogReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuReferenceDirections16Response":{"description":"Typed success envelope for reference/directions/16.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuDirectionsReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuReferenceDirections32Response":{"description":"Typed success envelope for reference/directions/32.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuDirections32ReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuReferenceDirections8Response":{"description":"Typed success envelope for reference/directions/8.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuDirectionsReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuReferenceGateObstructionsResponse":{"description":"Typed success envelope for reference/gate-obstructions.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuCatalogReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuReferenceMandala45DevatasResponse":{"description":"Typed success envelope for reference/mandala/45-devatas.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuMandalaReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuReferenceMandala64PadaResponse":{"description":"Typed success envelope for reference/mandala/64-pada.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuMandalaReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuReferenceMandala9ZoneResponse":{"description":"Typed success envelope for reference/mandala/9-zone.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuMandalaReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuReferenceMaterialsByZoneResponse":{"description":"Typed success envelope for reference/materials-by-zone.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuZoneReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuReferenceRemediesCatalogResponse":{"description":"Typed success envelope for reference/remedies/catalog.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuCatalogReferenceData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRemediationReassessRequest":{"additionalProperties":false,"properties":{"expectedRevision":{"format":"int64","maximum":9223372036854775806,"minimum":0,"type":"integer"},"mutationId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"plan":{"additionalProperties":true,"description":"Source-derived request for plan/analyze. Fields not listed here are ignored.","properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"importReview":{"properties":{"analysisReady":{"type":"boolean"},"coordinateFrame":{"enum":["north-up","drawing-up"],"type":"string"},"northKnown":{"type":"boolean"},"scaleKnown":{"type":"boolean"},"units":{"enum":["m","drawing-units"],"type":"string"}},"required":["northKnown","scaleKnown","analysisReady","coordinateFrame","units"],"type":"object"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"plot":{"additionalProperties":true,"type":"object"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"rooms":{"items":{"additionalProperties":false,"anyOf":[{"required":["name"]},{"required":["room"]},{"required":["roomType"]},{"required":["label"]}],"description":"Each room needs a label and EITHER a zone/direction, a rectangle {x, y, w, h} (w/h may be sent as width/height) that lies inside the plot frame (1% tolerance), or a polygon/outline. If a room carries both a zone and geometry (a rectangle or a polygon) that lies in a different zone of the plot, the geometry decides the zone: the room is scored there, roomByRoom shows statedZone and zoneConflict, and warnings lists it.","properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"h":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"height":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"label":{"type":"string"},"name":{"type":"string"},"outline":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"polygon":{"description":"A simple (non-self-crossing) room outline inside the plot frame.","items":{"oneOf":[{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},{"additionalProperties":false,"properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"type":"object"}]},"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"type":"string"},"w":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"width":{"exclusiveMinimum":true,"minimum":0,"type":"number"},"x":{"type":"number"},"y":{"type":"number"},"zone":{"type":"string"}},"type":"object"},"minItems":1,"type":"array"},"zoneResolution":{"default":8,"description":"Compass subdivisions for the traced-outline sector reading (tracedGeometry). Used only with plot.polygon.","enum":[8,16,32],"type":"integer"}},"required":["rooms"],"type":"object"},"propertyId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"taskId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},"required":["expectedRevision","mutationId","propertyId","taskId","plan"],"type":"object"},"VastuRemediationReassessResponse":{"additionalProperties":false,"properties":{"billing":{"additionalProperties":false,"properties":{"charged":{"pattern":"^[0-9]+(\\.[0-9]+)?$","type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuWorkflowData"},"replayed":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","replayed"],"type":"object"},"VastuRemediationTaskData":{"additionalProperties":true,"properties":{"assignee":{"maxLength":160,"minLength":1,"nullable":true,"type":"string"},"completedAt":{"format":"int64","nullable":true,"type":"integer"},"createdAt":{"format":"int64","type":"integer"},"dueDate":{"format":"date","maxLength":10,"minLength":1,"nullable":true,"type":"string"},"evidence":{"items":{"additionalProperties":false,"properties":{"note":{"maxLength":1000,"minLength":1,"nullable":true,"type":"string"},"photoRef":{"maxLength":2048,"minLength":1,"nullable":true,"type":"string"},"reference":{"maxLength":2048,"minLength":1,"type":"string"}},"required":["reference"],"type":"object"},"maxItems":8,"type":"array"},"findingRef":{"maxLength":160,"minLength":1,"pattern":"^/remedies/[0-9]+$","type":"string"},"history":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"reassessment":{"additionalProperties":true,"type":"object"},"reassessmentLink":{"additionalProperties":false,"properties":{"assessmentId":{"type":"string"},"method":{"enum":["POST"],"type":"string"},"operation":{"type":"string"},"propertyId":{"type":"string"},"request":{"additionalProperties":false,"properties":{"propertyId":{"type":"string"}},"required":["propertyId"],"type":"object"},"resultPointer":{"type":"string"},"taskId":{"type":"string"}},"required":["operation","method","request","resultPointer","propertyId","taskId","assessmentId"],"type":"object"},"remedyKey":{"maxLength":160,"minLength":1,"type":"string"},"reportRef":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"status":{"enum":["pending","in_progress","completed","cancelled"],"type":"string"},"taskId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"title":{"maxLength":160,"minLength":1,"type":"string"},"updatedAt":{"format":"int64","type":"integer"}},"required":["taskId","reportRef","findingRef","remedyKey","title","status"],"type":"object"},"VastuRemediationTasksDeleteRequest":{"additionalProperties":false,"properties":{"confirmId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"id":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},"required":["id","confirmId"],"type":"object"},"VastuRemediationTasksDeleteResponse":{"additionalProperties":false,"properties":{"billing":{"additionalProperties":false,"properties":{"charged":{"pattern":"^[0-9]+(\\.[0-9]+)?$","type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuWorkflowData"},"replayed":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","replayed"],"type":"object"},"VastuRemediationTasksListRequest":{"additionalProperties":false,"properties":{"propertyId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},"required":["propertyId"],"type":"object"},"VastuRemediationTasksListResponse":{"additionalProperties":false,"properties":{"billing":{"additionalProperties":false,"properties":{"charged":{"pattern":"^[0-9]+(\\.[0-9]+)?$","type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuWorkflowData"},"replayed":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","replayed"],"type":"object"},"VastuRemediationTasksUpsertRequest":{"additionalProperties":false,"properties":{"expectedRevision":{"format":"int64","maximum":9223372036854775806,"minimum":0,"type":"integer"},"mutationId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"propertyId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"task":{"additionalProperties":false,"properties":{"assignee":{"maxLength":160,"minLength":1,"nullable":true,"type":"string"},"dueDate":{"format":"date","maxLength":10,"minLength":1,"nullable":true,"type":"string"},"evidence":{"items":{"additionalProperties":false,"properties":{"note":{"maxLength":1000,"minLength":1,"nullable":true,"type":"string"},"photoRef":{"maxLength":2048,"minLength":1,"nullable":true,"type":"string"},"reference":{"maxLength":2048,"minLength":1,"type":"string"}},"required":["reference"],"type":"object"},"maxItems":8,"type":"array"},"findingRef":{"maxLength":160,"minLength":1,"pattern":"^/remedies/[0-9]+$","type":"string"},"remedyKey":{"maxLength":160,"minLength":1,"type":"string"},"reportRef":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"status":{"enum":["pending","in_progress","completed","cancelled"],"type":"string"},"taskId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"title":{"maxLength":160,"minLength":1,"type":"string"}},"required":["taskId","reportRef","findingRef","remedyKey","title","status"],"type":"object"}},"required":["expectedRevision","mutationId","propertyId","task"],"type":"object"},"VastuRemediationTasksUpsertResponse":{"additionalProperties":false,"properties":{"billing":{"additionalProperties":false,"properties":{"charged":{"pattern":"^[0-9]+(\\.[0-9]+)?$","type":"string"},"currency":{"enum":["USD"],"type":"string"}},"required":["charged","currency"],"type":"object"},"data":{"$ref":"#/components/schemas/VastuWorkflowData"},"replayed":{"type":"boolean"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","replayed"],"type":"object"},"VastuRemedyComparisonData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"after":{"additionalProperties":true,"properties":{"defectCount":{"type":"integer"},"defects":{"items":{"additionalProperties":true,"properties":{"classification":{"description":"Provenance class of the placement verdict this row reports: classical only for an exact Brihat Samhita 53.118 placement, else convention.","type":"string"},"issue":{"type":"string"},"recommendedZone":{"nullable":true,"type":"string"},"remedy":{"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"room":{"type":"string"},"severity":{"type":"string"},"source":{"description":"Provenance of the placement verdict (not of the remedy).","type":"string"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"grade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"prescribedCount":{"type":"integer"},"score":{"nullable":true,"type":"integer"}},"type":"object"},"before":{"additionalProperties":true,"properties":{"defectCount":{"type":"integer"},"defects":{"items":{"additionalProperties":true,"properties":{"classification":{"description":"Provenance class of the placement verdict this row reports: classical only for an exact Brihat Samhita 53.118 placement, else convention.","type":"string"},"issue":{"type":"string"},"recommendedZone":{"nullable":true,"type":"string"},"remedy":{"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"room":{"type":"string"},"severity":{"type":"string"},"source":{"description":"Provenance of the placement verdict (not of the remedy).","type":"string"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"grade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"prescribedCount":{"type":"integer"},"score":{"nullable":true,"type":"integer"}},"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"notAssessed":{"description":"Recognised spaces with no placement rule (balcony, parking, garage, lift, lobby, corridor, terrace, verandah, porch, sit-out, utility, wash area, garden, lawn, courtyard, shaft, duct). Listed, never graded, never counted in the score.","items":{"additionalProperties":false,"properties":{"graded":{"enum":[false],"type":"boolean"},"reason":{"enum":["no placement rule for this space type"],"type":"string"},"room":{"type":"string"},"zone":{"type":"string"}},"required":["room","zone","reason","graded"],"type":"object"},"type":"array"},"remediesApplied":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"roomChanges":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scoreDelta":{"nullable":true,"type":"number"},"scoring":{"additionalProperties":true,"type":"object"},"sources":{"items":{"type":"string"},"type":"array"},"system":{"type":"string"},"tradition":{"type":"string"},"verdict":{"nullable":true,"type":"string"},"verified":{"type":"boolean"}},"required":["before","after","scoreDelta","scoring","verdict","remediesApplied","roomChanges","sources"],"type":"object"},"VastuRoadOrientationData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"beneficRoads":{"items":{"type":"string"},"type":"array"},"cautionRoads":{"items":{"type":"string"},"type":"array"},"chaturMukhi":{"type":"boolean"},"hasNorthOrEastRoad":{"type":"boolean"},"input":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"provenance":{"additionalProperties":true,"type":"object"},"roadAnalysis":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"summary":{"type":"string"},"system":{"type":"string"},"veedhiShoola":{"additionalProperties":true,"type":"object"},"verdict":{"type":"string"},"verified":{"type":"boolean"}},"required":["roadAnalysis","beneficRoads","cautionRoads","veedhiShoola","sources","verified"],"type":"object"},"VastuRoomBedroomRequest":{"additionalProperties":true,"description":"Source-derived request for room/bedroom. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"bedroomType":{"description":"Alias of roomType, read when roomType is absent.","type":"string"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"roomType":{"description":"Which bedroom to grade. Omitted, the endpoint grades the master bedroom (SW prescribed), as before. \"master bedroom\" is the master rule; \"bedroom\" is the ordinary bedroom rule (W or S prescribed), the same rule the label gets on audit/single-room, audit/floor-plan, score/* and plan/*; \"guest bedroom\" and \"children bedroom\" are those rooms. Any other room is a 400. The response says which rule it applied: roomTypeApplied, and roomTypeDefaulted (true when the master-bedroom default was used).","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuRoomBedroomResponse":{"description":"Typed success envelope for room/bedroom.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoomData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRoomCapture":{"additionalProperties":false,"description":"One device room capture in metres, +X east and +Y true north. Caller-reported; the server does not attest it.","properties":{"attestation":{"enum":["caller-reported"],"type":"string"},"captureId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"capturedAtEpoch":{"description":"Unix time in seconds","format":"int64","minimum":0,"type":"integer"},"device":{"additionalProperties":false,"properties":{"depth":{"enum":["lidar","arcore-depth","none"],"type":"string"},"method":{"enum":["roomplan","arkit-raycast","arcore-hit","webxr-hit","manual-trace"],"type":"string"},"platform":{"enum":["ios","android","web"],"type":"string"}},"required":["platform","method","depth"],"type":"object"},"frame":{"additionalProperties":false,"properties":{"axes":{"enum":["+X east,+Y true north"],"type":"string"},"north":{"additionalProperties":false,"description":"How north was found. referenceFrame true needs declinationDeg, a declinationProvenance other than unset, yawSamples above 0 and yawSpreadDeg; use manual when north was aligned by hand. magnetic is refused.","properties":{"compassConfidence":{"maximum":1,"minimum":0,"type":"number"},"declinationDeg":{"description":"East positive. Required for a true frame.","maximum":180,"minimum":-180,"nullable":true,"type":"number"},"declinationProvenance":{"enum":["live","manual","native","fixture","unset"],"type":"string"},"headingSource":{"maxLength":64,"minLength":1,"type":"string"},"referenceFrame":{"description":"magnetic is refused; apply the declination on the device first","enum":["true","manual","magnetic"],"type":"string"},"yawSamples":{"minimum":0,"type":"integer"},"yawSpreadDeg":{"maximum":180,"minimum":0,"nullable":true,"type":"number"}},"required":["referenceFrame","headingSource","declinationProvenance","yawSamples","compassConfidence"],"type":"object"},"planToWorld":{"anyOf":[{"$ref":"#/components/schemas/VastuArPlanToWorld"}],"description":"Optional. When sent, the response includes anchor recommendations in this frame.","nullable":true},"units":{"description":"Plan coordinates use this unit; fields suffixed M/M2 always use metres.","enum":["metres","m","ft","mm","in"],"type":"string"}},"required":["units","axes","north"],"type":"object"},"outline":{"additionalProperties":false,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"polygon":{"description":"Plot or room outline, north-up","items":{"description":"[x, y] in metres","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"source":{"description":"The plot or house outline must be traced; a room is zoned by where it sits in it.","enum":["traced"],"type":"string"}},"required":["source"],"type":"object"},"quality":{"additionalProperties":false,"description":"Caller-reported scan quality. pointCloudDensity and its basis come Vedika AI (basis none means density null); lidar-depth needs device.depth lidar; polygonClosure true needs closureGapM of at most 0.05.","properties":{"closureGapM":{"description":"Must be at most 0.05 when polygonClosure is true","maximum":100,"minimum":0,"nullable":true,"type":"number"},"coveragePercent":{"maximum":100,"minimum":0,"nullable":true,"type":"number"},"expectedRoomCount":{"maximum":64,"minimum":1,"nullable":true,"type":"integer"},"gpsConfidence":{"maximum":1,"minimum":0,"nullable":true,"type":"number"},"pointCloudDensity":{"description":"Points per square metre; null with basis none","maximum":1000000,"minimum":0,"nullable":true,"type":"number"},"pointCloudDensityBasis":{"enum":["feature-points","lidar-depth","none"],"type":"string"},"polygonClosure":{"type":"boolean"},"roomCount":{"description":"Must equal rooms.length","maximum":64,"minimum":1,"type":"integer"},"roomsTagged":{"description":"Must equal the number of labelled rooms","maximum":64,"minimum":0,"type":"integer"},"scanDurationSec":{"maximum":86400,"minimum":0,"nullable":true,"type":"number"},"scannedAreaM2":{"exclusiveMinimum":true,"maximum":1000000,"minimum":0,"nullable":true,"type":"number"}},"required":["polygonClosure","pointCloudDensityBasis","roomCount","roomsTagged"],"type":"object"},"rooms":{"items":{"additionalProperties":false,"anyOf":[{"required":["polygon"]},{"required":["multipolygons"]}],"properties":{"areaM2":{"description":"The polygon's own area, within 2%","maximum":1000000,"minimum":0,"type":"number"},"floorIndex":{"description":"One floor per capture","maximum":9,"minimum":-3,"type":"integer"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"heightM":{"anyOf":[{"enum":[0]},{"maximum":12,"minimum":1}],"description":"Ceiling height in metres, or 0 or null when unknown","nullable":true,"type":"number"},"holes":{"items":{"$ref":"#/components/schemas/VastuPlanPolygon"},"maxItems":64,"type":"array"},"id":{"maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"label":{"description":"A room name, matched loosely: kitchen, bedroom, master bedroom, pooja (puja, mandir, prayer), toilet (bath, bathroom), living (hall, drawing, livingRoom), dining (diningRoom), storage (store), treasury (locker, vault), study, staircase, entrance (door, entry), guest or children. Any other name refuses the capture; send label null with labelSource none for a room you cannot name (for example RoomPlan's unidentified).","maxLength":64,"nullable":true,"type":"string"},"labelSource":{"enum":["user","roomplan-section","none"],"type":"string"},"multipolygons":{"description":"Disjoint filled wings. Send either polygon with holes or multipolygons.","items":{"$ref":"#/components/schemas/VastuPlanRegion"},"maxItems":32,"minItems":1,"type":"array"},"openings":{"items":{"additionalProperties":false,"properties":{"centerXY":{"description":"On the room's walls, within 50 cm","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"confidence":{"enum":["low","medium","high"],"type":"string"},"heightM":{"anyOf":[{"enum":[0]},{"maximum":12,"minimum":0.2}],"description":"Opening height in metres, or 0 or null when unknown","nullable":true,"type":"number"},"kind":{"enum":["door","window","opening"],"type":"string"},"widthM":{"maximum":12,"minimum":0.2,"type":"number"}},"required":["kind","centerXY","widthM","confidence"],"type":"object"},"maxItems":32,"type":"array"},"polygon":{"description":"Room outline inside the plot outline","items":{"description":"[x, y] in metres","items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"}},"required":["id","label","labelSource","areaM2","floorIndex"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"},"schema":{"enum":["vedika.roomCapture/1"],"type":"string"}},"required":["schema","captureId","capturedAtEpoch","device","frame","outline","rooms","quality","attestation"],"type":"object"},"VastuRoomData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"acceptableZones":{"description":"Every zone this endpoint grades acceptable: the zones its rule lists as permitted, plus each zone the rule neither prescribes nor forbids. idealZones, acceptableZones and forbiddenZones Vedika AI name each of the nine zones once.","items":{"type":"string"},"type":"array"},"citation":{"additionalProperties":true,"type":"object"},"defect":{"additionalProperties":true,"nullable":true,"type":"object"},"forbiddenZones":{"items":{"type":"string"},"type":"array"},"guidance":{"nullable":true,"type":"string"},"guidanceClassification":{"description":"convention when guidance is served (guidance is never a verse); null otherwise.","nullable":true,"type":"string"},"idealZones":{"items":{"type":"string"},"type":"array"},"merchantCatalogId":{"type":"string"},"merchantCatalogRevision":{"format":"int64","minimum":1,"type":"integer"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"placement":{"additionalProperties":true,"type":"object"},"placementVerified":{"description":"True when the room's zone is the one Brihat Samhita 53.118 names for it.","type":"boolean"},"remedy":{"nullable":true,"type":"string"},"remedyType":{"nullable":true,"type":"string"},"room":{"type":"string"},"roomTypeApplied":{"description":"room/bedroom only: the bedroom rule that graded this placement. master_bedroom when no roomType was sent (the documented default).","enum":["master_bedroom","bedroom","guest","children"],"type":"string"},"roomTypeDefaulted":{"description":"room/bedroom only: true when no roomType was sent and the master-bedroom default was applied; false when the caller named the bedroom.","type":"boolean"},"roomTypeNote":{"description":"room/bedroom only, present when roomTypeDefaulted is true: says which bedroom was graded and how to ask for another.","type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"severity":{"type":"string"},"storageType":{"type":"string"},"system":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"verdict":{"type":"string"},"verified":{"description":"Always false for room operations: every response serves convention guidance. Use placementVerified for the Brihat Samhita 53.118 direction check.","type":"boolean"}},"required":["system","method","room","placement","verdict","severity","idealZones","acceptableZones","forbiddenZones","defect","remedy","remedyType","guidance","citation","verified","meta"],"type":"object"},"VastuRoomDiningRequest":{"additionalProperties":true,"description":"Source-derived request for room/dining. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuRoomDiningResponse":{"description":"Typed success envelope for room/dining.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoomData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRoomKitchenRequest":{"additionalProperties":true,"description":"Source-derived request for room/kitchen. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuRoomKitchenResponse":{"description":"Typed success envelope for room/kitchen.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoomData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRoomLivingRequest":{"additionalProperties":true,"description":"Source-derived request for room/living. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuRoomLivingResponse":{"description":"Typed success envelope for room/living.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoomData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRoomPoojaRequest":{"additionalProperties":true,"description":"Source-derived request for room/pooja. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuRoomPoojaResponse":{"description":"Typed success envelope for room/pooja.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoomData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRoomRequest":{"description":"A room or site-feature placement, not a birth chart.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"maximum":90,"minimum":-90,"type":"number"},"longitude":{"maximum":180,"minimum":-180,"type":"number"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"VastuRoomStaircaseRequest":{"additionalProperties":true,"description":"Source-derived request for room/staircase. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuRoomStaircaseResponse":{"description":"Typed success envelope for room/staircase.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoomData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRoomStoreRequest":{"additionalProperties":true,"description":"Source-derived request for room/store. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuRoomStoreResponse":{"description":"Typed success envelope for room/store.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoomData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRoomStudyRequest":{"additionalProperties":true,"description":"Source-derived request for room/study. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuRoomStudyResponse":{"description":"Typed success envelope for room/study.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoomData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRoomToiletRequest":{"additionalProperties":true,"description":"Source-derived request for room/toilet. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"zone":{"type":"string"}},"required":[],"type":"object"},"VastuRoomToiletResponse":{"description":"Typed success envelope for room/toilet.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoomData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRoomWaterStorageRequest":{"additionalProperties":true,"description":"Source-derived request for room/water-storage. Fields not listed here are ignored.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"placement":{"type":"string"},"plotPolygon":{"items":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"pointXY":{"items":{"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"proposedDirection":{"type":"string"},"proposedZone":{"type":"string"},"storageType":{"description":"Alias of type, read when type is absent.","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"type":{"description":"Which water storage this is. \"underground\" (a well, borewell, sump or underground tank) or \"overhead\" (an elevated or roof tank). Required: the two are graded by different tables.","type":"string"},"zone":{"type":"string"}},"required":["type"],"type":"object"},"VastuRoomWaterStorageResponse":{"description":"Typed success envelope for room/water-storage.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuRoomData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuRuleVersionsData":{"properties":{"currentVersion":{"type":"string"},"retainedVersions":{"type":"integer"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scope":{"type":"string"},"scoringVersion":{"type":"string"},"versions":{"items":{"type":"string"},"type":"array"}},"required":["currentVersion","retainedVersions","versions","scope","scoringVersion"],"type":"object"},"VastuRuleVersionsResponse":{"properties":{"billing":{"type":"object"},"data":{"$ref":"#/components/schemas/VastuRuleVersionsData"},"success":{"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuSavedScan":{"additionalProperties":false,"properties":{"createdAtEpoch":{"type":"integer"},"data":{"$ref":"#/components/schemas/VastuScanStoredData"},"expiresAtEpoch":{"type":"integer"},"scanId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"title":{"type":"string"}},"required":["scanId","title","data","createdAtEpoch","expiresAtEpoch"],"type":"object"},"VastuScanSnapshot":{"additionalProperties":false,"anyOf":[{"required":["rooms"]},{"required":["capture"]}],"description":"Send rooms (with plotPolygon and bearingDeg Vedika AI, or neither), or send capture alone. A capture requires inputSource device-reported; the server derives the labelled rooms, the outline, bearingDeg 0 and the scan quality from it and refuses rooms, plotPolygon, bearingDeg or telemetry alongside it. Coordinates are metres; bearingDeg is the true compass bearing of plan +Y. Input source is a caller assertion, never verified capture. In a stored scan, rooms, plotPolygon and bearingDeg are the values derived from capture.","properties":{"bearingDeg":{"maximum":360,"minimum":0,"type":"number"},"capture":{"$ref":"#/components/schemas/VastuRoomCapture"},"inputSource":{"enum":["self-reported","plan-derived","device-reported"],"type":"string"},"plotPolygon":{"items":{"items":{"maximum":1000000,"minimum":-1000000,"type":"number"},"maxItems":2,"minItems":2,"type":"array"},"maxItems":256,"minItems":3,"type":"array"},"rooms":{"items":{"additionalProperties":false,"description":"Use a recognized room type and compass zone from the audit contract.","properties":{"roomType":{"maxLength":64,"minLength":1,"type":"string"},"zone":{"maxLength":16,"minLength":1,"type":"string"}},"required":["roomType","zone"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"},"telemetry":{"$ref":"#/components/schemas/VastuScanTelemetry"}},"required":["inputSource"],"type":"object"},"VastuScanStoredData":{"additionalProperties":false,"properties":{"assessmentNote":{"type":"string"},"audit":{"$ref":"#/components/schemas/VastuDetailedFloorPlanAuditData"},"captureVerification":{"enum":["unverified-caller-input"],"type":"string"},"geometryUnits":{"enum":["metres"],"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scanQuality":{"allOf":[{"$ref":"#/components/schemas/VastuArScanQualityData"}],"nullable":true},"schemaVersion":{"enum":[1],"type":"integer"},"snapshot":{"$ref":"#/components/schemas/VastuScanSnapshot"}},"required":["schemaVersion","propertyId","snapshot","audit","scanQuality","captureVerification","geometryUnits","assessmentNote"],"type":"object"},"VastuScanTelemetry":{"additionalProperties":false,"description":"Caller-reported telemetry, never device attestation. Optional room counts are needed for coverage acceptance; omitted counts remain unknown.","properties":{"compassConfidence":{"maximum":1,"minimum":0,"type":"number"},"expectedRoomCount":{"maximum":64,"minimum":1,"type":"integer"},"gpsConfidence":{"maximum":1,"minimum":0,"type":"number"},"pointCloudDensity":{"maximum":1000000,"minimum":0,"type":"number"},"polygonClosure":{"type":"boolean"},"roomCount":{"maximum":64,"minimum":0,"type":"integer"},"roomsTagged":{"maximum":64,"minimum":0,"type":"integer"},"scanDurationSec":{"maximum":86400,"minimum":0,"type":"number"},"scannedAreaM2":{"exclusiveMinimum":true,"maximum":1000000,"minimum":0,"type":"number"}},"required":["pointCloudDensity","polygonClosure","compassConfidence","gpsConfidence","roomsTagged","scanDurationSec","scannedAreaM2"],"type":"object"},"VastuScansDeleteData":{"additionalProperties":false,"properties":{"deleted":{"type":"boolean"},"deletionScope":{"type":"string"},"persistence":{"enum":["account-store","preview-only"],"type":"string"},"previewNote":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scanId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"}},"required":["scanId","deleted","deletionScope","persistence"],"type":"object"},"VastuScansDeleteRequest":{"additionalProperties":false,"properties":{"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"scanId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["scanId"],"type":"object"},"VastuScansDeleteResponse":{"properties":{"billing":{"allOf":[{"$ref":"#/components/schemas/PublicBilling"}],"nullable":true},"data":{"$ref":"#/components/schemas/VastuScansDeleteData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuScansListData":{"additionalProperties":false,"properties":{"nextCursor":{"nullable":true,"type":"string"},"paginationNote":{"type":"string"},"persistence":{"enum":["account-store","preview-only"],"type":"string"},"previewNote":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scans":{"items":{"$ref":"#/components/schemas/VastuSavedScan"},"maxItems":50,"minItems":0,"type":"array"}},"required":["scans","nextCursor","persistence"],"type":"object"},"VastuScansListRequest":{"additionalProperties":false,"properties":{"cursor":{"description":"Return nextCursor unchanged; omit for the first page.","maxLength":256,"nullable":true,"type":"string"},"limit":{"maximum":50,"minimum":1,"type":"integer"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"requestId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["requestId","limit"],"type":"object"},"VastuScansListResponse":{"properties":{"billing":{"allOf":[{"$ref":"#/components/schemas/PublicBilling"}],"nullable":true},"data":{"$ref":"#/components/schemas/VastuScansListData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuScansRetrieveData":{"additionalProperties":false,"properties":{"persistence":{"enum":["account-store","preview-only"],"type":"string"},"previewNote":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scan":{"$ref":"#/components/schemas/VastuSavedScan"}},"required":["scan","persistence"],"type":"object"},"VastuScansRetrieveRequest":{"additionalProperties":false,"properties":{"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"requestId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"scanId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["requestId","scanId"],"type":"object"},"VastuScansRetrieveResponse":{"properties":{"billing":{"allOf":[{"$ref":"#/components/schemas/PublicBilling"}],"nullable":true},"data":{"$ref":"#/components/schemas/VastuScansRetrieveData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuScansSaveData":{"additionalProperties":false,"properties":{"deviceAttestation":{"allOf":[{"$ref":"#/components/schemas/VastuDeviceAttestationStatus"}],"description":"Present for a snapshot with a capture. Response metadata only: it is not part of the stored scan, so it never changes the scan's content identity. A replay reports the outcome recorded when the save was verified."},"persistence":{"enum":["account-store","preview-only"],"type":"string"},"previewNote":{"type":"string"},"replayed":{"type":"boolean"},"retentionNote":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scan":{"$ref":"#/components/schemas/VastuSavedScan"}},"required":["scan","replayed","persistence"],"type":"object"},"VastuScansSaveRequest":{"additionalProperties":false,"properties":{"deviceAttestation":{"allOf":[{"$ref":"#/components/schemas/VastuDeviceAttestation"}],"description":"Accepted only with snapshot.capture. Verified before billing; never stored. A retry of a completed save replays without a new challenge."},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"retentionDays":{"maximum":30,"minimum":1,"type":"integer"},"scanId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"snapshot":{"$ref":"#/components/schemas/VastuScanSnapshot"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"title":{"description":"Nonblank; at most 160 UTF-8 bytes.","maxLength":160,"minLength":1,"type":"string"}},"required":["scanId","propertyId","title","retentionDays","snapshot"],"type":"object"},"VastuScansSaveResponse":{"properties":{"billing":{"allOf":[{"$ref":"#/components/schemas/PublicBilling"}],"nullable":true},"data":{"$ref":"#/components/schemas/VastuScansSaveData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuScansTimelapseData":{"additionalProperties":false,"properties":{"comparisonNote":{"type":"string"},"persistence":{"enum":["account-store","preview-only"],"type":"string"},"physicalChangeVerified":{"enum":[false],"type":"boolean"},"previewNote":{"type":"string"},"propertyId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scans":{"items":{"$ref":"#/components/schemas/VastuSavedScan"},"maxItems":20,"minItems":2,"type":"array"}},"required":["propertyId","scans","comparisonNote","physicalChangeVerified","persistence"],"type":"object"},"VastuScansTimelapseRequest":{"additionalProperties":false,"properties":{"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"requestId":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"scanIds":{"items":{"maxLength":128,"minLength":16,"pattern":"^[A-Za-z0-9_-]{16,128}$","type":"string"},"maxItems":20,"minItems":2,"type":"array","uniqueItems":true},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["requestId","scanIds"],"type":"object"},"VastuScansTimelapseResponse":{"properties":{"billing":{"allOf":[{"$ref":"#/components/schemas/PublicBilling"}],"nullable":true},"data":{"$ref":"#/components/schemas/VastuScansTimelapseData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuScoreComplianceIndexRequest":{"additionalProperties":true,"description":"Source-derived request for score/compliance-index. Fields not listed here are ignored.","oneOf":[{"required":["rooms"]},{"required":["layout"]},{"required":["placements"]}],"properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"layout":{"items":{"additionalProperties":false,"anyOf":[{"required":["roomType"]},{"required":["room"]},{"required":["name"]}],"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge.","type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"minItems":1,"type":"array"},"placements":{"items":{"additionalProperties":false,"anyOf":[{"required":["roomType"]},{"required":["room"]},{"required":["name"]}],"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge.","type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"minItems":1,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"receipt":{"default":false,"description":"Return a signed Ed25519 JWS receipt. Missing signing key returns 503 before billing.","type":"boolean"},"rooms":{"items":{"additionalProperties":false,"anyOf":[{"required":["roomType"]},{"required":["room"]},{"required":["name"]}],"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge.","type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"minItems":1,"type":"array"},"rulesVersion":{"description":"Pin an immutable retained room-placement ruleset; omitted selects current. Geometry normalization is shared.","enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"type":"object"},"VastuScoreComplianceIndexResponse":{"description":"Typed success envelope for score/compliance-index.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuComplianceIndexData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuScoreOverallRequest":{"additionalProperties":true,"description":"Source-derived request for score/overall. Fields not listed here are ignored.","oneOf":[{"required":["rooms"]},{"required":["layout"]},{"required":["placements"]}],"properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"layout":{"items":{"additionalProperties":false,"anyOf":[{"required":["roomType"]},{"required":["room"]},{"required":["name"]}],"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge.","type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"minItems":1,"type":"array"},"placements":{"items":{"additionalProperties":false,"anyOf":[{"required":["roomType"]},{"required":["room"]},{"required":["name"]}],"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge.","type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"minItems":1,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"receipt":{"default":false,"description":"Return a signed Ed25519 JWS receipt. Missing signing key returns 503 before billing.","type":"boolean"},"rooms":{"items":{"additionalProperties":false,"anyOf":[{"required":["roomType"]},{"required":["room"]},{"required":["name"]}],"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge.","type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"minItems":1,"type":"array"},"rulesVersion":{"description":"Pin an immutable retained room-placement ruleset; omitted selects current. Geometry normalization is shared.","enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"type":"object"},"VastuScoreOverallResponse":{"description":"Typed success envelope for score/overall.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuOverallScoreData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuScoreZoneWiseRequest":{"additionalProperties":true,"description":"Source-derived request for score/zone-wise. Fields not listed here are ignored.","oneOf":[{"required":["rooms"]},{"required":["layout"]},{"required":["placements"]}],"properties":{"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"layout":{"items":{"additionalProperties":false,"anyOf":[{"required":["roomType"]},{"required":["room"]},{"required":["name"]}],"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge.","type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"minItems":1,"type":"array"},"placements":{"items":{"additionalProperties":false,"anyOf":[{"required":["roomType"]},{"required":["room"]},{"required":["name"]}],"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge.","type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"minItems":1,"type":"array"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"receipt":{"default":false,"description":"Return a signed Ed25519 JWS receipt. Missing signing key returns 503 before billing.","type":"boolean"},"rooms":{"items":{"additionalProperties":false,"anyOf":[{"required":["roomType"]},{"required":["room"]},{"required":["name"]}],"properties":{"area":{"minimum":0,"type":"number"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"room":{"type":"string"},"roomType":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge.","type":"string"},"zone":{"type":"string"}},"required":["zone"],"type":"object"},"minItems":1,"type":"array"},"rulesVersion":{"description":"Pin an immutable retained room-placement ruleset; omitted selects current. Geometry normalization is shared.","enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"type":"object"},"VastuScoreZoneWiseResponse":{"description":"Typed success envelope for score/zone-wise.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuZoneWiseScoreData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuSingleRoomAuditData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"classification":{"type":"string"},"compliance":{"type":"string"},"computed":{"type":"boolean"},"input":{"additionalProperties":true,"type":"object"},"merchantCatalogId":{"type":"string"},"merchantCatalogRevision":{"format":"int64","minimum":1,"type":"integer"},"recommendedZone":{"description":"Zone the scored rules place this room in (the BS 53.118 zone when the verse names the room). Null when the placement is permitted but not prescribed.","nullable":true,"type":"string"},"remedy":{"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedyKey":{"description":"Stable semantic template key; null when no remedy is supplied.","nullable":true,"type":"string"},"remedyParams":{"additionalProperties":true,"type":"object"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"severity":{"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"verified":{"type":"boolean"}},"required":["input","compliance","severity","recommendedZone","remedy","sources","verified","computed","classification"],"type":"object"},"VastuSpecializedAuditData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"auditedRooms":{"type":"integer"},"buildingDirection":{"additionalProperties":true,"type":"object"},"buildingType":{"type":"string"},"compliantCount":{"type":"integer"},"defectCount":{"type":"integer"},"findings":{"items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"computed":{"type":"boolean"},"deity":{"type":"string"},"deityClassification":{"description":"classical only when the verified verse states this deity name for this zone; else convention.","type":"string"},"deitySource":{"description":"Source for the deity name: a verified verse string, or the convention marker.","type":"string"},"element":{"type":"string"},"elementTradition":{"type":"string"},"function":{"type":"string"},"idealZones":{"items":{"type":"string"},"type":"array"},"note":{"type":"string"},"room":{"type":"string"},"severity":{"type":"string"},"source":{"type":"string"},"status":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"waterEffect":{"additionalProperties":true,"description":"Brihat Samhita 53.119 effect of a body of water in this direction; null for other functions.","nullable":true,"type":"object"},"zone":{"type":"string"}},"type":"object"},"type":"array"},"grade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"idealCount":{"type":"integer"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"notAssessed":{"description":"Recognised spaces with no placement rule (balcony, parking, garage, lift, lobby, corridor, terrace, verandah, porch, sit-out, utility, wash area, garden, lawn, courtyard, shaft, duct). Listed, never graded, never counted in the score.","items":{"additionalProperties":false,"properties":{"graded":{"enum":[false],"type":"boolean"},"reason":{"enum":["no placement rule for this space type"],"type":"string"},"room":{"type":"string"},"zone":{"type":"string"}},"required":["room","zone","reason","graded"],"type":"object"},"type":"array"},"provenance":{"additionalProperties":true,"type":"object"},"receipt":{"properties":{"format":{"enum":["JWS"],"type":"string"},"keyUrl":{"format":"uri","type":"string"},"token":{"maxLength":16384,"type":"string"},"verifyUrl":{"format":"uri","type":"string"}},"required":["format","token","verifyUrl","keyUrl"],"type":"object"},"remedies":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"score":{"nullable":true,"type":"number"},"scoreNote":{"description":"Present when no room was graded; score and grade are then null.","type":"string"},"scoringBasis":{"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"system":{"type":"string"},"uncertainty":{"$ref":"#/components/schemas/VastuMeasurementUncertainty"},"unknownRooms":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}},"required":["system","method","buildingType","score","grade","scoringBasis","auditedRooms","idealCount","compliantCount","defectCount","findings","remedies","unknownRooms","sources","provenance","meta"],"type":"object"},"VastuSpecializedCommercialRequest":{"additionalProperties":true,"description":"Source-derived request for specialized/commercial. Fields not listed here are ignored.","properties":{"buildingFacing":{"type":"string"},"facing":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["roomType"]}]},{"anyOf":[{"required":["zone"]},{"required":["direction"]}]}],"properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge. A room this building type does not list is also rejected.","type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuSpecializedCommercialResponse":{"description":"Typed success envelope for specialized/commercial.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuSpecializedAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuSpecializedEducationalRequest":{"additionalProperties":true,"description":"Source-derived request for specialized/educational. Fields not listed here are ignored.","properties":{"buildingFacing":{"type":"string"},"facing":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["roomType"]}]},{"anyOf":[{"required":["zone"]},{"required":["direction"]}]}],"properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge. A room this building type does not list is also rejected.","type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuSpecializedEducationalResponse":{"description":"Typed success envelope for specialized/educational.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuSpecializedAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuSpecializedFactoryRequest":{"additionalProperties":true,"description":"Source-derived request for specialized/factory. Fields not listed here are ignored.","properties":{"buildingFacing":{"type":"string"},"facing":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["roomType"]}]},{"anyOf":[{"required":["zone"]},{"required":["direction"]}]}],"properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge. A room this building type does not list is also rejected.","type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuSpecializedFactoryResponse":{"description":"Typed success envelope for specialized/factory.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuSpecializedAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuSpecializedHospitalRequest":{"additionalProperties":true,"description":"Source-derived request for specialized/hospital. Fields not listed here are ignored.","properties":{"buildingFacing":{"type":"string"},"facing":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["roomType"]}]},{"anyOf":[{"required":["zone"]},{"required":["direction"]}]}],"properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge. A room this building type does not list is also rejected.","type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuSpecializedHospitalResponse":{"description":"Typed success envelope for specialized/hospital.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuSpecializedAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuSpecializedResidentialRequest":{"additionalProperties":true,"description":"Source-derived request for specialized/residential. Fields not listed here are ignored.","properties":{"buildingFacing":{"type":"string"},"facing":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["roomType"]}]},{"anyOf":[{"required":["zone"]},{"required":["direction"]}]}],"properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge. A room this building type does not list is also rejected.","type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuSpecializedResidentialResponse":{"description":"Typed success envelope for specialized/residential.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuSpecializedAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuSpecializedRestaurantRequest":{"additionalProperties":true,"description":"Source-derived request for specialized/restaurant. Fields not listed here are ignored.","properties":{"buildingFacing":{"type":"string"},"facing":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["roomType"]}]},{"anyOf":[{"required":["zone"]},{"required":["direction"]}]}],"properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge. A room this building type does not list is also rejected.","type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuSpecializedRestaurantResponse":{"description":"Typed success envelope for specialized/restaurant.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuSpecializedAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuSpecializedTempleRequest":{"additionalProperties":true,"description":"Source-derived request for specialized/temple. Fields not listed here are ignored.","properties":{"buildingFacing":{"type":"string"},"facing":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"rooms":{"items":{"additionalProperties":false,"allOf":[{"anyOf":[{"required":["name"]},{"required":["roomType"]}]},{"anyOf":[{"required":["zone"]},{"required":["direction"]}]}],"properties":{"area":{"minimum":0,"type":"number"},"direction":{"type":"string"},"headingErrorDeg":{"description":"Symmetric heading bound in degrees. Optional; absent preserves existing output exactly.","maximum":180,"minimum":0,"type":"number"},"name":{"description":"Room label. Unrecognised labels are rejected with 400 before any charge. A room this building type does not list is also rejected.","type":"string"},"positionErrorM":{"description":"Euclidean position-disc radius in metres. Requires point geometry and an explicit plot frame. Metre geometry is the default; plot.units=ft converts coordinates using the international foot. The plot frame is held fixed.","maximum":10000,"minimum":0,"type":"number"},"roomType":{"type":"string"},"zone":{"type":"string"}},"type":"object"},"minItems":1,"type":"array"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["rooms"],"type":"object"},"VastuSpecializedTempleResponse":{"description":"Typed success envelope for specialized/temple.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuSpecializedAuditData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuSunPathData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses. In polar day or night the sunrise/sunset fields are absent and arc is empty.","properties":{"arc":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"dayStatus":{"description":"polarDay/polarNight: the sun does not cross the horizon, so sunrise, sunset and the arc are absent.","enum":["normal","polarDay","polarNight"],"type":"string"},"declinationDeg":{"type":"number"},"input":{"additionalProperties":false,"properties":{"date":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon","date"],"type":"object"},"noonElevationDeg":{"type":"number"},"noonUtc":{"type":"string"},"note":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"solarNoonAzimuthDeg":{"type":"number"},"solarNoonElevationDeg":{"type":"number"},"solarNoonUtc":{"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"sunriseAzimuthDeg":{"type":"number"},"sunriseUtc":{"type":"string"},"sunsetAzimuthDeg":{"type":"number"},"sunsetUtc":{"type":"string"},"verified":{"type":"boolean"}},"required":["input","arc","sources","verified"],"type":"object"},"VastuSunPathRequest":{"properties":{"datetime":{"format":"date-time","type":"string"},"lat":{"maximum":90,"minimum":-90,"type":"number"},"lon":{"maximum":180,"minimum":-180,"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"}},"required":["lat","lon","datetime"],"type":"object"},"VastuTimingBhumiPujanRequest":{"additionalProperties":true,"description":"Source-derived request for timing/bhumi-pujan. Fields not listed here are ignored.","properties":{"date":{"type":"string"},"datetime":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"time":{"type":"string"},"timezone":{"type":"string"},"windowDays":{"maximum":30,"minimum":1,"type":"integer"}},"required":["latitude","longitude"],"type":"object"},"VastuTimingBhumiPujanResponse":{"description":"Typed success envelope for timing/bhumi-pujan.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuTimingData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuTimingConstructionStartRequest":{"additionalProperties":true,"description":"Source-derived request for timing/construction-start. Fields not listed here are ignored.","properties":{"date":{"type":"string"},"datetime":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"time":{"type":"string"},"timezone":{"type":"string"},"windowDays":{"maximum":30,"minimum":1,"type":"integer"}},"required":["latitude","longitude"],"type":"object"},"VastuTimingConstructionStartResponse":{"description":"Typed success envelope for timing/construction-start.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuTimingData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuTimingData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"activity":{"type":"string"},"auspiciousDates":{"description":"Up to 10 qualifying days, best first. panchang.masa is the lunar month in the amanta reckoning (new moon to new moon, named for the Sun's sidereal sign at the new moon that starts it), read at local noon; panchang.masaSystem names the reckoning. The month rules (months a rite avoids or is held in) apply to this lunar month.","items":{"additionalProperties":true,"type":"object"},"type":"array"},"foundationRite":{"additionalProperties":true,"type":"object"},"guidance":{"additionalProperties":true,"type":"object"},"input":{"additionalProperties":true,"description":"Echo of the scan inputs. panchangSampledAt states the instant each day's panchang is read: local noon (12:00 in the supplied timezone) on each date.","type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"summary":{"additionalProperties":true,"description":"daysScanned, daysQualified and returned. When daysQualified is 0 it also carries reason, in plain words, naming the rule or rules that excluded the window, and excludedByRule, the days excluded per rule (month, nakshatra, tithi, weekday; a day can break more than one rule, so the counts overlap).","type":"object"},"system":{"type":"string"}},"required":["system","method","activity","input","summary","auspiciousDates","meta","guidance"],"type":"object"},"VastuTimingGrihapraveshRequest":{"additionalProperties":true,"description":"Source-derived request for timing/grihapravesh. Fields not listed here are ignored.","properties":{"date":{"type":"string"},"datetime":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"time":{"type":"string"},"timezone":{"type":"string"},"windowDays":{"maximum":30,"minimum":1,"type":"integer"}},"required":["latitude","longitude"],"type":"object"},"VastuTimingGrihapraveshResponse":{"description":"Typed success envelope for timing/grihapravesh.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuTimingData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuTimingVastuShantiRequest":{"additionalProperties":true,"description":"Source-derived request for timing/vastu-shanti. Fields not listed here are ignored.","properties":{"date":{"type":"string"},"datetime":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"propertyId":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"tenantRef":{"description":"Buyer-supplied non-secret attribution identifier. Account-scoped; does not grant property access.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.\\-/]+$","type":"string"},"time":{"type":"string"},"timezone":{"type":"string"},"windowDays":{"maximum":30,"minimum":1,"type":"integer"}},"required":["latitude","longitude"],"type":"object"},"VastuTimingVastuShantiResponse":{"description":"Typed success envelope for timing/vastu-shanti.","properties":{"billing":{"$ref":"#/components/schemas/PublicBilling"},"data":{"$ref":"#/components/schemas/VastuTimingData"},"meta":{"$ref":"#/components/schemas/PublicMeta"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data","billing","meta"],"type":"object"},"VastuWallAnalysisData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"idealOrdering":{"type":"string"},"idealWalls":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"input":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"observedAnalysis":{"additionalProperties":true,"nullable":true,"type":"object"},"principle":{"type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"system":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"}},"required":["idealWalls","observedAnalysis","sources","verified"],"type":"object"},"VastuWorkflowData":{"additionalProperties":false,"properties":{"contentHash":{"maxLength":64,"minLength":1,"type":"string"},"data":{"additionalProperties":true,"properties":{"catalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"items":{"items":{"additionalProperties":false,"properties":{"availability":{"enum":["in_stock","out_of_stock","on_request","unavailable"],"type":"string"},"itemId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"kind":{"enum":["sku","service"],"type":"string"},"label":{"maxLength":160,"minLength":1,"type":"string"},"link":{"format":"uri","maxLength":2048,"minLength":1,"nullable":true,"pattern":"^https://","type":"string"},"referralRef":{"maxLength":128,"minLength":1,"nullable":true,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"remedyKey":{"maxLength":160,"minLength":1,"type":"string"}},"required":["remedyKey","itemId","kind","label","availability"],"type":"object"},"type":"array"},"propertyId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"tasks":{"additionalProperties":{"$ref":"#/components/schemas/VastuRemediationTaskData"},"type":"object"}},"type":"object"},"deleted":{"type":"boolean"},"expiresAt":{"format":"int64","type":"integer"},"merchantCatalogId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"merchantCatalogRevision":{"format":"int64","maximum":9223372036854775806,"minimum":0,"type":"integer"},"mutationId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"remedies":{"items":{"additionalProperties":true,"properties":{"classification":{"type":"string"},"mappedItems":{"items":{"additionalProperties":false,"properties":{"availability":{"enum":["in_stock","out_of_stock","on_request","unavailable"],"type":"string"},"itemId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"kind":{"enum":["sku","service"],"type":"string"},"label":{"maxLength":160,"minLength":1,"type":"string"},"link":{"format":"uri","maxLength":2048,"minLength":1,"nullable":true,"pattern":"^https://","type":"string"},"referralRef":{"maxLength":128,"minLength":1,"nullable":true,"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"},"remedyKey":{"maxLength":160,"minLength":1,"type":"string"}},"required":["remedyKey","itemId","kind","label","availability"],"type":"object"},"type":"array"},"remedy":{"maxLength":4000,"minLength":1,"type":"string"},"remedyKey":{"maxLength":160,"minLength":1,"type":"string"},"source":{"type":"string"}},"type":"object"},"type":"array"},"revision":{"format":"int64","maximum":9223372036854775806,"minimum":0,"type":"integer"},"updatedAt":{"format":"int64","type":"integer"}},"required":["revision"],"type":"object"},"VastuWorkspaceData":{"properties":{"deletedRecords":{"type":"integer"},"deliveryMode":{"type":"string"},"expiresAt":{"format":"int64","type":"integer"},"headers":{"additionalProperties":true,"type":"object"},"html":{"type":"string"},"id":{"type":"string"},"maxRecords":{"type":"integer"},"payload":{"type":"string"},"record":{"additionalProperties":true,"type":"object"},"records":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"replayed":{"type":"boolean"},"reset":{"type":"boolean"},"retentionDays":{"type":"integer"},"svg":{"type":"string"},"title":{"type":"string"}},"required":[],"type":"object"},"VastuWorkspaceRequest":{"additionalProperties":false,"properties":{"drawing":{"additionalProperties":false,"properties":{"dimensions":{"default":true,"type":"boolean"},"fieldEvidence":{"items":{"additionalProperties":false,"properties":{"imageDataUrl":{"nullable":true,"type":"string"},"label":{"type":"string"},"note":{"type":"string"},"roomId":{"nullable":true,"type":"string"}},"required":["label"],"type":"object"},"maxItems":6,"type":"array"},"format":{"default":"html","enum":["html","pdf"],"type":"string"},"paperSize":{"default":"A3","enum":["A3","A2"],"type":"string"},"plan":{"additionalProperties":true,"type":"object"},"scaleDenominator":{"default":100,"enum":[50,100,200],"type":"integer"},"titleBlock":{"additionalProperties":false,"properties":{"architect":{"type":"string"},"date":{"type":"string"},"drawingNumber":{"type":"string"},"project":{"type":"string"},"revision":{"type":"string"}},"required":["project","architect"],"type":"object"},"zoneOverlay":{"default":true,"type":"boolean"}},"required":["plan","titleBlock"],"type":"object"},"idempotencyKey":{"maxLength":128,"minLength":1,"type":"string"},"input":{"additionalProperties":true,"type":"object"},"jobId":{"type":"string"},"outcome":{"enum":["completed","failed"],"type":"string"},"propertyId":{"type":"string"},"title":{"type":"string"},"webhookSecret":{"maxLength":256,"minLength":16,"type":"string"}},"required":[],"type":"object"},"VastuWorkspaceResponse":{"properties":{"billing":{"additionalProperties":true,"type":"object"},"data":{"$ref":"#/components/schemas/VastuWorkspaceData"},"mode":{"type":"string"},"success":{"type":"boolean"}},"required":["success","data"],"type":"object"},"VastuZoneReferenceData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"note":{"type":"string"},"referenceVersion":{"description":"Opaque revision of canonical reference content, including provenance. Replace a cached table when this value changes. Paid refresh calls retain normal billing; this is not an HTTP cache validator.","pattern":"^sha256:[0-9a-f]{64}$","type":"string"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"system":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"zoneCount":{"type":"integer"},"zones":{"items":{"additionalProperties":true,"type":"object"},"type":"array"}},"required":["zoneCount","zones","verified","referenceVersion"],"type":"object"},"VastuZoneWiseScoreData":{"additionalProperties":false,"description":"Result fields checked against recorded sandbox responses.","properties":{"basis":{"type":"string"},"indexType":{"type":"string"},"input":{"additionalProperties":true,"type":"object"},"meta":{"additionalProperties":true,"type":"object"},"method":{"type":"string"},"notAssessed":{"description":"Recognised spaces with no placement rule (balcony, parking, garage, lift, lobby, corridor, terrace, verandah, porch, sit-out, utility, wash area, garden, lawn, courtyard, shaft, duct). Listed, never graded, never counted in the score.","items":{"additionalProperties":false,"properties":{"graded":{"enum":[false],"type":"boolean"},"reason":{"enum":["no placement rule for this space type"],"type":"string"},"room":{"type":"string"},"zone":{"type":"string"}},"required":["room","zone","reason","graded"],"type":"object"},"type":"array"},"overallGrade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","nullable":true,"type":"string"},"overallScore":{"nullable":true,"type":"number"},"receipt":{"properties":{"format":{"enum":["JWS"],"type":"string"},"keyUrl":{"format":"uri","type":"string"},"token":{"maxLength":16384,"type":"string"},"verifyUrl":{"format":"uri","type":"string"}},"required":["format","token","verifyUrl","keyUrl"],"type":"object"},"rulesVersion":{"enum":["vastu-rules-2026-09-23","vastu-rules-2026-10-04"],"type":"string"},"scoreNote":{"description":"Present when no room was graded; score and grade are then null.","type":"string"},"scoring":{"additionalProperties":false,"properties":{"basis":{"type":"string"},"classification":{"type":"string"},"comparisonBasis":{"type":"string"},"duplicatePlacementCount":{"minimum":0,"type":"integer"},"formula":{"type":"string"},"inputPlacementCount":{"minimum":0,"type":"integer"},"uniquePlacementCount":{"minimum":0,"type":"integer"},"unit":{"type":"string"},"verified":{"enum":[false],"type":"boolean"},"version":{"type":"string"}},"required":["version","unit","formula","basis","comparisonBasis","classification","inputPlacementCount","uniquePlacementCount","duplicatePlacementCount","verified"],"type":"object"},"sources":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"strongestZone":{"nullable":true,"type":"string"},"system":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"weakestZone":{"nullable":true,"type":"string"},"zoneWeightingNote":{"type":"string"},"zones":{"items":{"additionalProperties":true,"properties":{"grade":{"description":"Letter band of the 0-100 Vedika compliance index: A 85-100, B 70-84, C 55-69, D 40-54, E 0-39. The same scale on every Vastu endpoint that grades this index. A computed convention of the index, not a classical verse.","type":"string"},"rooms":{"items":{"additionalProperties":true,"properties":{"compliant":{"type":"boolean"},"issue":{"type":"string"},"recommendedZone":{"nullable":true,"type":"string"},"remedy":{"nullable":true,"type":"string"},"remedyClassification":{"description":"\"convention\" when the row carries a remedy, else null. Remedies (yantra, colour, pyramid, camphor) are modern convention, never a classical verse; `source` describes the placement verdict only.","nullable":true,"type":"string"},"remedySource":{"description":"Provenance of the remedy text, e.g. \"modern Vastu remedial practice (not a classical verse)\"; null when the row carries no remedy.","nullable":true,"type":"string"},"remedyType":{"nullable":true,"type":"string"},"room":{"type":"string"},"severity":{"type":"string"}},"type":"object"},"type":"array"},"score":{"type":"integer"},"source":{"type":"string"},"tradition":{"type":"string"},"verified":{"type":"boolean"},"worstSeverity":{"type":"string"},"zone":{"type":"string"},"zoneImportance":{"type":"string"},"zoneWeight":{"type":"integer"}},"type":"object"},"type":"array"}},"required":["zones","sources","verified","overallScore","overallGrade","scoring"],"type":"object"},"VedikaEnvelope":{"properties":{"billing":{"properties":{"cost":{"example":0.005,"type":"number"},"currency":{"example":"USD","type":"string"},"wallet_balance":{"example":11.42,"type":"number"}},"type":"object"},"data":{"description":"Endpoint-specific computed result.","type":"object"},"meta":{"properties":{"dataSource":{"example":"vedika-ephemeris","type":"string"},"engine":{"example":"vedika-intelligence","type":"string"}},"type":"object"},"success":{"example":true,"type":"boolean"}},"type":"object"}},"securitySchemes":{"AdminBearerAuth":{"bearerFormat":"Vedika admin session JWT","scheme":"bearer","type":"http"},"AdminSecretAuth":{"in":"header","name":"x-admin-secret","type":"apiKey"},"ApiKeyAuth":{"description":"Also accepted. Used only when no Bearer credential is present.","in":"header","name":"X-API-Key","type":"apiKey"},"BearerAuth":{"description":"Preferred. Send Authorization: Bearer <key>. Takes precedence over X-API-Key when both are present. A rejected key returns 401 with an RFC 6750 WWW-Authenticate: Bearer error=\"invalid_token\" challenge whose error_description states the problem. Do not retry a 401 - fix the key.","scheme":"bearer","type":"http"}}},"info":{"description":"Vedic, Western, Chinese astrology, divination, matchmaking, daily horoscope, AI astrology query, and voice — by category. Authenticate with an API key (X-API-Key). Free sandbox at /sandbox/*.","title":"Vedika Intelligence API","version":"2.0.0"},"openapi":"3.0.3","paths":{"/.well-known/vastu-receipt-keys.json":{"get":{"operationId":"getVastuReceiptKeys","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"keys":{"items":{"properties":{"alg":{"type":"string"},"crv":{"type":"string"},"kid":{"type":"string"},"kty":{"type":"string"},"use":{"type":"string"},"x":{"type":"string"}},"required":["kty","crv","kid","x","alg","use"],"type":"object"},"type":"array"}},"required":["keys"],"type":"object"}}},"description":"Public JWKS; never includes private key material"},"503":{"description":"Signing key and public verification keys are not configured"}},"security":[],"summary":"Public Ed25519 verification keys; free"}},"/api/admin/enterprise/licenses":{"post":{"description":"Requires Admin or SuperAdmin authority through either a Vedika admin session JWT or x-admin-secret. The plaintext license key is returned once and is never stored. An exact retry after a lost create response returns 409 because the key cannot be replayed.","operationId":"createAdminEnterpriseLicense","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"customerEmail":{"format":"email","maxLength":320,"minLength":3,"type":"string"},"customerId":{"maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.-]+$","type":"string"},"customerName":{"maxLength":200,"minLength":1,"type":"string"},"durationMonths":{"maximum":36,"minimum":1,"type":"integer"},"idempotencyKey":{"$ref":"#/components/schemas/AdminLicenseIdempotencyKey"},"region":{"maxLength":64,"minLength":1,"pattern":"^[a-z0-9-]+$","type":"string"},"tier":{"enum":["ENTERPRISE_STANDARD","ENTERPRISE_PLUS","ENTERPRISE_UNLIMITED"],"type":"string"}},"required":["idempotencyKey","customerId","customerName","customerEmail","tier","durationMonths"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseCreateResponse"}}},"description":"License created. The plaintext licenseKey appears only in this first response."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}},"text/plain":{"schema":{"type":"string"}}},"description":"Invalid field, tier, duration, or idempotency key; malformed JSON uses the Axum text rejection."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Authenticated identity has insufficient admin authority or an unverified email."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Uniform response for missing or invalid admin authentication."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Idempotency conflict or the one-time create key cannot be replayed."},"415":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Content-Type is not application/json."},"422":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Syntactically valid JSON cannot be deserialized, including unknown request fields."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"x-admin-secret rate limit exceeded.","headers":{"Retry-After":{"schema":{"minimum":1,"type":"integer"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Internal storage or transaction failure."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Mutation outcome is unknown; retry the exact request with the same idempotencyKey."}},"security":[{"AdminBearerAuth":[]},{"AdminSecretAuth":[]}],"summary":"Create an enterprise license","tags":["Admin Enterprise Licenses"],"x-vedika-internal":true}},"/api/admin/enterprise/licenses/{id}":{"put":{"operationId":"updateAdminEnterpriseLicense","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"minProperties":2,"properties":{"customerEmail":{"format":"email","maxLength":320,"minLength":3,"type":"string"},"customerName":{"maxLength":200,"minLength":1,"type":"string"},"idempotencyKey":{"$ref":"#/components/schemas/AdminLicenseIdempotencyKey"},"notes":{"maxLength":2000,"type":"string"},"region":{"maxLength":64,"minLength":1,"pattern":"^[a-z0-9-]+$","type":"string"},"tier":{"enum":["ENTERPRISE_STANDARD","ENTERPRISE_PLUS","ENTERPRISE_UNLIMITED"],"type":"string"}},"required":["idempotencyKey"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseMutationResponse"}}},"description":"License updated or an exact prior result replayed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}},"text/plain":{"schema":{"type":"string"}}},"description":"Invalid update fields or idempotency key; malformed JSON uses the Axum text rejection."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Authenticated identity has insufficient admin authority or an unverified email."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Uniform authentication failure, or the license does not exist for an authenticated admin."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Idempotency key was used for a different update."},"415":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Content-Type is not application/json."},"422":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Syntactically valid JSON cannot be deserialized, including unknown request fields."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"x-admin-secret rate limit exceeded.","headers":{"Retry-After":{"schema":{"minimum":1,"type":"integer"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Internal storage or transaction failure."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Mutation outcome is unknown; retry the exact request with the same idempotencyKey."}},"security":[{"AdminBearerAuth":[]},{"AdminSecretAuth":[]}],"summary":"Update an enterprise license","tags":["Admin Enterprise Licenses"],"x-vedika-internal":true}},"/api/admin/enterprise/licenses/{id}/renew":{"post":{"operationId":"renewAdminEnterpriseLicense","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"durationMonths":{"maximum":36,"minimum":1,"type":"integer"},"idempotencyKey":{"$ref":"#/components/schemas/AdminLicenseIdempotencyKey"}},"required":["idempotencyKey","durationMonths"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseMutationResponse"}}},"description":"License renewed or an exact prior result replayed. Expired licenses become active; revoked licenses are refused."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}},"text/plain":{"schema":{"type":"string"}}},"description":"Invalid duration, revoked license, or invalid idempotency key; malformed JSON uses the Axum text rejection."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Authenticated identity has insufficient admin authority or an unverified email."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Uniform authentication failure, or the license does not exist for an authenticated admin."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Idempotency key was used for a different renewal."},"415":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Content-Type is not application/json."},"422":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Syntactically valid JSON cannot be deserialized, including unknown request fields."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"x-admin-secret rate limit exceeded.","headers":{"Retry-After":{"schema":{"minimum":1,"type":"integer"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Internal storage or transaction failure."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Mutation outcome is unknown; retry the exact request with the same idempotencyKey."}},"security":[{"AdminBearerAuth":[]},{"AdminSecretAuth":[]}],"summary":"Renew an enterprise license","tags":["Admin Enterprise Licenses"],"x-vedika-internal":true}},"/api/admin/enterprise/licenses/{id}/revoke":{"post":{"operationId":"revokeAdminEnterpriseLicense","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"idempotencyKey":{"$ref":"#/components/schemas/AdminLicenseIdempotencyKey"},"reason":{"maxLength":500,"minLength":1,"type":"string"}},"required":["idempotencyKey"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseMutationResponse"}}},"description":"License revoked or an exact prior result replayed."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}},"text/plain":{"schema":{"type":"string"}}},"description":"Invalid reason or idempotency key; malformed JSON uses the Axum text rejection."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Authenticated identity has insufficient admin authority or an unverified email."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Uniform authentication failure, or the license does not exist for an authenticated admin."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Idempotency key was used for a different revoke request."},"415":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Content-Type is not application/json."},"422":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Syntactically valid JSON cannot be deserialized, including unknown request fields."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"x-admin-secret rate limit exceeded.","headers":{"Retry-After":{"schema":{"minimum":1,"type":"integer"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Internal storage or transaction failure."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLicenseError"}}},"description":"Mutation outcome is unknown; retry the exact request with the same idempotencyKey."}},"security":[{"AdminBearerAuth":[]},{"AdminSecretAuth":[]}],"summary":"Revoke an enterprise license","tags":["Admin Enterprise Licenses"],"x-vedika-internal":true}},"/api/dashboard/astrology/query":{"post":{"operationId":"postApiDashboardAstrologyQuery","parameters":[{"description":"Optional response language; availability is endpoint-specific.","in":"query","name":"lang","required":false,"schema":{"default":"en","enum":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDetails":{"date":"1990-05-15","datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"name":"Aarav Sharma","time":"10:30","timezone":"Asia/Kolkata"},"language":"en","question":"What does my chart say about career?","system":"vedic"},"schema":{"properties":{"birthDetails":{"additionalProperties":true,"type":"object"},"language":{"type":"string"},"question":{"type":"string"},"system":{"type":"string"}},"required":["question","birthDetails"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VedikaEnvelope"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Validation error"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"429":{"description":"Rate limit exceeded"}},"security":[{"ApiKeyAuth":[]}],"summary":"Query","tags":["AI Chat"],"x-vedika-language":{"default":"en","selectable":true,"supported":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"]},"x-vedika-response":{"contract":{"contentType":"application/json","kind":"json"},"exampleAvailability":"run-only","exampleSource":"none"}}},"/api/v1/alerts/subscribe":{"post":{"parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"alertTypes":["saturn_return","sade_sati_peak","eclipse_on_natal"],"birthDetails":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"email":"user@example.com","notifyChannels":["email","telegram"],"telegramChatId":"123456789"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"enabledAlertTypes":["saturn_return","sade_sati_peak","eclipse_on_natal"],"message":"Transit alert subscription created. You will receive notifications via your chosen channels when major transits hit your natal chart.","subscriptionId":"sub_a1b2c3d4","success":true}}},"description":"Success"},"400":{"description":"400 (birthDetails required: datetime, latitude, longitude, timezone)"},"401":{"description":"401 (authentication required)"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"500":{"description":"500 (subscribe failed / chart calculation failed)"}},"summary":"Subscribe to automatic transit alerts (Saturn return, Sade Sati peaks, eclipses on natal points) delivered to your chosen channels.","tags":["AI Query"]}},"/api/v1/alerts/subscribe/{id}":{"delete":{"parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"The transit alert subscription ID to cancel.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"message":"unsubscribed","success":true}}},"description":"Success"},"401":{"description":"401 (authentication required)"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"403":{"description":"403 (not your subscription)"},"404":{"description":"404 (subscription not found)"},"500":{"description":"500 (unsubscribe failed)"}},"summary":"Cancel one of your transit alert subscriptions.","tags":["AI Query"]}},"/api/v1/alerts/subscriptions":{"get":{"parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"count":1,"subscriptions":[{"alertTypes":["saturn_return","sade_sati_peak","eclipse_on_natal"],"createdAt":"2026-06-10T08:00:00.000Z","enabled":true,"id":"sub_a1b2c3d4","lastAlertAt":{},"notifyChannels":["email","telegram"],"updatedAt":"2026-06-10T08:00:00.000Z"}],"success":true}}},"description":"Success"},"401":{"description":"401 (authentication required)"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"500":{"description":"500 (list failed)"}},"summary":"List your active transit alert subscriptions and their configured alert types and channels.","tags":["AI Query"]}},"/api/v1/astrology/query":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (preferred). The deprecated 'X-API-Key: <key>' header is also accepted (sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Client-generated unique key (16-64 alphanumerics, hyphens/underscores) to make a retry safe and avoid a double wallet charge.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}},{"description":"Optional B2B per-end-user attribution tag for tenant usage breakdowns.","in":"header","name":"X-End-User-Id","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDetails":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"conversationId":"conv_8f3a21","includeRemedies":true,"language":"en","question":"What does my chart say about my career prospects this year?","responseFormat":"text","saveConversation":true,"speed":"standard","system":"vedic"}}},"description":"Generation controls are checked before billing. `detail` describes the answer shape, not an internal cost knob: `brief`, `standard`, or `detailed`. `brief` always returns a complete, shorter answer and is never cut off mid-word or mid-sentence. `maxTokens` is clamped to 1-4000 and composes with `detail`; non-Eco `detail:detailed` with an explicit value below 384 is refused with `DETAIL_BUDGET_CONFLICT`, while Eco ignores the customer wire cap and uses its fixed safe ceiling. `stop` accepts one string or 1-4 strings of 1-64 characters. `seed` is an integer best-effort sampling hint and does not guarantee identical output. Track A is `responseFormat:json` or `structured`: it is available on every tier and performs best-effort extraction from the natural-language answer; it is not constrained generation. Track B is `responseFormat:json_schema` with `responseSchema`: it requests constrained JSON and fails closed with the coded HTTP 400 `CONTROL_UNSUPPORTED_FOR_TIER` before billing on every launch tier because strict-schema support is still unverified; it never falls back to Track A. Strict schemas require an object root, `additionalProperties:false` on every object, at most 5,000 characters, depth at most 10 schema levels, at most 500 total properties, and at most 500 total enum values. `pattern`, `format`, `minItems`, `maxItems`, and recursive or external `$ref` are rejected with `RESPONSE_SCHEMA_INVALID`; a missing schema returns `RESPONSE_SCHEMA_REQUIRED`; Track B with streaming is refused. Capability matrix: Fast and Standard 2 support detail reasoning effort, customer maxTokens, stop, and seed; Standard 2.5 supports detail through prompt budget and maxTokens but omits reasoning effort and refuses unverified stop and seed; Eco supports detail reasoning effort, stop, and beta seed but pins its wire token cap; Pro Ultra is not built. JSON object mode is verified on Fast and Standard 2, verified only on the Standard 2.5 classifier path, and unverified on Eco and Pro Ultra. Strict JSON Schema remains unverified on all tiers. Any explicit unsupported control returns coded HTTP 400 `CONTROL_UNSUPPORTED_FOR_TIER` before billing and is never ignored. `version` is `2` or `2.5` and is valid only with standard speed.\n\n`vastuContext` (optional) is `{\"report\": <a Vedika Vastu response>}`: ask about a report you already hold from plan/analyze, plan/report, plan/generate, audit or score endpoints. Send the full response or its `data` object, up to 64 KB of JSON (drop `svg`). Birth details are not needed, and the question is answered as a Vastu question. The server reads only whitelisted fields and numbers the rows (`D1` defects, `R1` rooms, `F1` findings, `M1` remedies). When it must trim, it keeps the most severe rows. The report is treated as caller-supplied and unverified; only rows whose source names a Brihat Samhita Ch.53 or Manasara Ch.38 verse are marked as verse-cited. A malformed or oversized report returns HTTP 400 `INVALID_VASTU_CONTEXT` before billing. To ask about a PDF instead, upload it with `POST /api/v1/vastu/chat/uploads` and send `vastuContext: {\"reportRef\": {\"type\": \"upload\", \"id\": \"<uploadId>\"}}` (exactly one of `report` or `reportRef`). The server loads the text you uploaded (your own uploads only: another account's id or an unknown id is HTTP 404; an upload older than 24 hours is HTTP 410 `UPLOAD_EXPIRED`), picks the excerpts most relevant to this question (about 8,000 characters, ids `U1`, `U2`...), and marks them caller-uploaded and unverified; the answer says its findings come from your uploaded document. An upload whose charge has not completed is HTTP 403 `UPLOAD_NOT_PAID`. The response `vastuContext` then also carries `source:\"caller-uploaded-pdf\"` and `uploadId`, and the answer always ends with a fixed sentence saying the findings come from your uploaded document, which Vedika has not verified. The conversation stores only a reference to the upload, never its text; each follow-up turn selects fresh excerpts from the upload for its own question until the upload expires (and only while uploads are enabled); after that the turn is answered without them, the answer says so, and `vastuContext` carries `expired:true` with the `uploadId`. `reportRef` type `scan` is not supported yet. Billing for the question is the normal AI-query charge; the upload was charged once when it was made. With `conversationId`, the report is saved on the conversation and follow-up turns reuse it until a new report replaces it. The response adds top-level `vastuContext` with `digestSha256`, `reportKind`, `itemIds`, `itemsUsed`, `itemsTotal`, `truncated`, `citedItems`, `reusedFromConversation` and `verified:false`; citations of rows that do not exist are removed from the answer. The stream form carries the same object on its `completed` event. Billing is the normal AI-query charge; the report adds input tokens. `POST /sandbox/chat/ask` validates a report free of charge and returns the same metadata with a sample answer.","required":true},"responses":{"200":{"content":{"application/json":{"example":{"birthChart":{"ascendant":"Leo","moonSign":"Taurus","sunSign":"Taurus"},"conversationContext":null,"conversationId":"conv_8f3a21","followUpSuggestions":["Which months this year are most favourable for a job change?","How does my dasha affect my finances?"],"followUps":["Which months this year are most favourable for a job change?","How does my dasha affect my finances?"],"metadata":{"cost":{"costUsd":0.01,"currency":"USD"},"engine":"vedika-intelligence","language":"en","model":"Vedika AI","processing_time_ms":18420,"served":"live","speed":"standard","usage":{"cached_tokens":0,"input_tokens":5120,"output_tokens":640,"total_tokens":5760},"wallet":{"balance_after":12.49,"balance_before":12.5,"currency":"USD","deducted":0.01}},"response":"Your 10th house of career is governed by Saturn, which sits strong in its own sign here, indicating steady professional growth built on discipline rather than sudden leaps. The current Jupiter period favours expansion through skill-building and mentorship.","success":true}}},"description":"Success"},"400":{"description":"400 PROMPT_GUARD_BLOCKED or CONTROL_UNSUPPORTED_FOR_TIER (unsupported controls are rejected before billing)"},"401":{"description":"401 (Unauthorized / NOT_FOUND — missing or invalid API key)"},"402":{"description":"402 (Payment Required — insufficient wallet balance / EVALUATION_LIMIT_REACHED)"},"403":{"description":"403 ENTERPRISE_FEATURE (white-label params on a non-Enterprise plan)"},"429":{"description":"429 (rate limit exceeded for plan tier)"},"500":{"description":"500 ANALYSIS_ERROR"}},"summary":"Ask any natural-language astrology question and receive a grounded, source-cited answer computed from the caller's birth chart.","tags":["AI Query"]}},"/api/v1/astrology/query/stream":{"get":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or deprecated 'X-API-Key').","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"The natural-language astrology question.","in":"query","name":"question","required":true,"schema":{"type":"string"}},{"description":"URL-encoded JSON birth-details object, e.g. {\"datetime\":\"1990-05-15T10:30:00\",\"latitude\":19.07,\"longitude\":72.87,\"timezone\":\"+05:30\"}.","in":"query","name":"birthDetails","required":false,"schema":{"type":"string"}},{"description":"ISO language hint; omit to auto-detect from the question text.","in":"query","name":"language","required":false,"schema":{"type":"string"}},{"description":"'standard' (default), 'fast', or 'eco'. 'eco' selects Vedika Eco — from $0.01 per successful billable query. Token-metered; longer or translated requests may settle higher. Wallet charges are rounded to whole cents.","in":"query","name":"speed","required":false,"schema":{"type":"string"}},{"description":"'text' (default), 'markdown', or 'json'.","in":"query","name":"responseFormat","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":"event: started\\ndata: {\"message\":\"SSE connection established\",\"stage\":0,\"progress\":0}\\n\\nevent: progress\\ndata: {\"stage\":2,\"message\":\"Analyzing chart\",\"progress\":45}\\n\\nevent: completed\\ndata: {\"success\":true,\"response\":\"Your Moon is in Taurus, giving emotional steadiness and a grounded temperament. The current period supports patient, long-term planning over impulsive moves.\",\"metadata\":{\"model\":\"Vedika AI\",\"engine\":\"vedika-intelligence\",\"processing_time_ms\":17650},\"birthChart\":{\"moonSign\":\"Taurus\",\"ascendant\":\"Leo\"},\"followUps\":[\"What does Taurus Moon mean for relationships?\"]}\\n\\nevent: billing_completed\\ndata: {\"charged\":0.0138,\"currency\":\"USD\",\"chargedCents\":1,\"walletDeducted\":0.01,\"walletBalanceAfter\":12.47}\\n\\nevent: data_sources\\ndata: {\"message\":\"Analysis based on: Vedika AI Intelligence, High-precision astronomical calculations\"}"}},"description":"Success"},"400":{"description":"event:error STREAM_ERROR"},"401":{"description":"401 (Unauthorized — missing/invalid API key)"},"402":{"description":"402 INSUFFICIENT_BALANCE_PRECHECK"},"429":{"description":"429 (rate limit exceeded)"}},"summary":"Stream an astrology answer in real time over Server-Sent Events using query-string birth data, for live typing-indicator UIs.","tags":["AI Query"]},"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or deprecated 'X-API-Key').","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional B2B per-end-user attribution tag.","in":"header","name":"X-End-User-Id","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"assistantName":"AstroBuddy","birthDetails":{"datetime":"1992-11-03T14:15:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"},"language":"en","question":"Will this be a good year for marriage?","signOff":"With cosmic blessings","speed":"standard","system":"vedic","systemPrompt":"You are AstroBuddy, a warm relationship-focused guide."}}},"description":"This POST stream form accepts the same generation controls as the buffered query: detail, maxTokens, stop, and seed. `responseFormat:json_schema` requires responseSchema and is refused with streaming until tier support is verified. Unsupported explicit controls fail closed with coded HTTP 400 `CONTROL_UNSUPPORTED_FOR_TIER` before billing.\n\n`vastuContext` (optional) is `{\"report\": <a Vedika Vastu response>}`: ask about a report you already hold from plan/analyze, plan/report, plan/generate, audit or score endpoints. Send the full response or its `data` object, up to 64 KB of JSON (drop `svg`). Birth details are not needed, and the question is answered as a Vastu question. The server reads only whitelisted fields and numbers the rows (`D1` defects, `R1` rooms, `F1` findings, `M1` remedies). When it must trim, it keeps the most severe rows. The report is treated as caller-supplied and unverified; only rows whose source names a Brihat Samhita Ch.53 or Manasara Ch.38 verse are marked as verse-cited. A malformed or oversized report returns HTTP 400 `INVALID_VASTU_CONTEXT` before billing. To ask about a PDF instead, upload it with `POST /api/v1/vastu/chat/uploads` and send `vastuContext: {\"reportRef\": {\"type\": \"upload\", \"id\": \"<uploadId>\"}}` (exactly one of `report` or `reportRef`). The server loads the text you uploaded (your own uploads only: another account's id or an unknown id is HTTP 404; an upload older than 24 hours is HTTP 410 `UPLOAD_EXPIRED`), picks the excerpts most relevant to this question (about 8,000 characters, ids `U1`, `U2`...), and marks them caller-uploaded and unverified; the answer says its findings come from your uploaded document. An upload whose charge has not completed is HTTP 403 `UPLOAD_NOT_PAID`. The response `vastuContext` then also carries `source:\"caller-uploaded-pdf\"` and `uploadId`, and the answer always ends with a fixed sentence saying the findings come from your uploaded document, which Vedika has not verified. The conversation stores only a reference to the upload, never its text; each follow-up turn selects fresh excerpts from the upload for its own question until the upload expires (and only while uploads are enabled); after that the turn is answered without them, the answer says so, and `vastuContext` carries `expired:true` with the `uploadId`. `reportRef` type `scan` is not supported yet. Billing for the question is the normal AI-query charge; the upload was charged once when it was made. With `conversationId`, the report is saved on the conversation and follow-up turns reuse it until a new report replaces it. The response adds top-level `vastuContext` with `digestSha256`, `reportKind`, `itemIds`, `itemsUsed`, `itemsTotal`, `truncated`, `citedItems`, `reusedFromConversation` and `verified:false`; citations of rows that do not exist are removed from the answer. The stream form carries the same object on its `completed` event. Billing is the normal AI-query charge; the report adds input tokens. `POST /sandbox/chat/ask` validates a report free of charge and returns the same metadata with a sample answer.","required":true},"responses":{"200":{"content":{"application/json":{"example":"event: started\\ndata: {\"message\":\"SSE connection established\",\"stage\":0,\"progress\":0,\"whiteLabelMode\":true}\\n\\nevent: completed\\ndata: {\"success\":true,\"response\":\"Your 7th house lord is well-placed and Venus is unafflicted, so the coming year is broadly supportive for marriage, especially in the second half once Jupiter aspects your 7th.\",\"metadata\":{\"model\":\"Vedika AI\",\"engine\":\"vedika-intelligence\",\"processing_time_ms\":19120},\"birthChart\":{\"ascendant\":\"Sagittarius\"},\"followUps\":[\"What remedies strengthen Venus for marriage?\"]}\\n\\nevent: billing_completed\\ndata: {\"charged\":0.0151,\"currency\":\"USD\",\"chargedCents\":2,\"walletDeducted\":0.02,\"walletBalanceAfter\":59.83}"}},"description":"Success"},"400":{"description":"event:error STREAM_ERROR; 400 CONTROL_UNSUPPORTED_FOR_TIER (unsupported controls are rejected before billing)"},"401":{"description":"401 (Unauthorized — missing/invalid API key)"},"402":{"description":"402 INSUFFICIENT_BALANCE_PRECHECK"},"403":{"description":"403 (white-label params require Enterprise plan)"},"429":{"description":"429 (rate limit exceeded)"}},"summary":"Stream an astrology answer over Server-Sent Events with full request body and optional Enterprise white-label persona (custom assistant name, system prompt, sign-off).","tags":["AI Query"]}},"/api/v1/batch":{"post":{"description":"Send the questions in a queries array (1 to 25 items). The batch runs synchronously and returns per-item results; asyncMode is not supported, so omit it or send false. Optional Idempotency-Key header: a retry of the whole batch with the same key does not charge items twice.","parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional. Stable key for retries of the same batch: items already settled are not charged again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"example":"batch-example-0001","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"asyncMode":false,"queries":[{"birthDetails":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"question":"What does my career look like in 2026?"},{"birthDetails":{"datetime":"1992-08-22T14:15:00","latitude":28.61,"longitude":77.21,"timezone":"+05:30"},"question":"When is a favorable time to marry?"}]},"schema":{"properties":{"asyncMode":{"default":false,"description":"Asynchronous batches are not supported; omit or send false.","type":"boolean"},"queries":{"description":"The questions to answer. Each item has a question (up to 2000 characters) and, for chart-specific questions, birthDetails.","items":{"properties":{"birthDetails":{"additionalProperties":true,"type":"object"},"language":{"default":"en","type":"string"},"partnerBirthDetails":{"additionalProperties":true,"type":"object"},"question":{"maxLength":2000,"minLength":1,"type":"string"}},"required":["question"],"type":"object"},"maxItems":25,"minItems":1,"type":"array"}},"required":["queries"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"batchId":"00000000-0000-4000-8000-000000000000","failed":0,"results":[{"data":{},"index":0,"processingTimeMs":0,"success":true},{"data":{},"index":1,"processingTimeMs":0,"success":true}],"status":"completed","succeeded":2,"total":2,"totalProcessingTimeMs":0}}},"description":"Success"},"400":{"description":"400 (missing or empty queries array, more than 25 queries, or a query without a question field)"},"401":{"description":"401 (missing or invalid API key)"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"403":{"description":"403 (Professional/Enterprise plan feature required)"},"500":{"description":"500 (internal server error)"}},"summary":"Submit up to 25 astrology questions in one synchronous batch; each item is billed separately (Professional and higher plans).","tags":["AI Query"]}},"/api/v1/batch/stats":{"get":{"description":"Aggregated over your most recent 1000 batches, newest first. coversAllBatches is false when you have more batches than that window. Free; no charge.","parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"batchesByStatus":{"completed":10,"failed":0,"partial_failure":2},"coversAllBatches":true,"failedQueries":2,"lastBatchAt":"2026-10-08T09:30:00.000Z","scanLimit":1000,"succeededQueries":85,"totalBatches":12,"totalQueries":87},"success":true}}},"description":"Success"},"401":{"description":"401 (missing or invalid API key)"},"500":{"description":"500 (internal server error)"}},"summary":"Get your batch totals: batches, queries, succeeded, failed and the time of your last batch.","tags":["AI Query"]}},"/api/v1/batch/{jobId}":{"delete":{"description":"Nothing is deleted. Free; no charge.","parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"The batchId returned in the submit response.","in":"path","name":"jobId","required":true,"schema":{"type":"string"}}],"responses":{"401":{"description":"401 (missing or invalid API key)"},"404":{"description":"404 (batch not found)"},"409":{"content":{"application/json":{"example":{"batchId":"0b5c1f9e-3c1e-4f55-9a52-2f1f6a3c7e10","code":"BATCH_ALREADY_COMPLETED","error":"This batch has already completed and cannot be cancelled. Batches run synchronously; all results were returned when the batch was submitted.","status":"completed","success":false}}},"description":"409 BATCH_ALREADY_COMPLETED (the batch finished when it was submitted; body carries batchId and status)"},"500":{"description":"500 (internal server error)"}},"summary":"Cancel a batch. Batches run to completion before the submit call returns, so a found batch is already finished.","tags":["AI Query"]},"get":{"description":"Returns the stored record of a batch you submitted. Results are per-item summaries (index, success, error, processingTimeMs); the answers themselves are returned only in the submit response. Batches owned by another account return 404. Free; no charge.","parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"The batchId returned in the submit response.","in":"path","name":"jobId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"batchId":"0b5c1f9e-3c1e-4f55-9a52-2f1f6a3c7e10","completedAt":"2026-10-08T09:30:04.300Z","createdAt":"2026-10-08T09:30:00.000Z","failed":1,"results":[{"index":0,"processingTimeMs":4210,"success":true},{"error":"Insufficient credits","index":1,"processingTimeMs":3,"success":false}],"resultsDetail":"summary","status":"partial_failure","succeeded":1,"total":2,"totalProcessingTimeMs":4300},"success":true}}},"description":"Success"},"401":{"description":"401 (missing or invalid API key)"},"404":{"description":"404 (batch not found)"},"500":{"description":"500 (internal server error)"}},"summary":"Get a submitted batch: its status, counts and a per-item summary.","tags":["AI Query"]}},"/api/v1/chart":{"post":{"parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDetails":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"placeOfBirth":"Mumbai, India"},"chartType":"D1"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"chartData":{"ascendant":{"longitude":95.2,"sign":3},"houses":[],"planets":[{"house":11,"longitude":30.84,"name":"Sun","sign":1}]},"metadata":{"chartType":"D1","creditsRemaining":997,"creditsUsed":3,"engine":"vedika-intelligence"}}}},"description":"Success"},"400":{"description":"400 LOCATION_NOT_FOUND"},"401":{"description":"401 (missing or invalid API key)"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"500":{"description":"500 CHART_ERROR"}},"summary":"Generate a complete Vedic birth (Rashi/D1) chart with planetary positions, houses and ascendant from birth details.","tags":["AI Query"]}},"/api/v1/compatibility":{"post":{"parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"analysisType":"comprehensive","person1":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"placeOfBirth":"Mumbai, India","timeOfBirth":"10:30"},"person2":{"dateOfBirth":"1992-08-22","latitude":28.61,"longitude":77.21,"placeOfBirth":"Delhi, India","timeOfBirth":"14:15"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"compatibility":{"factors":{"bhakoot":0,"gana":6,"graha_maitri":5,"nadi":8,"tara":3,"varna":1,"vashya":2,"yoni":4},"matchResult":"Very Good","maxScore":36,"percentage":75,"recommendation":"Compatible","score":27},"metadata":{"analysisType":"comprehensive","creditsRemaining":996,"creditsUsed":4}}}},"description":"Success"},"400":{"description":"400 LOCATION_NOT_FOUND"},"401":{"description":"401 (missing or invalid API key)"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"422":{"description":"422 CALCULATION_FAILED"},"500":{"description":"500 COMPATIBILITY_ERROR"}},"summary":"Score relationship compatibility between two people using Vedic Guna Milan (Ashtakoot) matching out of 36 points.","tags":["AI Query"]}},"/api/v1/conversations":{"get":{"description":"List active conversations when conversation memory is enabled. Pass data.nextCursor unchanged to continue, even after an empty page. Stop when nextCursor is null. paginationAvailable=false means the serving backend cannot continue. Activity may change between requests; this is not a snapshot. No usage charge is applied by this read.","parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Maximum returned conversations. The server clamps to1–100; default10.","in":"query","name":"limit","required":false,"schema":{"default":10,"maximum":100,"minimum":1,"type":"integer"}},{"description":"The prior data.nextCursor, unchanged. It is bound to the authenticated user.","in":"query","name":"cursor","required":false,"schema":{"maxLength":2048,"minLength":1,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"conversations":[{"conversationId":"conv_example","createdAt":"2026-09-09T01:00:00Z","expiresAt":"2026-09-10T01:00:00Z","hasBirthDetails":false,"hasSummarizedContext":false,"lastActivityAt":"2026-09-09T01:00:00Z","messageCount":0,"status":"active","updatedAt":"2026-09-09T01:00:00Z"}],"count":1,"nextCursor":null,"paginationAvailable":true},"success":true},"schema":{"properties":{"data":{"properties":{"conversations":{"items":{"properties":{"conversationId":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"expiresAt":{"format":"date-time","type":"string"},"hasBirthDetails":{"type":"boolean"},"hasSummarizedContext":{"description":"True when older user context was compacted into bounded server memory.","type":"boolean"},"lastActivityAt":{"format":"date-time","type":"string"},"messageCount":{"minimum":0,"type":"integer"},"status":{"enum":["active"],"type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["createdAt","updatedAt","lastActivityAt","expiresAt","conversationId","status","messageCount","hasBirthDetails","hasSummarizedContext"],"type":"object"},"maxItems":100,"type":"array"},"count":{"maximum":100,"minimum":0,"type":"integer"},"nextCursor":{"description":"Continuation position; null when no continuation is available. Empty pages can still have a cursor.","maxLength":2048,"nullable":true,"type":"string"},"paginationAvailable":{"type":"boolean"}},"required":["conversations","count","nextCursor","paginationAvailable"],"type":"object"},"success":{"enum":[true],"type":"boolean"}},"required":["success","data"],"type":"object"}}},"description":"Active conversation page"},"400":{"description":"Malformed query or invalid conversation cursor. No usage charge."},"401":{"description":"401 (missing or invalid API key)"},"500":{"description":"Conversation storage read failed. No usage charge."},"503":{"description":"Conversation memory or continuation is unavailable. No usage charge."}},"summary":"List your recent astrology chat conversation sessions with message counts and expiry.","tags":["AI Query"]}},"/api/v1/conversations/{conversationId}":{"get":{"parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"The conversation session ID.","in":"path","name":"conversationId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"conversation":{"birthDetails":{"datetime":"1990-05-15T10:30:00","hasCoordinates":true,"location":"Mumbai, India"},"createdAt":"2026-06-13T09:00:00.000Z","expiresAt":"2026-06-14T09:10:05.000Z","hasCachedChart":true,"id":"conv_8f3a2b1c","lastActivityAt":"2026-06-13T09:10:05.000Z","maxMessages":50,"messageCount":2,"messages":[{"content":"When is a good time to marry?","role":"user","timestamp":"2026-06-13T09:10:00.000Z"},{"content":"Based on your chart...","role":"assistant","timestamp":"2026-06-13T09:10:05.000Z"}],"status":"active","totalTokens":1840},"success":true}}},"description":"Success"},"400":{"description":"400 INVALID_CONVERSATION_ID"},"401":{"description":"401 (missing or invalid API key)"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"403":{"description":"403 CONVERSATION_ACCESS_DENIED"},"404":{"description":"404 CONVERSATION_NOT_FOUND"},"500":{"description":"500 CONVERSATION_GET_ERROR"}},"summary":"Retrieve a conversation session with its retained recent message window, cached birth context, and compaction state.","tags":["AI Query"]}},"/api/v1/conversations/{conversationId}/extend":{"post":{"parameters":[{"description":"Bearer token with your API key, e.g. 'Bearer vk_live_...'. The deprecated 'x-api-key' header is also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"The conversation session ID to extend.","in":"path","name":"conversationId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"hours":24}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"conversationId":"conv_8f3a2b1c","message":"Conversation extended by 24 hours","success":true}}},"description":"Success"},"401":{"description":"401 (missing or invalid API key)"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"403":{"description":"403 CONVERSATION_ACCESS_DENIED"},"404":{"description":"404 CONVERSATION_NOT_FOUND"},"500":{"description":"500 CONVERSATION_EXTEND_ERROR"}},"summary":"Extend the time-to-live of a conversation session so its cached chart context stays available longer.","tags":["AI Query"]}},"/api/v1/enterprise/license/tiers":{"get":{"parameters":[],"responses":{"200":{"content":{"application/json":{"example":{"success":true,"tiers":[{"features":["core_api","batch_processing","priority_support"],"id":"ENTERPRISE_STANDARD","maxApiKeys":100,"maxConcurrentUsers":50,"maxRequestsPerMonth":100000,"monthlyPrice":1999,"name":"Enterprise Standard","slaUptime":99.9},{"features":["core_api","batch_processing","priority_support","dedicated_support","custom_models"],"id":"ENTERPRISE_PLUS","maxApiKeys":500,"maxConcurrentUsers":200,"maxRequestsPerMonth":500000,"monthlyPrice":4999,"name":"Enterprise Plus","slaUptime":99.95},{"features":["core_api","batch_processing","priority_support","dedicated_support","custom_models","white_label"],"id":"ENTERPRISE_UNLIMITED","maxApiKeys":-1,"maxConcurrentUsers":-1,"maxRequestsPerMonth":-1,"monthlyPrice":9999,"name":"Enterprise Unlimited","slaUptime":99.99}]}}},"description":"Success"}},"summary":"List the available enterprise license tiers with their request limits, features and SLA uptime.","tags":["AI Query"]}},"/api/v1/enterprise/license/validate":{"post":{"parameters":[],"requestBody":{"content":{"application/json":{"example":{"deploymentId":"deploy-acme-asia-s1","health":{"avg_response_time_ms":420,"error_rate":0.001,"memory_usage_percent":61,"status":"healthy"},"licenseKey":"vk_ent_a1b2c3d4e5f6","requestCount":1500}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"expiresAt":"2027-01-01T00:00:00.000Z","features":["core_api","batch_processing","priority_support","dedicated_support","custom_models"],"latestVersion":"June 13, 2026 Release","limits":{"maxApiKeys":500,"maxConcurrentUsers":200,"maxRequestsPerMonth":500000,"remainingRequests":498500},"message":"License is valid","nextValidationRequired":"2026-06-14T09:00:00.000Z","status":"active","tier":"ENTERPRISE_PLUS","updateSeverity":"minor","valid":true}}},"description":"Success"},"400":{"description":"400 (missing required fields: licenseKey, deploymentId, or invalid license key format)"},"403":{"description":"403 (license invalid/suspended/expired/revoked — returned with valid:false body)"},"500":{"description":"500 (validation service unavailable)"}},"summary":"Validate an enterprise license key (phone-home) for a self-hosted deployment; no customer PII is transmitted.","tags":["AI Query"]}},"/api/v1/health":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"services":{"calculations":"operational","intelligence":"operational","vedika":"operational"},"status":"healthy","timestamp":"2026-06-14T09:30:00.000Z","version":"1.0.0"}}},"description":"Success"},"401":{"description":"401 Authentication required (missing/invalid API key)"}},"summary":"Lightweight service health check for monitoring and uptime probes","tags":["AI Query"]}},"/api/v1/info":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billingModel":"token-based","dashboard":"https://vedika.io/dashboard","description":"Advanced astrology analysis powered by Vedika Intelligence and the XALEN Ephemeris","documentation":"https://vedika.io/docs","endpoints":{"/astrology/query":"Astrology analysis with AI intelligence (supports white-label: systemPrompt, assistantName, signOff)","/chart":"Birth chart generation and analysis","/compatibility":"Relationship compatibility analysis","/usage/wallet":"Get current wallet balance"},"name":"Vedika Intelligence API","pricing":{"features":{"noFreeCredits":"Pay-as-you-go from day 1, no free tier","promptCaching":"Enabled - 90% discount on cached tokens (automatic)"},"model":"token-based","typicalQuery":{"description":"Typical /astrology/query request","estimatedCost":"$0.45-0.60 USD"}},"version":"2.0.0"}}},"description":"Success"},"401":{"description":"401 Authentication required (missing/invalid API key)"}},"summary":"Discover available endpoints, billing model, and pricing for the API","tags":["AI Query"]}},"/api/v1/reports/catalog":{"get":{"parameters":[{"description":"Optional filter by category: vedic | kp | western | vaastu | numerology | bundle. When set, returns only that category's reports.","in":"query","name":"category","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"category":"vedic","description":"Complete birth chart analysis with planetary positions, house lordships, active yogas, and current dasha period.","estimatedCost":[0.3,0.5],"estimatedPages":[10,15],"id":"janam-kundli","name":"Janam Kundli","nameHi":"जन्म कुंडली","requiredEndpoints":["birth-chart","planet-positions","vimshottari-dasha","ascendant"],"requiredInputs":["birthDetails"],"systems":["vedic"],"tags":["birth-chart","kundli","basic","popular"]}],"stats":{"byCategory":{"bundle":10,"kp":5,"numerology":5,"vaastu":4,"vedic":20,"western":6},"total":50},"success":true}}},"description":"Success"}},"summary":"Browse the full catalog of available astrology PDF report products","tags":["AI Query"]}},"/api/v1/reports/catalog/{id}":{"get":{"parameters":[{"description":"Report type id, e.g. 'janam-kundli'","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"category":"vedic","description":"Complete birth chart analysis with planetary positions, house lordships, active yogas, and current dasha period.","estimatedCost":[0.3,0.5],"estimatedPages":[10,15],"id":"janam-kundli","name":"Janam Kundli","nameHi":"जन्म कुंडली","requiredEndpoints":["birth-chart","planet-positions","vimshottari-dasha","ascendant"],"requiredInputs":["birthDetails"],"sections":[{"defaultEnabled":true,"description":"Report cover with branding","id":"cover","name":"Cover Page","order":1,"requiredData":[]},{"defaultEnabled":true,"description":"9-planet table with sign, house, degree, dignity, nakshatra","id":"planetary-positions","name":"Planetary Positions","order":4,"requiredData":["planet-positions"]}],"systems":["vedic"],"tags":["birth-chart","kundli","basic","popular"]},"success":true}}},"description":"Success"},"404":{"description":"404 Report type not found"}},"summary":"Get the full manifest (sections, pricing, inputs) for one report type","tags":["AI Query"]}},"/api/v1/reports/generate/pdf":{"post":{"description":"Send the birth fields (datetime, latitude, longitude, timezone) at the top level of the request body, next to reportType and name; they are not nested. The report language is the top-level lang field.","operationId":"postApiV1ReportsGeneratePdf","parameters":[{"description":"Optional response language; availability is endpoint-specific.","in":"query","name":"lang","required":false,"schema":{"default":"en","enum":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","lang":"en","latitude":28.6139,"longitude":77.209,"name":"Aarav Sharma","reportType":"janam-kundli","timezone":"Asia/Kolkata"},"schema":{"properties":{"datetime":{"description":"Birth moment, ISO 8601.","type":"string"},"lang":{"default":"en","description":"Report language code.","type":"string"},"latitude":{"maximum":90,"minimum":-90,"type":"number"},"longitude":{"maximum":180,"minimum":-180,"type":"number"},"name":{"description":"Name printed on the report.","type":"string"},"reportType":{"description":"Report identifier, for example janam-kundli.","type":"string"},"timezone":{"description":"IANA zone or UTC offset, for example Asia/Kolkata.","type":"string"}},"required":["reportType","datetime","latitude","longitude","timezone"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VedikaEnvelope"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Validation error"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Missing or invalid API key"},"429":{"description":"Rate limit exceeded"}},"security":[{"ApiKeyAuth":[]}],"summary":"Pdf","tags":["Reports"],"x-vedika-language":{"default":"en","selectable":true,"supported":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"]},"x-vedika-response":{"contract":{"contentType":"application/pdf","fallbackKind":"json","fileName":"vedika-report.pdf","kind":"conditional-binary"},"exampleAvailability":"run-only","exampleSource":"none"}}},"/api/v1/reports/prebuilt/catalog":{"get":{"operationId":"getApiV1ReportsPrebuiltCatalog","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrebuiltCatalogResponse"}}},"description":"Renderable and priced prebuilt report catalog"}},"security":[],"summary":"List renderable prebuilt report SKUs","tags":["Reports"]}},"/api/v1/reports/prebuilt/catalog/{id}":{"get":{"operationId":"getApiV1ReportsPrebuiltCatalogById","parameters":[{"description":"Report SKU id exactly as returned by GET /api/v1/reports/prebuilt/catalog, for example vedic-career-standard.","example":"vedic-career-standard","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrebuiltCatalogItemResponse"}}},"description":"Renderable prebuilt report SKU"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unknown or unrenderable SKU"}},"security":[],"summary":"Get one renderable prebuilt report SKU","tags":["Reports"]}},"/api/v1/usage/charts":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Number of trailing days to aggregate (default 30)","in":"query","name":"days","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"cost":18.9,"date":"2026-06-13","queries":42,"tokens":81500},{"cost":16.45,"date":"2026-06-12","queries":37,"tokens":72100}],"days":30,"success":true,"userId":"usr_a1b2c3"}}},"description":"Success"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to generate usage charts"}},"summary":"Get daily usage aggregates for building dashboard charts","tags":["AI Query"]}},"/api/v1/usage/export":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"ISO date lower bound for exported rows","in":"query","name":"startDate","required":false,"schema":{"type":"string"}},{"description":"ISO date upper bound for exported rows","in":"query","name":"endDate","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":"Content-Type: text/csv; Content-Disposition: attachment; filename=\"vedika-usage-usr_a1b2c3-2026-06-14.csv\"\\n\\ndate,type,model,queries,tokens,cost\\n2026-06-13,query,Vedika AI,42,81500,18.90"}},"description":"Success"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to export usage history"}},"summary":"Export your usage transaction history as a downloadable CSV file","tags":["AI Query"]}},"/api/v1/usage/history":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Max records to return (default 50)","in":"query","name":"limit","required":false,"schema":{"type":"integer"}},{"description":"ISO date lower bound","in":"query","name":"startDate","required":false,"schema":{"type":"string"}},{"description":"ISO date upper bound","in":"query","name":"endDate","required":false,"schema":{"type":"string"}},{"description":"Filter by transaction type","in":"query","name":"type","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"count":1,"data":[{"breakdown":{"agents":[{"model":"Vedika AI","name":"Vedika AI","role":"queen"}]},"cost":0.48,"id":"txn_9f8e","timestamp":"2026-06-13T08:15:00.000Z","tokens":1820,"type":"query"}],"success":true,"userId":"usr_a1b2c3"}}},"description":"Success"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to retrieve usage history"}},"summary":"Get a paginated list of your usage transactions","tags":["AI Query"]}},"/api/v1/usage/models":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"ISO date lower bound","in":"query","name":"startDate","required":false,"schema":{"type":"string"}},{"description":"ISO date upper bound","in":"query","name":"endDate","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"Vedika AI":{"cost":54.2,"queries":120,"tokens":240000},"Vedika Eco":{"cost":3.4,"queries":260,"tokens":494000},"Vedika Pro Ultra":{"cost":12.8,"queries":8,"tokens":30200},"Vedika Swift":{"cost":6.1,"queries":35,"tokens":41000}},"success":true,"userId":"usr_a1b2c3"}}},"description":"Success"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to get model breakdown"}},"summary":"See your usage broken down by Vedika model tier","tags":["AI Query"]}},"/api/v1/usage/summary":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"ISO date lower bound","in":"query","name":"startDate","required":false,"schema":{"type":"string"}},{"description":"ISO date upper bound","in":"query","name":"endDate","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"period":{"endDate":null,"startDate":null},"totalCost":73.1,"totalQueries":163,"totalTokens":311200},"success":true,"userId":"usr_a1b2c3"}}},"description":"Success"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to calculate usage summary"}},"summary":"Get aggregated usage statistics over a date range","tags":["AI Query"]}},"/api/v1/usage/wallet":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"balance":47.32,"currency":"USD","success":true,"userId":"usr_a1b2c3"}}},"description":"Success"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to retrieve wallet balance"}},"summary":"Get your current wallet balance in USD","tags":["AI Query"]}},"/api/v1/usage/wallet-balance":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"balance":47.32,"currency":"USD","success":true,"userId":"usr_a1b2c3"}}},"description":"Success"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to retrieve wallet balance"}},"summary":"Get your current wallet balance in USD (alias of /usage/wallet)","tags":["AI Query"]}},"/api/v1/user/birth-details":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"birthDetails":{"datetime":"1990-05-15T10:30:00+05:30","hasCoordinates":true,"location":"Mumbai, India","timezone":"+05:30"},"success":true}}},"description":"Success"},"401":{"description":"401 Authentication required"},"404":{"description":"404 No cached birth details found (BIRTH_DETAILS_NOT_FOUND)"},"500":{"description":"500 Failed to get birth details"}},"summary":"Retrieve the birth details cached from your previous queries","tags":["AI Query"]}},"/api/v1/vastu/chat/uploads":{"post":{"description":"Upload one Vastu report PDF so AI queries can answer questions about it. Send `multipart/form-data` with exactly one field, `file`: a PDF of at most 5 MiB and 40 pages with a text layer. The server extracts the text and stores only the text (never the PDF), under your account; storage is bounded by a retention window of about a day and is not itself a usability guarantee — payment is proven by your money ledger record, not by this object. The text is not returned. Use the returned `uploadId` as `vastuContext: {\"reportRef\": {\"type\": \"upload\", \"id\": \"<uploadId>\"}}` on `POST /api/v1/astrology/query` or its stream route; only the uploading account can use it. Refused before any charge, with nothing stored: an encrypted or password-protected PDF (`PDF_ENCRYPTED`), a scanned or image-only PDF with no text layer (`PDF_NO_TEXT`; OCR is not available), more than 40 pages (`PDF_TOO_MANY_PAGES`), more than 5 MiB (`PDF_TOO_LARGE`), a file that is not a readable PDF (`PDF_INVALID`, `PDF_MALFORMED`) or one whose structure exceeds the parser's safety limits (`PDF_TOO_COMPLEX`, `PDF_PARSE_TIMEOUT`). Billing after success: the `vastu-chat-upload` catalog price (the same as `plan/upload`) is charged once, after the text is extracted and stored, within 24 hours of the `Idempotency-Key`'s first use. An upload becomes usable as soon as that charge commits; if the response is lost, a retry with the same `Idempotency-Key` and file finds the same committed charge and completes without a second charge, at any age — access to a paid upload does not itself expire. `Idempotency-Key` is required (HTTP 400 `IDEMPOTENCY_KEY_REQUIRED`, or `IDEMPOTENCY_KEY_INVALID` for a key that is not 1-256 visible ASCII characters); the same key with a different file (compared by the file's SHA-256, not its text) is HTTP 409 `IDEMPOTENCY_KEY_REUSED`, permanently. The document's contents are treated as the caller's unverified claims, never as classical sources. The PDF is read in an isolated, resource-limited process. Returns HTTP 503 `VASTU_CHAT_UPLOADS_DISABLED` on deployments where uploads are not enabled. `POST /sandbox/vastu/chat/uploads` runs the same extraction free of charge and stores nothing (rate- and concurrency-limited per caller; also off when uploads are disabled).","operationId":"postApiV1VastuChatUploads","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"Required. Names one file, permanently: the same key and the same file return the same upload and are charged once, at any age. Use a new key for every new upload. A charge may only start within 24 hours of the key's first use; once that window has closed with no committed charge, the key is refused with 409 instead of being charged. If a charge went through but the response was lost, a retry with the same key and file finds it and completes without a second charge, at any age. 1-256 visible ASCII characters; X-Idempotency-Key is accepted as an alias (if both are sent they must match). The response x-request-id echoes it.","in":"header","name":"Idempotency-Key","required":true,"schema":{"example":"upload-example-0001","maxLength":256,"minLength":1,"pattern":"^[!-~]{1,256}$","type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/VastuChatUploadRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuChatUploadData"}}},"description":"Text extracted, stored and paid for (or, for a retry with the same Idempotency-Key and file, the original upload, answered from its receipt without a second charge)."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"IDEMPOTENCY_KEY_REQUIRED or IDEMPOTENCY_KEY_INVALID (checked before the body is read), or PDF_MISSING / INVALID_MULTIPART: send exactly one multipart field named `file`."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"INSUFFICIENT_BALANCE: the wallet does not cover the upload. The upload stays unusable; retry with the same Idempotency-Key after adding funds."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"IDEMPOTENCY_KEY_REUSED (this key was already used for a different file, by SHA-256 of the file — permanent, at any age) or IDEMPOTENCY_KEY_EXPIRED (its 24-hour charge window closed with no committed charge). Nothing is charged."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"PDF_TOO_LARGE: the file is over 5 MiB."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"INVALID_MULTIPART: send multipart/form-data."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"The PDF was refused before any charge: PDF_INVALID, PDF_MALFORMED, PDF_ENCRYPTED, PDF_TOO_MANY_PAGES, PDF_TOO_COMPLEX, PDF_PARSE_TIMEOUT, or PDF_NO_TEXT (scanned or image-only; OCR is not available)."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"VASTU_CHAT_UPLOADS_DISABLED when uploads are not enabled on this deployment; VASTU_UPLOAD_STORAGE_UNAVAILABLE, BILLING_UNAVAILABLE, PDF_PARSER_BUSY or PDF_PARSER_UNAVAILABLE when a dependency is briefly unavailable. Retry with the same Idempotency-Key and file: a charge that went through is found, never repeated."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Upload a Vastu report PDF (text kept 24 hours) to ask AI questions about it.","tags":["Vastu"]}},"/api/v1/voice":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or deprecated 'X-API-Key'). Voice access is gated to Business + Enterprise plans.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Audio MIME type of the raw request body: audio/wav, audio/webm, audio/ogg, audio/mpeg, audio/mp3, audio/mp4, audio/aac or audio/flac. The body is the audio bytes themselves, not JSON.","in":"header","name":"Content-Type","required":true,"schema":{"example":"audio/wav","type":"string"}},{"description":"Voice SKU/tier: vedika-standard, vedika-native, or vedika-jarvis (plus premium-indic SKUs). Omit to auto-select from detected language.","in":"header","name":"x-vedika-voice-tier","required":false,"schema":{"type":"string"}},{"description":"Language hint for transcription/synthesis (e.g. en, hi, ta). Lowercased.","in":"header","name":"x-vedika-voice-language","required":false,"schema":{"type":"string"}},{"description":"JSON birth details for chart-grounded answers, e.g. {\"datetime\":\"1990-05-15T10:30:00\",\"latitude\":19.07,\"longitude\":72.87,\"timezone\":\"Asia/Kolkata\"}.","in":"header","name":"x-vedika-birth-details","required":false,"schema":{"type":"string"}},{"description":"Optional persona id (one of 18 catalog personas). Unknown id falls back to the tier default persona.","in":"header","name":"x-vedika-voice-persona","required":false,"schema":{"type":"string"}},{"description":"Client-stable key folded with an audio fingerprint so a retry on the same audio reuses the same wallet charge instead of double-billing.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"audio/aac":{"schema":{"format":"binary","type":"string"}},"audio/flac":{"schema":{"format":"binary","type":"string"}},"audio/mp4":{"schema":{"format":"binary","type":"string"}},"audio/mpeg":{"schema":{"format":"binary","type":"string"}},"audio/ogg":{"schema":{"format":"binary","type":"string"}},"audio/wav":{"schema":{"format":"binary","type":"string"}},"audio/webm":{"schema":{"format":"binary","type":"string"}}},"description":"Send the recorded question as raw audio bytes in the request body (for example the contents of question.wav) with a matching audio Content-Type such as audio/wav. The body is not JSON. Optional metadata goes in x-vedika-* request headers. Official SDKs may instead send the same recording as multipart/form-data with an audio field.","required":true},"responses":{"200":{"content":{"application/json":{"example":"HTTP 200, Content-Type: audio/mpeg (binary MP3 body). Metadata travels in headers:\\n  X-Vedika-Voice-Tier: vedika-voice-standard\\n  X-Vedika-Voice-Lang: hi\\n  X-Vedika-Voice-Meta (base64-encoded JSON): {\"language\":\"hi\",\"tier\":\"vedika-voice-standard\",\"billing\":{\"costUsd\":0.0186,\"currency\":\"USD\"},\"durationMs\":4120,\"sttDurationSec\":3.4,\"ttsDurationSec\":6.1,\"conversationId\":\"conv_77ab\"}\\n\\nIf TTS fails, degrades to 200 JSON: {\"success\":true,\"audio\":null,\"response\":\"Aapka Chandra Vrishabh rashi mein hai...\",\"language\":\"hi\",\"tier\":\"vedika-voice-standard\",\"billing\":{\"costUsd\":0.0186,\"currency\":\"USD\"},\"durationMs\":4120}"}},"description":"Success"},"400":{"description":"400 PROMPT_INJECTION_BLOCKED"},"401":{"description":"401 NO_API_KEY"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"403":{"description":"403 CONVERSATION_OWNERSHIP_MISMATCH"},"422":{"description":"422 RESPONSE_TOO_SHORT"},"500":{"description":"500 VOICE_INTERNAL"},"502":{"description":"502 LLM_FAILED"}},"summary":"Speak an astrology question and get back a spoken answer: audio in, an MP3 reply out, computed from the caller's birth chart in 14+ languages.","tags":["AI Query"]}},"/api/v1/voice/pricing":{"get":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or deprecated 'X-API-Key'). Visible to Business + Enterprise plans only.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"access":{"blockedCode":"VOICE_PLAN_REQUIRED","eligiblePlans":["business","enterprise"],"requiredPlan":"business"},"billing":{"model":"per-query","walletDeduction":true},"documentation":"https://vedika.io/docs/voice","engine":"vedika-intelligence","rateLimits":{"business":{"perMinute":30},"enterprise":{"perMinute":120}},"success":true,"tiers":[{"description":"Indic + English spoken answers","languages":["en","hi","ta","te","kn"],"perQueryEstimateUsd":0.018,"publicLabel":"Vedika Voice Standard","tier":"vedika-voice-standard"},{"languages":["en"],"perQueryEstimateUsd":0.032,"publicLabel":"Vedika Voice Premium","tier":"vedika-voice-premium"}]}}},"description":"Success"},"401":{"description":"401 (Unauthorized — missing/invalid API key)"},"403":{"description":"403 VOICE_PLAN_REQUIRED (Starter/Pro plans)"}},"summary":"List Vedika Voice tiers, supported languages, and per-call cost estimates for B2B integration planning.","tags":["AI Query"]}},"/api/v1/voice/stream":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or deprecated 'X-API-Key'). Gated to Business + Enterprise plans.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Audio MIME type of the raw request body: audio/wav, audio/webm, audio/ogg, audio/mpeg, audio/mp3, audio/mp4, audio/aac or audio/flac. The body is the audio bytes themselves, not JSON.","in":"header","name":"Content-Type","required":true,"schema":{"example":"audio/wav","type":"string"}},{"description":"Language hint (e.g. en, hi). Lowercased.","in":"header","name":"x-vedika-voice-language","required":false,"schema":{"type":"string"}},{"description":"Conversation id to thread multi-turn context; echoed back in started/completed events.","in":"header","name":"x-vedika-voice-conversation-id","required":false,"schema":{"type":"string"}},{"description":"Requested voice tier/SKU.","in":"header","name":"x-vedika-voice-tier","required":false,"schema":{"type":"string"}},{"description":"Astrology system to force: vedic, western, or kp. Prepended as a system tag to the question.","in":"header","name":"x-vedika-voice-system","required":false,"schema":{"type":"string"}},{"description":"true/1/yes to allow general (non-chart) answers when no birth details are supplied.","in":"header","name":"x-vedika-voice-allow-general","required":false,"schema":{"type":"string"}},{"description":"Base64-encoded JSON birth details for chart-grounded answers, e.g. the base64 of {\"datetime\":\"1990-05-15T10:30:00\",\"latitude\":19.07,\"longitude\":72.87,\"timezone\":\"Asia/Kolkata\"}.","in":"header","name":"x-vedika-voice-birth","required":false,"schema":{"type":"string"}},{"description":"Client-stable key folded with an audio fingerprint so a stream reconnect/retry reuses the same wallet charge.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"audio/aac":{"schema":{"format":"binary","type":"string"}},"audio/flac":{"schema":{"format":"binary","type":"string"}},"audio/mp4":{"schema":{"format":"binary","type":"string"}},"audio/mpeg":{"schema":{"format":"binary","type":"string"}},"audio/ogg":{"schema":{"format":"binary","type":"string"}},"audio/wav":{"schema":{"format":"binary","type":"string"}},"audio/webm":{"schema":{"format":"binary","type":"string"}}},"description":"Send the recorded question as raw audio bytes in the request body (for example the contents of question.wav) with a matching audio Content-Type such as audio/wav. The body is not JSON. Optional metadata goes in x-vedika-* request headers. Official SDKs may instead send the same recording as multipart/form-data with an audio field.","required":true},"responses":{"200":{"content":{"application/json":{"example":"HTTP 200, Content-Type: text/event-stream:\\n\\nevent: started\\ndata: {\"transcription\":\"What is my moon sign?\",\"language\":\"en\",\"tier\":\"vedika-voice-jarvis\"}\\n\\nevent: text\\ndata: {\"delta\":\"Your Moon is in Taurus, \"}\\n\\nevent: audio\\ndata: {\"bytesBase64\":\"//uQxAAAAA...\",\"seq\":0}\\n\\nevent: completed\\ndata: {\"billing\":{\"costUsd\":0.0173,\"currency\":\"USD\"},\"processingMs\":2980}"}},"description":"Success"},"400":{"description":"event:error (code+message — LLM/TTS failure or stream interruption)"},"401":{"description":"401 NO_API_KEY"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"403":{"description":"403 VOICE_PLAN_REQUIRED"},"422":{"description":"422 STT_FAILED"}},"summary":"Low-latency spoken astrology: audio in, answer streamed back as text deltas plus MP3 audio frames over Server-Sent Events for near-real-time playback.","tags":["AI Query"]}},"/api/v1/western/birth-chart":{"post":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDetails":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"houseSystem":"P"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"ascendant":{"degree":22.35,"longitude":142.35,"nakshatra":"","nakshatraPada":0,"sign":4},"coordinates":{"latitude":19.07,"longitude":72.87},"datetime":"1990-05-15T05:00:00.000Z","houseSystem":"P","houses":[{"cusp":142.35,"degree":22.35,"house":1,"sign":4}],"julianDay":2448026.708,"midheaven":52.18,"planets":[{"degree":24.12,"distance":1.011,"isRetrograde":false,"latitude":0.0,"longitude":54.12,"nakshatra":"","nakshatraPada":0,"planet":"Sun","sign":1,"speed":0.96}],"timezone":"+05:30"},"success":true}}},"description":"Success"},"400":{"description":"400 Invalid house system"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to generate western birth chart"}},"summary":"Generate a tropical (Western) birth chart with your chosen house system","tags":["AI Query"]}},"/api/v1/western/current-transits":{"post":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDetails":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"transitDate":"2026-06-14T00:00:00"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"natal":[{"degree":24.12,"isRetrograde":false,"longitude":54.12,"planet":"Sun","sign":1}],"transitDate":"2026-06-14T00:00:00.000Z","transits":[{"degree":23.45,"isRetrograde":false,"longitude":83.45,"planet":"Sun","sign":2}]},"success":true}}},"description":"Success"},"400":{"description":"400 Missing required parameter: birthDetails"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to calculate current transits"}},"summary":"Compare current planetary positions against a natal Western chart","tags":["AI Query"]}},"/api/v1/western/house-systems":{"get":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"code":"P","description":"Most popular in modern western astrology","name":"Placidus"},{"code":"K","description":"Birthplace system, popular in Europe","name":"Koch"},{"code":"W","description":"Ancient system, entire sign = house","name":"Whole Sign"},{"code":"B","description":"Medieval Arabian system","name":"Alcabitius"}],"success":true}}},"description":"Success"},"401":{"description":"401 Authentication required"}},"summary":"List all supported Western house systems and their descriptions","tags":["AI Query"]}},"/api/v1/western/planets":{"post":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"datetime":"1990-05-15T10:30:00.000Z","planets":[{"degree":24.12,"distance":1.011,"isRetrograde":false,"latitude":0.0,"longitude":54.12,"nakshatra":"","nakshatraPada":0,"planet":"Sun","sign":1,"speed":0.96},{"degree":0.88,"distance":0.0026,"isRetrograde":false,"latitude":-3.2,"longitude":210.88,"nakshatra":"","nakshatraPada":0,"planet":"Moon","sign":7,"speed":12.4}]},"success":true}}},"description":"Success"},"400":{"description":"400 Missing required parameter: datetime"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to calculate planetary positions"}},"summary":"Get tropical planetary positions for a specific date and time","tags":["AI Query"]}},"/api/v1/western/secondary-progressions":{"post":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDetails":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"progressionDate":"2026-06-14T00:00:00"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"progressedAscendant":{"degree":18.21,"longitude":168.21,"nakshatra":"","nakshatraPada":0,"sign":5},"progressedDate":"1990-06-19T10:30:00.000Z","progressedHouses":[{"cusp":168.21,"degree":18.21,"house":1,"sign":5}],"progressedPlanets":[{"degree":29.04,"isRetrograde":false,"longitude":89.04,"nakshatra":"","nakshatraPada":0,"planet":"Sun","sign":2}],"type":"secondary"},"success":true}}},"description":"Success"},"400":{"description":"400 Missing required parameters: birthDetails, progressionDate"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to calculate secondary progressions"}},"summary":"Calculate secondary progressions (1 day = 1 year) for a natal chart","tags":["AI Query"]}},"/api/v1/western/solar-return":{"post":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDetails":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"returnYear":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"ascendant":{"degree":10.4,"longitude":130.4,"nakshatra":"","nakshatraPada":0,"sign":4},"houses":[{"cusp":130.4,"degree":10.4,"house":1,"sign":4}],"planets":[{"degree":24.05,"isRetrograde":false,"longitude":54.05,"nakshatra":"","nakshatraPada":0,"planet":"Sun","sign":1}],"returnDate":"2026-05-15T00:00:00.000Z","returnYear":2026,"type":"solar"},"success":true}}},"description":"Success"},"400":{"description":"400 Missing required parameters: birthDetails, returnYear"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to calculate solar return"}},"summary":"Calculate the solar return chart for a given year","tags":["AI Query"]}},"/api/v1/western/synastry":{"post":{"parameters":[{"description":"Bearer API key, e.g. 'Bearer vk_live_...'. Legacy header x-api-key also accepted.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"person1":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"person2":{"datetime":"1992-09-22T14:15:00","latitude":28.61,"longitude":77.21,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"aspects":[{"angle":120,"aspectType":"trine","isApplying":true,"orb":2.4,"planet1":"Sun","planet2":"Moon"}],"person1":{"planets":[{"degree":24.12,"isRetrograde":false,"longitude":54.12,"nakshatra":"","nakshatraPada":0,"planet":"Sun","sign":1}]},"person2":{"planets":[{"degree":29.88,"isRetrograde":false,"longitude":179.88,"nakshatra":"","nakshatraPada":0,"planet":"Sun","sign":5}]}},"success":true}}},"description":"Success"},"400":{"description":"400 Missing required parameters: person1, person2 (both must include birthDetails)"},"401":{"description":"401 Authentication required"},"500":{"description":"500 Failed to calculate synastry"}},"summary":"Calculate relationship synastry aspects between two natal charts","tags":["AI Query"]}},"/api/vedika/analytics":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*). Identifies your account.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"accountAge":96,"averageConfidence":78,"languageBreakdown":[{"count":30,"language":"en"},{"count":12,"language":"hi"}],"questionsLast30Days":18,"questionsLast7Days":6,"recentActivity":[{"category":"relationship","id":"conv_9f2","question":"When will I get married?","timestamp":"2026-06-12T08:14:00.000Z"}],"topCategories":[{"category":"career","count":14},{"category":"relationship","count":9}],"totalQuestions":42,"userTier":"business"}}},"description":"Success"},"401":{"description":"401 Unauthorized"},"404":{"description":"404 User not found"},"500":{"description":"500 Failed to fetch analytics"}},"summary":"See your usage insights: question counts, top interest categories, language mix, and recent activity","tags":["AI Query"]}},"/api/vedika/chat":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*). Each query is billed to your wallet.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"conversationId":"conv_9f2","datetime":"1990-05-15T10:30:00","includeRemedies":true,"language":"en","latitude":19.07,"longitude":72.87,"message":"When is a favorable time for marriage according to my chart?","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"birthChart":{"ascendant":"Leo","moonSign":"Scorpio"},"conversationContext":{"isActive":true,"messageCount":3},"conversationId":"conv_9f2","followUpSuggestions":["What does my Venus placement say about my love life?","How compatible am I with my partner?"],"message":"Based on your chart, Venus in the 7th house and the current Jupiter transit favor marriage between late 2026 and mid 2027...","metadata":{"cost":1.42,"engine":"vedika-intelligence","language":"en"},"success":true}}},"description":"Success"},"400":{"description":"400 Question is required"},"401":{"description":"401 Unauthorized"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"500":{"description":"500 Vedika is temporarily unavailable. Please try again."}},"summary":"Ask any astrology question in natural language and get a personalized, source-grounded answer","tags":["AI Query"]}},"/api/vedika/chat/stream":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*). Each query is billed to your wallet.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"The astrology question to ask, in natural language.","in":"query","name":"question","required":true,"schema":{"type":"string"}},{"description":"Response language code (e.g. en, hi, ta). Defaults to en.","in":"query","name":"language","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":"event: started\ndata: {\"message\":\"SSE connection working\",\"stage\":0,\"progress\":0}\n\nevent: stage_started\ndata: {\"stage\":\"Calculating planetary positions\",\"stageNumber\":3,\"progress\":40,\"message\":\"Calculating planetary positions...\"}\n\nevent: completed\ndata: {\"answer\":\"Your Saturn transit through the 10th house brings career responsibility this year...\",\"followUpSuggestions\":[\"What planetary transits will affect my career this month?\"],\"metadata\":{\"engine\":\"vedika-intelligence\",\"processingTime\":250}}\n\n"}},"description":"Success"},"400":{"description":"400 Question is required"},"401":{"description":"401 Authentication required (UNAUTHENTICATED)"},"500":{"description":"500 Failed to start stream"}},"summary":"Stream an astrology answer live over Server-Sent Events with real-time progress stages","tags":["AI Query"]}},"/api/vedika/comprehensive-analysis":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"category":"general","datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"birthChart":{"ascendant":"Leo","planets":[]},"category":"general","dasha":{"current_mahadasha":{"planet":"Jupiter"}},"dataSource":"vedika-ephemeris","doshaAnalysis":{"kaalSarpDosha":{"kaal_sarp_dosha":{"has_dosha":false}},"mangalDosha":{"mangal_dosha":{"has_dosha":false}}},"panchang":{"nakshatra":"Hasta","tithi":"Shukla Dashami"},"sadeSati":{"sade_sati":{"is_active":false}},"summary":{"apiCallsFailed":0,"apiCallsSuccessful":7,"currentMahadasha":"Jupiter","hasKaalSarpDosha":false,"hasMangalDosha":false,"isSadeSatiActive":false},"timestamp":"2026-06-13T11:02:00.000Z","transits":{"planets":[]},"user":"Abhishek"},"success":true}}},"description":"Success"},"400":{"description":"400 Birth details required. Provide birthDetails in request body or save them to your profile."},"401":{"description":"401 Unauthorized"},"404":{"description":"404 User not found"},"500":{"description":"500 Failed to perform comprehensive analysis"}},"summary":"Get a complete one-call reading: birth chart, panchang, doshas, dasha periods, and current transits","tags":["AI Query"]}},"/api/vedika/conversations":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":[{"category":"relationship","createdAt":"2026-06-12T08:14:00.000Z","enhanced_metadata":{"category":"relationship","language":"en","personalization_elements":"Basic response"},"id":"conv_9f2","language":"en","question":"When will I get married?"}]}},"description":"Success"},"401":{"description":"401 Unauthorized"},"500":{"description":"500 Failed to fetch conversations"}},"summary":"Retrieve your past astrology conversations with category and language metadata","tags":["AI Query"]}},"/api/vedika/current-transits":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"dataSource":"vedika-ephemeris","highlights":{"isChandrashtamaActive":false,"isSadeSatiActive":false,"saturnTransitSign":"Aquarius"},"timestamp":"2026-06-13T11:02:00.000Z","transitAnalysis":{"chandrashtama":{"chandrashtama":{"is_active":false}},"planetaryTransits":{"planets":[{"name":"Saturn","sign":"Aquarius"}]},"sadeSati":{"sade_sati":{"is_active":false}}},"user":"Abhishek"},"success":true}}},"description":"Success"},"400":{"description":"400 Birth details required. Provide birthDetails in request body or save them to your profile."},"401":{"description":"401 Unauthorized"},"404":{"description":"404 User not found"},"500":{"description":"500 Failed to analyze transits"}},"summary":"Check the planetary transits affecting you now, including Sade Sati and Chandrashtama status","tags":["AI Query"]}},"/api/vedika/dasha-periods":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"currentMahadasha":{"end":"2040-03-01","planet":"Jupiter","start":"2024-03-01"},"dashaAnalysis":{"dasha":{"mahadashas":[{"end":"2040-03-01","planet":"Jupiter","start":"2024-03-01"}]}},"dataSource":"vedika-ephemeris","timestamp":"2026-06-13T11:02:00.000Z","user":"Abhishek"},"success":true}}},"description":"Success"},"400":{"description":"400 Birth details required. Provide birthDetails in request body or save them to your profile."},"401":{"description":"401 Unauthorized"},"404":{"description":"404 User not found"},"500":{"description":"500 Failed to analyze dasha periods"},"504":{"description":"504 Calculation timed out — please retry"}},"summary":"Get your Vimshottari Dasha timeline and the planetary period you are currently running","tags":["AI Query"]}},"/api/vedika/dosha-analysis":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"dataSource":"vedika-ephemeris","doshaAnalysis":{"errors":[],"kaalSarpDosha":{"kaal_sarp_dosha":{"has_dosha":false}},"mangalDosha":{"mangal_dosha":{"has_dosha":true,"intensity":"low"}},"pitruDosha":{"pitru_dosha":{"has_dosha":false}}},"summary":{"hasKaalSarpDosha":false,"hasMangalDosha":true,"hasPitruDosha":false},"timestamp":"2026-06-13T11:02:00.000Z","user":"Abhishek"},"success":true}}},"description":"Success"},"400":{"description":"400 Birth details required. Provide birthDetails in request body or save them to your profile."},"401":{"description":"401 Unauthorized"},"404":{"description":"404 User not found"},"500":{"description":"500 Failed to analyze doshas"}},"summary":"Detect the key birth-chart doshas — Mangal, Kaal Sarp, and Pitru — in a single call","tags":["AI Query"]}},"/api/vedika/suggestions":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"suggestions":["What planetary transits will affect my career this month?","Which gemstone can help boost my professional success?","What does my Venus placement say about my love life?","When is a favorable time for marriage according to my chart?","What does my birth chart say about my personality?"],"user_context":{"moon_sign":"Scorpio","preferred_topics":["career","relationship","general"],"primary_interests":["career","relationship"],"total_questions":42,"zodiac_sign":"Taurus"}}}},"description":"Success"},"401":{"description":"401 Unauthorized"},"404":{"description":"404 User not found"},"500":{"description":"500 Failed to generate suggestions"}},"summary":"Get smart follow-up question suggestions tailored to your interests and birth chart","tags":["AI Query"]}},"/api/voice/binary":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Voice requires a Business or Enterprise plan.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Audio MIME type of the raw request body: audio/wav, audio/webm, audio/ogg, audio/mpeg, audio/mp3, audio/mp4, audio/aac or audio/flac. The body is the audio bytes themselves, not JSON.","in":"header","name":"Content-Type","required":true,"schema":{"example":"audio/wav","type":"string"}},{"description":"Voice SKU/tier: vedika-standard, vedika-native, or vedika-jarvis (plus premium-indic SKUs). Omit to auto-select from detected language.","in":"header","name":"x-vedika-voice-tier","required":false,"schema":{"type":"string"}},{"description":"Language hint for transcription/synthesis (e.g. en, hi, ta). Lowercased.","in":"header","name":"x-vedika-voice-language","required":false,"schema":{"type":"string"}},{"description":"JSON birth details for chart-grounded answers, e.g. {\"datetime\":\"1990-05-15T10:30:00\",\"latitude\":19.07,\"longitude\":72.87,\"timezone\":\"Asia/Kolkata\"}.","in":"header","name":"x-vedika-birth-details","required":false,"schema":{"type":"string"}},{"description":"Optional persona id (one of 18 catalog personas). Unknown id falls back to the tier default persona.","in":"header","name":"x-vedika-voice-persona","required":false,"schema":{"type":"string"}},{"description":"Client-stable key folded with an audio fingerprint so a retry on the same audio reuses the same wallet charge instead of double-billing.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"audio/aac":{"schema":{"format":"binary","type":"string"}},"audio/flac":{"schema":{"format":"binary","type":"string"}},"audio/mp4":{"schema":{"format":"binary","type":"string"}},"audio/mpeg":{"schema":{"format":"binary","type":"string"}},"audio/ogg":{"schema":{"format":"binary","type":"string"}},"audio/wav":{"schema":{"format":"binary","type":"string"}},"audio/webm":{"schema":{"format":"binary","type":"string"}}},"description":"Send the recorded question as raw audio bytes in the request body (for example the contents of question.wav) with a matching audio Content-Type such as audio/wav. The body is not JSON. Optional metadata goes in x-vedika-* request headers.","required":true},"responses":{"200":{"content":{"application/json":{"example":"<binary audio body (audio/mpeg) on success, with headers X-Vedika-Voice-Duration (estimated speech seconds) and X-Vedika-Voice-Cost (total USD charge). On a no-charge safety refusal a 200 JSON body is returned instead: {\"success\":false,\"engine\":\"vedika-intelligence\",\"safety\":\"content-safety\",\"answer\":\"I can't safely answer that request in voice. Please ask an age-appropriate astrology or life-guidance question...\",\"cost\":{\"costUsd\":0,\"currency\":\"USD\"}}>"}},"description":"Success"},"400":{"description":"400 NO_AUDIO"},"402":{"description":"402 (INSUFFICIENT_BALANCE — wallet below voice ceiling, pre-check; also withholds audio if wallet cannot cover charge post-synthesis)"},"403":{"description":"403 VOICE_PLAN_REQUIRED"},"415":{"description":"415 UNSUPPORTED_AUDIO_TYPE"},"422":{"description":"422 (safety refusal/block — no charge)"},"500":{"description":"500 (query service or text-to-speech synthesis failed)"},"502":{"description":"502 LLM_FAILED"}},"summary":"Speak a question, get a spoken astrology answer back — send raw audio, receive synthesized voice audio (buffered).","tags":["Voice"]}},"/api/voice/pricing":{"get":{"parameters":[],"responses":{"200":{"content":{"application/json":{"example":{"access":{"blockedCode":"VOICE_PLAN_REQUIRED","eligiblePlans":["business","enterprise"],"requiredPlan":"business"},"billing":{"model":"per-query","walletDeduction":true},"currency":"USD","engine":"vedika-intelligence","success":true,"tiers":[{"description":"High-accuracy multilingual voice AI with Vedika Intelligence. Supports 14 Indian languages + English.","features":["Multilingual speech recognition (14 Indic + English)","Vedika Intelligence","Premium synthesis with native Indic voices","Auto language detection","Birth chart context awareness"],"languages":["en","hi","ta","te","gu","mr","bn","kn","ml","pa","or","ur","as","ne","si"],"latencyMs":"800-1500","perQueryEstimateInr":6,"perQueryEstimateUsd":0.072,"publicLabel":"Vedika Voice Standard","tier":"vedika-standard"},{"description":"voice AI that directly understands speech — fast voice processing. Fastest for simple queries.","features":["voice understanding (fast voice processing)","Direct audio-in, audio-out response","600+ language synthesis coverage","Emotion detection from voice","Lowest cost per query"],"languages":["en","hi","ta","te","gu","mr","bn","kn","ml","pa","or","ur"],"latencyMs":"500-1000","perQueryEstimateInr":3.33,"perQueryEstimateUsd":0.04,"publicLabel":"Vedika Voice Native","tier":"vedika-native"},{"description":"Ultra-low-latency streaming voice with speculative preemption. Sub-500ms response time.","features":["Streaming audio response (SSE)","Sub-500ms voice-to-voice latency","Low-latency inference","Streaming synthesis with native Indic voices","Real-time conversation mode"],"languages":["en","hi","ta","te","gu","mr","bn","kn","ml","pa"],"latencyMs":"150-500","perQueryEstimateInr":6.67,"perQueryEstimateUsd":0.08,"publicLabel":"Vedika Voice Jarvis","tier":"vedika-jarvis"}]}}},"description":"Success"}},"summary":"List the voice tiers and their public per-query price points (USD and INR), supported languages, latency, and features.","tags":["Voice"]}},"/api/voice/realtime/session":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Business/Enterprise only; the Jarvis tier requires Enterprise.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"application/json when sending the optional tier body.","in":"header","name":"Content-Type","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"tier":"native"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"region":"in","roomToken":"<guest join token for the realtime room>","sessionId":"rt-3f2c9a8b-...","tier":"native"}}},"description":"Success"},"400":{"description":"400 VOICE_REALTIME_BAD_TIER"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"403":{"description":"403 VOICE_REALTIME_DISABLED (feature dark-launched / killswitched)"},"429":{"description":"429 VOICE_RATE_LIMIT_DAY"},"500":{"description":"500 REALTIME_BILLING_ERROR"},"502":{"description":"502 REALTIME_MEDIA_ERROR"}},"summary":"Open a low-latency realtime voice session — returns a room join token for a two-way spoken astrology conversation.","tags":["Voice"]}},"/api/voice/stream":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Voice requires a Business or Enterprise plan.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Audio MIME type of the raw request body: audio/wav, audio/webm, audio/ogg, audio/mpeg, audio/mp3, audio/mp4, audio/aac or audio/flac. The body is the audio bytes themselves, not JSON.","in":"header","name":"Content-Type","required":true,"schema":{"example":"audio/wav","type":"string"}},{"description":"Language hint (e.g. en, hi). Lowercased.","in":"header","name":"x-vedika-voice-language","required":false,"schema":{"type":"string"}},{"description":"Conversation id to thread multi-turn context; echoed back in started/completed events.","in":"header","name":"x-vedika-voice-conversation-id","required":false,"schema":{"type":"string"}},{"description":"Requested voice tier/SKU.","in":"header","name":"x-vedika-voice-tier","required":false,"schema":{"type":"string"}},{"description":"Astrology system to force: vedic, western, or kp. Prepended as a system tag to the question.","in":"header","name":"x-vedika-voice-system","required":false,"schema":{"type":"string"}},{"description":"true/1/yes to allow general (non-chart) answers when no birth details are supplied.","in":"header","name":"x-vedika-voice-allow-general","required":false,"schema":{"type":"string"}},{"description":"Client-stable key folded with an audio fingerprint so a stream reconnect/retry reuses the same wallet charge.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"audio/aac":{"schema":{"format":"binary","type":"string"}},"audio/flac":{"schema":{"format":"binary","type":"string"}},"audio/mp4":{"schema":{"format":"binary","type":"string"}},"audio/mpeg":{"schema":{"format":"binary","type":"string"}},"audio/ogg":{"schema":{"format":"binary","type":"string"}},"audio/wav":{"schema":{"format":"binary","type":"string"}},"audio/webm":{"schema":{"format":"binary","type":"string"}}},"description":"Send the recorded question as raw audio bytes in the request body (for example the contents of question.wav) with a matching audio Content-Type such as audio/wav. The body is not JSON. Optional metadata goes in x-vedika-* request headers.","required":true},"responses":{"200":{"content":{"application/json":{"example":"<SSE stream (text/event-stream). Event sequence: event: started {\"transcription\":\"when will I get married\",\"language\":\"en\",\"tier\":\"vedika-voice-jarvis\",\"sttMs\":120,\"audioFormat\":\"pcm16le\",\"sampleRateHz\":24000,\"conversationId\":null} → event: text {\"delta\":\"Based on your chart...\",\"done\":true} → event: audio {\"bytesBase64\":\"<base64 PCM16LE @24kHz>\",\"seq\":0} (repeated, seq increments) → event: completed {\"engine\":\"vedika-intelligence\",\"processingMs\":3400,\"cost\":{\"costUsd\":0.048,\"currency\":\"USD\"},\"conversationId\":null,\"audioChunks\":12,\"ttsFailed\":false}. On error: event: error {\"code\":\"STT_FAILED\",\"message\":\"Could not transcribe audio.\"} followed by a completed terminator with cost.costUsd 0.>"}},"description":"Success"},"400":{"description":"SSE error event: <safety block code> (no charge)"},"402":{"description":"402 INSUFFICIENT_BALANCE"},"403":{"description":"403 VOICE_PLAN_REQUIRED"},"415":{"description":"415 UNSUPPORTED_AUDIO_TYPE"},"422":{"description":"422 NO_SPEECH_DETECTED"}},"summary":"Real-time spoken astrology — stream a question and receive transcription, answer text, and synthesized audio chunks live over SSE (Jarvis tier).","tags":["Voice"]}},"/sandbox":{"get":{"description":"Same catalog as /sandbox/endpoints, at the bare path.","responses":{"200":{"description":"Sandbox response"}},"security":[],"summary":"Sandbox catalog","tags":["Sandbox"]}},"/sandbox/chat/ask":{"post":{"description":"Mock AI answer. Free, unauthenticated, and not billed. Mirrors the shape of the paid query API so a client can be written against it first.","responses":{"200":{"description":"Mock answer"}},"security":[],"summary":"Ask the sandbox a question","tags":["Sandbox"]}},"/sandbox/endpoints":{"get":{"description":"Authoritative, machine-readable list of the mock endpoints the sandbox currently serves. Generated at runtime, so it never goes stale. Start here.","responses":{"200":{"description":"Sandbox response"}},"security":[],"summary":"List every sandbox endpoint","tags":["Sandbox"]}},"/sandbox/health":{"get":{"description":"Reports sandbox status and how many mock endpoints are mounted.","responses":{"200":{"description":"Sandbox response"}},"security":[],"summary":"Sandbox health","tags":["Sandbox"]}},"/sandbox/info":{"get":{"description":"How the sandbox works, plus the available endpoint list.","responses":{"200":{"description":"Sandbox response"}},"security":[],"summary":"Sandbox usage notes","tags":["Sandbox"]}},"/sandbox/ping":{"get":{"description":"Returns the literal text `pong`.","responses":{"200":{"description":"Sandbox response"}},"security":[],"summary":"Sandbox liveness","tags":["Sandbox"]}},"/sandbox/v2/vastu/workspace/get":{"post":{"description":"Isolated sandbox workspace get. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","operationId":"vastuWorkspaceGet","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceResponse"}}},"description":"Successful output"},"400":{"description":"Invalid input; zero charge"},"401":{"description":"Valid API key required"},"403":{"description":"Wrong key class"},"404":{"description":"Owner-scoped record not found"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"description":"Retry conflict or workspace capacity"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Storage or rendering unavailable; zero charge"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Isolated sandbox workspace get. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","tags":["Vastu"],"x-price-usd":"0.00"}},"/sandbox/v2/vastu/workspace/jobs":{"post":{"description":"Isolated sandbox workspace jobs. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","operationId":"vastuWorkspaceJobs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceResponse"}}},"description":"Successful output"},"400":{"description":"Invalid input; zero charge"},"401":{"description":"Valid API key required"},"403":{"description":"Wrong key class"},"404":{"description":"Owner-scoped record not found"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"description":"Retry conflict or workspace capacity"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Storage or rendering unavailable; zero charge"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Isolated sandbox workspace jobs. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","tags":["Vastu"],"x-price-usd":"0.00"}},"/sandbox/v2/vastu/workspace/list":{"post":{"description":"Isolated sandbox workspace list. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","operationId":"vastuWorkspaceList","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceResponse"}}},"description":"Successful output"},"400":{"description":"Invalid input; zero charge"},"401":{"description":"Valid API key required"},"403":{"description":"Wrong key class"},"404":{"description":"Owner-scoped record not found"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"description":"Retry conflict or workspace capacity"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Storage or rendering unavailable; zero charge"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Isolated sandbox workspace list. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","tags":["Vastu"],"x-price-usd":"0.00"}},"/sandbox/v2/vastu/workspace/properties":{"post":{"description":"Isolated sandbox workspace properties. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","operationId":"vastuWorkspaceProperties","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceResponse"}}},"description":"Successful output"},"400":{"description":"Invalid input; zero charge"},"401":{"description":"Valid API key required"},"403":{"description":"Wrong key class"},"404":{"description":"Owner-scoped record not found"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"description":"Retry conflict or workspace capacity"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Storage or rendering unavailable; zero charge"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Isolated sandbox workspace properties. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","tags":["Vastu"],"x-price-usd":"0.00"}},"/sandbox/v2/vastu/workspace/report":{"post":{"description":"Isolated sandbox workspace report. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","operationId":"vastuWorkspaceReport","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceResponse"}}},"description":"Successful output"},"400":{"description":"Invalid input; zero charge"},"401":{"description":"Valid API key required"},"403":{"description":"Wrong key class"},"404":{"description":"Owner-scoped record not found"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"description":"Retry conflict or workspace capacity"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Storage or rendering unavailable; zero charge"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Isolated sandbox workspace report. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","tags":["Vastu"],"x-price-usd":"0.00"}},"/sandbox/v2/vastu/workspace/reset":{"post":{"description":"Isolated sandbox workspace reset. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","operationId":"vastuWorkspaceReset","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceResponse"}}},"description":"Successful output"},"400":{"description":"Invalid input; zero charge"},"401":{"description":"Valid API key required"},"403":{"description":"Wrong key class"},"404":{"description":"Owner-scoped record not found"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"description":"Retry conflict or workspace capacity"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Storage or rendering unavailable; zero charge"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Isolated sandbox workspace reset. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","tags":["Vastu"],"x-price-usd":"0.00"}},"/sandbox/v2/vastu/workspace/webhook":{"post":{"description":"Isolated sandbox workspace webhook. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","operationId":"vastuWorkspaceWebhook","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuWorkspaceResponse"}}},"description":"Successful output"},"400":{"description":"Invalid input; zero charge"},"401":{"description":"Valid API key required"},"403":{"description":"Wrong key class"},"404":{"description":"Owner-scoped record not found"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"description":"Retry conflict or workspace capacity"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Storage or rendering unavailable; zero charge"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Isolated sandbox workspace webhook. Requires an authenticated sandbox key. Seven-day persisted test state, at most 100 records per account. Always $0.00; no wallet call. Caller owner fields are rejected. Signed callbacks return exact payload and Vedika-Signature headers for caller replay; the server never sends them to arbitrary URLs. Test reports use HTML only.","tags":["Vastu"],"x-price-usd":"0.00"}},"/sandbox/vastu/chat/uploads":{"post":{"description":"Free and unauthenticated. Send one PDF in the multipart field `file` (or no body for a built-in sample); the sandbox runs the production text extraction and returns the same metadata at $0. Nothing is stored, so the id cannot be used as vastuContext.reportRef. Limited per caller (sandbox key, else client IP): one preview at a time and a per-minute budget (HTTP 429). HTTP 503 VASTU_CHAT_UPLOADS_DISABLED where uploads are not enabled.","responses":{"200":{"description":"Upload metadata, not stored"},"429":{"description":"RATE_LIMIT_EXCEEDED or SANDBOX_UPLOAD_IN_PROGRESS"},"503":{"description":"VASTU_CHAT_UPLOADS_DISABLED"}},"security":[],"summary":"Preview a Vastu report PDF upload","tags":["Sandbox"]}},"/v2/angel-numbers/daily":{"get":{"parameters":[{"description":"Optional date (YYYY-MM-DD) to compute the angel number for. Defaults to the current date.","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Live API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/angel-numbers/daily"},"data":{"affirmation":"I nurture love in all my relationships. My home is a sanctuary of peace.","date":"2026-06-14","meaning":"Domestic harmony and family matters. Balance material and spiritual needs. Nurturing and responsibility.","number":6,"system":"angel-numbers"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Invalid or missing API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 Subscription required"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Get today's (or a chosen date's) angel number with its meaning and a matching daily affirmation.","tags":["Angel Numbers"]}},"/v2/angel-numbers/lookup/{number}":{"get":{"parameters":[{"description":"The angel number to interpret (e.g. 0-9, repeating sequences like 111/444/1111, or any multi-digit number which is composed from its digit meanings).","in":"path","name":"number","required":true,"schema":{"type":"integer"}},{"description":"Live API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported, e.g. hi, ta, te). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/angel-numbers/lookup/{number}"},"data":{"category":"spiritual","keywords":["protection","angels","stability","support"],"meaning":"Angels are all around you right now. You are safe, protected, and guided. Foundation and stability.","number":444,"system":"angel-numbers"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 No meaning found for number"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Invalid or missing API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 Subscription required"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Look up the spiritual meaning, category, and keywords of any angel number (single digit, repeating sequence, or composite).","tags":["Angel Numbers"]}},"/v2/angel-numbers/message":{"post":{"parameters":[{"description":"Live API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"Should I take the new job offer?"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/angel-numbers/message"},"data":{"guidance":"In relation to your question, the angels send you 888: abundance, wealth, prosperity, flow.","meaning":"Financial abundance is flowing to you. A phase of prosperity. You are in alignment with infinite supply.","number":888,"system":"angel-numbers"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Invalid or missing API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 Subscription required"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Receive a deterministic angel-number guidance message in response to a personal question or intention.","tags":["Angel Numbers"]}},"/v2/angel-numbers/personal":{"post":{"parameters":[{"description":"Live API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/angel-numbers/personal"},"data":{"dateOfBirth":"1990-05-15","lifePathNumber":2,"meaning":"Balance, harmony, and partnerships. Trust the process even if you cannot see results yet. Cooperation is key.","reduction":"1990 + 5 + 15 = 2010 -> 2010 -> 2+0+1+0 = 3","system":"angel-numbers"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 A valid date_of_birth (YYYY-MM-DD) is required"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Invalid or missing API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 Subscription required"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Calculate a person's life-path angel number from their date of birth, with the numerological reduction shown.","tags":["Angel Numbers"]}},"/v2/angel-numbers/repeating":{"post":{"parameters":[{"description":"Live API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"numbers":[4,4,4]}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/angel-numbers/repeating"},"data":{"meaning":"Angels are all around you right now. You are safe, protected, and guided. Foundation and stability.","pattern":"repeating-single","sequence":[4,4,4],"system":"angel-numbers","urgency":"medium"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Invalid or missing API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 Subscription required"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Analyze a repeating or sequential number pattern you keep seeing, returning its pattern type, meaning, and urgency.","tags":["Angel Numbers"]}},"/v2/astrology/abhijit-muhurta":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Location latitude (-90 to 90). Defaults to 28.6139 (Delhi) if omitted.","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Location longitude (-180 to 180). Defaults to 77.2090 (Delhi) if omitted.","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"UTC offset (e.g. +05:30) or IANA zone (e.g. Asia/Kolkata). Defaults to +05:30.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"muhurta","charged":1,"currency":"USD","endpoint":"/v2/astrology/abhijit-muhurta"},"data":{"end":"12:36 PM","is_muhurta":true,"start":"11:48 AM"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed — invalid date/time or out-of-range location (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (wallet auto-refunded)"}},"summary":"Find the Abhijit Muhurta — the most auspicious midday window for starting important activities at a given location.","tags":["Vedic Astrology"]},"post":{"description":"The POST twin of the GET above; both are served and billed identically. Unlike the GET — which anchors a missing clock to \"now\" over Delhi — the POST validates the body as a full birth/event moment and does NOT default it, so `datetime` (or `date`) plus `latitude` and `longitude` are required. `datetime` must be one of: \"1990-05-15T10:30:00+05:30\" (ISO-8601 with offset), \"1990-05-15T10:30:00\", \"1990-05-15T10:30\" or \"1990-05-15\". Do not put a full timestamp in `date` — use `datetime` for that, or send `date` as YYYY-MM-DD with `time` as HH:MM.","operationId":"postV2AstrologyAbhijitMuhurta","parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-09-06T06:00:00+05:30","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"},"schema":{"properties":{"date":{"description":"Calendar day, YYYY-MM-DD. Used only when `datetime` is absent; combined with `time` (defaulting to 12:00). Must NOT carry its own clock or offset.","example":"2026-09-06","type":"string"},"datetime":{"description":"The moment to compute for, ISO-8601. Required unless `date` is sent. Accepted: \"1990-05-15T10:30:00+05:30\", \"1990-05-15T10:30:00\", \"1990-05-15T10:30\", \"1990-05-15\".","example":"2026-09-06T06:00:00+05:30","type":"string"},"latitude":{"description":"Location latitude. Alias: `lat`. No default on POST.","example":19.076,"maximum":90,"minimum":-90,"type":"number"},"longitude":{"description":"Location longitude. Aliases: `lon`, `lng`, `long`. No default on POST.","example":72.8777,"maximum":180,"minimum":-180,"type":"number"},"time":{"description":"Clock time, HH:MM. Used only with `date`.","example":"06:00","type":"string"},"timezone":{"description":"UTC offset (e.g. +05:30) or IANA zone (e.g. Asia/Kolkata). Alias: `tz`. Applied when `datetime` carries no offset.","example":"+05:30","type":"string"}},"required":["latitude","longitude"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_BIRTH_DETAILS — the body is missing `latitude`/`longitude`, is missing a moment, or carries a datetime in a format the parser does not accept. Nothing is charged."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (wallet auto-refunded)"}},"summary":"Find the Abhijit Muhurta for an explicit moment and place, supplied as a JSON body.","tags":["Vedic Astrology"]}},"/v2/astrology/akshavedamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/akshavedamsa"},"data":{"chartType":"Akshavedamsa (D-45)","description":"Paternal lineage and overall character","division":45,"interpretation":{"analysis":[],"keyPlanets":["Sun"],"reveals":["paternal lineage","character strength"],"significance":"Reveals paternal ancestry and innate character traits","summary":"Your Akshavedamsa chart provides specific insights into the life area it governs."},"lagnaFormattedDegree":"7°21'","lagnaSign":0,"lagnaSignName":"Aries","positions":[{"degree":12.3,"formattedDegree":"12°18'","house":1,"nakshatra":"Magha","planet":"Sun","sign":4,"signName":"Leo"}],"remedies":[],"tips":[]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Validation error — missing/invalid datetime, division, or coordinates (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Compute the Akshavedamsa (D-45) divisional chart — insight into paternal lineage and character — with planet placements and interpretation.","tags":["Vedic Astrology"]}},"/v2/astrology/all-doshas":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2446,"balanceBefore":24.5,"category":"astrology","charged":4,"currency":"USD","endpoint":"/v2/astrology/all-doshas"},"data":{"kaal_sarp_dosha":{"hasKaalSarpDosha":false},"mangal_dosha":{"hasMangalDosha":true,"severity":"medium"},"pitru_dosha":{"hasPitruDosha":false}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Combined Mangal, Kaal Sarp and Pitru dosha analysis in one call","tags":["Vedic Astrology"]}},"/v2/astrology/anandadi-yoga":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"misc","charged":1,"currency":"USD","endpoint":"/v2/astrology/anandadi-yoga"},"data":{"interpretation":{"effects":["Happiness and joy","Celebrations successful"],"guidance":"Perfect for celebrations and marriages.","significance":"Ananda Yoga brings bliss and happiness...","summary":"Ananda Yoga active"},"is_auspicious":true,"nakshatra":{"id":3,"name":"Krittika"},"recommendations":["Celebrations"],"tips":["Ananda Yoga is favorable - capitalize on this auspicious time","Good day for important decisions and new beginnings"],"weekday":{"id":1,"name":"Monday"},"yoga":{"description":"Bliss","id":1,"name":"Ananda","quality":"Auspicious"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (auto-refunded calculation failure)"}},"summary":"Anandadi Yoga (28-fold weekday+nakshatra muhurta classification) for a given datetime, with auspiciousness, effects and recommendations.","tags":["Calendar"]}},"/v2/astrology/antardasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"dasha","charged":3,"currency":"USD","endpoint":"/v2/astrology/antardasha"},"data":{"current_dasha":{"antar_dasha":{"end_date":"2026-09-13","planet":"Venus","start_date":"2024-09-13","vedic_name":"Shukra"},"antar_interpretation":{"combined_theme":"Sun-Venus Period","primary_influence":"Sun","secondary_influence":"Venus"},"interpretation":{"theme":"Authority, soul, vitality"},"maha_dasha":{"end_date":"2026-09-27","planet":"Sun","start_date":"2020-09-27","vedic_name":"Surya"}},"dasha_balance":{"days":12,"elapsed_percentage":52.1,"months":4,"planet":"Ketu","vedic_name":"Ketu","years":3},"guidance":{"current_phase":"You are in Sun (Surya) Maha Dasha","theme":"Authority, soul, vitality"},"maha_dasha":[{"antar_dasha":[{"dignity":"friend","dignity_strength":1.0,"duration_days":1217,"end_date":"1997-01-27","is_current":false,"planet":"Venus","start_date":"1993-09-27","vedic_name":"Shukra"}],"dignity":"friend","dignity_strength":1.0,"duration_years":20,"end_date":"2013-09-27","is_current":false,"planet":"Venus","start_date":"1993-09-27","vedic_name":"Shukra"}],"nakshatra":{"id":9,"lord":"Ketu","name":"Magha","pada":2}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (auto-refunded, returns expected_format)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Get the Antardasha (Vimshottari sub-periods) timeline with start/end dates, planetary dignities, and current-period guidance.","tags":["Vedic Astrology"]}},"/v2/astrology/ascendant":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/ascendant"},"data":{"degree":12.41,"longitude":102.41,"nakshatra":"Pushya","nakshatraPada":3,"sign":"Cancer"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 MISSING_LATITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Lagna (ascendant) sign and degree calculation","tags":["Vedic Astrology"]}},"/v2/astrology/ashtakavarga":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional (body or query): sun, moon, mars, mercury, jupiter, venus, saturn. Omitted = all","in":"query","name":"planet","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"planet":"jupiter","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2449,"balanceBefore":24.5,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/ashtakavarga"},"data":{"bhinnashtakavarga":{"bindus":[5,3,4,6,2,7,4,5,3,6,4,7],"total":56},"meta":{"ascendantSign":3,"ayanamsa":"lahiri"},"planet":"Jupiter"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Bhinnashtakavarga bindu scores for one planet or all 7 planets (BPHS Ch.66)","tags":["Vedic Astrology"]}},"/v2/astrology/ashtakavarga/ekadhipatya":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"ashtakavarga","charged":1,"currency":"USD","endpoint":"/v2/astrology/ashtakavarga/ekadhipatya"},"data":{"ekadhipatya":{"adjustments":[{"lord":"Mars","originalValues":[30,24],"reducedValues":[30,24],"rule":"both signs occupied — retained","signPair":["Aries","Scorpio"]}],"original":[30,25,28,22,31,26,29,24,27,33,23,19],"reduced":[30,0,28,0,31,26,29,24,0,33,23,19]},"meta":{"ayanamsa":23.85,"calculator":"vedika-ephemeris","houseSystem":"whole-sign"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Ashtakavarga calculation failed (auto-refunded)"}},"summary":"Apply Ekadhipatya Shodhana (dual-lordship reduction) to the Sarvashtakavarga to refine each sign's bindu strength.","tags":["Vedic Astrology"]}},"/v2/astrology/ashtakavarga/planet/{planet}":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Planet name: sun, moon, mars, mercury, jupiter, venus, or saturn.","in":"path","name":"planet","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"ashtakavarga","charged":1,"currency":"USD","endpoint":"/v2/astrology/ashtakavarga/planet/{planet}"},"data":{"meta":{"ayanamsa":23.85,"calculator":"vedika-ephemeris","houseSystem":"whole-sign"},"planetBAV":{"avgBindus":4.67,"beneficPoints":30,"bhinnashtakavarga":{"planet":"Jupiter","points":[5,4,6,3,5,4,5,6,4,3,5,6],"strongSigns":[{"points":6,"sign":"Cancer","signIndex":3}],"total":56,"weakSigns":[{"points":3,"sign":"Capricorn","signIndex":9}]},"planet":"Jupiter","transitFavorable":["Aries","Gemini","Leo","Libra","Scorpio","Aquarius","Pisces"],"transitUnfavorable":["Cancer","Capricorn"]}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid planet (must be one of sun, moon, mars, mercury, jupiter, venus, saturn)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Ashtakavarga calculation failed (auto-refunded)"}},"summary":"Get a single planet's Bhinnashtakavarga (8-fold strength) with per-sign bindus and transit-favorability guidance.","tags":["Vedic Astrology"]}},"/v2/astrology/ashtakavarga/prastara":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"ashtakavarga","charged":1,"currency":"USD","endpoint":"/v2/astrology/ashtakavarga/prastara"},"data":{"meta":{"ayanamsa":23.85,"calculator":"vedika-ephemeris","houseSystem":"whole-sign"},"prastara":{"planets":{"Sun":[{"contributions":{"Jupiter":1,"Lagna":0,"Mars":1,"Mercury":0,"Moon":1,"Saturn":1,"Sun":0,"Venus":0},"planet":"Sun","sign":"Aries","signIndex":0,"totalBindus":4}]},"summary":[{"planet":"Sun","strongestSign":"Leo","total":48,"weakestSign":"Aquarius"}]}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Ashtakavarga calculation failed (auto-refunded)"}},"summary":"Get the full Prastara Ashtakavarga table showing which reference points contribute a bindu to each sign for all seven planets.","tags":["Vedic Astrology"]}},"/v2/astrology/ashtakavarga/transit-score":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body param. e.g. Jupiter","in":"query","name":"transitPlanet","required":true,"schema":{"type":"string"}},{"description":"Body param. e.g. Aries","in":"query","name":"transitSign","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","transitPlanet":"Jupiter","transitSign":"Aries"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2449,"balanceBefore":24.5,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/ashtakavarga/transit-score"},"data":{"meta":{"ascendantSign":3},"transitScore":{"bindus":28,"planet":"Jupiter","sign":"Aries","verdict":"favorable"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (transitPlanet and transitSign required)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Score a planet's transit through a sign using Sarvashtakavarga bindus. Related: /ashtakavarga/prastara, /trikona-shodhana, /ekadhipatya, /planet/:planet","tags":["Vedic Astrology"]}},"/v2/astrology/ashtakavarga/trikona-shodhana":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"ashtakavarga","charged":1,"currency":"USD","endpoint":"/v2/astrology/ashtakavarga/trikona-shodhana"},"data":{"meta":{"ayanamsa":23.85,"calculator":"vedika-ephemeris","houseSystem":"whole-sign"},"trikonaShodhana":{"original":[30,25,28,22,31,26,29,24,27,33,23,19],"reduced":[8,6,9,0,9,7,7,5,8,11,4,0],"reductions":[{"originalValues":[30,31,27],"reducedValues":[3,4,0],"signs":["Aries","Leo","Sagittarius"],"trikonaGroup":"Houses 1-5-9"}],"totalReduction":198}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Ashtakavarga calculation failed (auto-refunded)"}},"summary":"Apply Trikona Shodhana (trinal reduction) to the Sarvashtakavarga to derive refined per-sign strength after removing common bindus.","tags":["Vedic Astrology"]}},"/v2/astrology/ashtakoot-match":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-03-20T14:00:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"},"male":{"datetime":"1990-05-15T10:30:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4995,"balanceBefore":50.0,"category":"matching","charged":5,"currency":"USD","endpoint":"/v2/astrology/ashtakoot-match"},"data":{"female_info":{"moon_nakshatra":"Pushya","moon_sign":"Cancer"},"gunaDetails":{"varna":{"interpretation":"Full spiritual harmony","score":1}},"guna_kootas":[{"description":"Spiritual compatibility - Match","female_koot":"Vaishya","id":1,"male_koot":"Kshatriya","maximum_points":1,"name":"Varna","points":1},{"description":"Health/genes compatibility - No Nadi Dosha","female_koot":"Madhya","id":8,"male_koot":"Aadi","maximum_points":8,"name":"Nadi","points":8}],"male_info":{"moon_nakshatra":"Rohini","moon_sign":"Taurus"},"match_result":"Compatible","maximum_points":36,"percentage":77.8,"recommendation":"This is a good match with strong compatibility.","remedies":[],"total_points":28},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Both male and female birth details are required (auto-refunded, returns expected_format)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Run Ashtakoot (36-Guna) marriage compatibility between two birth charts, scoring all eight kootas with interpretation and remedies.","tags":["Vedic Astrology"]}},"/v2/astrology/ashtottari-dasha":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2447,"balanceBefore":24.5,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/ashtottari-dasha"},"data":{"birthDashaLord":"Rahu","birthNakshatra":"Swati","currentMahaDasha":{"lord":"Venus"},"mahadashas":[{"endDate":"2002-05-15","lord":"Rahu","startDate":"1990-05-15","years":12}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Ashtottari (108-year) conditional dasha — 8 planets across 28 nakshatras (BPHS Ch.46)","tags":["Vedic Astrology"]}},"/v2/astrology/asteroids/aspects":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"orb":8.0,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"asteroids","charged":1,"currency":"USD","endpoint":"/v2/astrology/asteroids/aspects"},"data":{"aspects":[{"applying":true,"aspect":"Trine","asteroid":"Chiron","exactAngle":120,"harmony":"harmonious","orb":2.3417,"planet":"Sun"}],"count":1,"orb":8.0},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Asteroid aspects failed (auto-refunded)"}},"summary":"Find the aspects formed between the major asteroids (Chiron, Ceres, Juno, Pallas, Vesta, Pholus) and the natal planets.","tags":["Vedic Astrology"]}},"/v2/astrology/asteroids/houses":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"asteroids","charged":1,"currency":"USD","endpoint":"/v2/astrology/asteroids/houses"},"data":{"count":1,"placements":[{"asteroid":"Ceres","degreeInSign":18.4521,"house":4,"sign":6,"significance":"Ceres in House 4: nurturing through home and family"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Asteroid house placement failed (auto-refunded)"}},"summary":"Determine which natal houses the major asteroids occupy, with the life-area significance of each placement.","tags":["Vedic Astrology"]}},"/v2/astrology/asteroids/lilith":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"asteroids","charged":1,"currency":"USD","endpoint":"/v2/astrology/asteroids/lilith"},"data":{"house":8,"interpretationKeys":["intensity","transformation","taboo themes"],"meanLilith":{"calculated":true,"degreeInSign":4.32,"isRetrograde":false,"latitude":0,"longitude":214.32,"sign":7,"speed":0.11},"osculatingLilith":{"calculated":true,"degreeInSign":9.87,"isRetrograde":false,"latitude":0,"longitude":219.87,"sign":7,"speed":0.4},"signName":"Scorpio"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Lilith calculation failed (auto-refunded)"}},"summary":"Get detailed Black Moon Lilith analysis — mean and osculating positions, sign, house, and shadow-theme interpretation keys.","tags":["Vedic Astrology"]}},"/v2/astrology/asteroids/positions":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"asteroids","charged":1,"currency":"USD","endpoint":"/v2/astrology/asteroids/positions"},"data":{"asteroids":[{"archetype":"The Wounded Healer","calculated":true,"degreeInSign":5.27,"distance":12.4,"isRetrograde":false,"latitude":1.2,"longitude":95.27,"name":"Chiron","planetId":15,"sign":3,"significance":"deep wounds and the gift of healing","speed":0.05}],"count":6},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Asteroid positions failed (auto-refunded)"}},"summary":"Get the natal positions of the major asteroids (Chiron, Ceres, Juno, Pallas, Vesta, Pholus) with sign, degree, and retrograde status.","tags":["Vedic Astrology"]}},"/v2/astrology/auspicious-period":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"muhurta","charged":1,"currency":"USD","endpoint":"/v2/astrology/auspicious-period"},"data":{"auspicious_periods":[{"activities":["New beginnings","Important work"],"description":"Most auspicious midday window","end_time":"2026-03-23T12:36:00+05:30","id":1,"lord":"Brahma","name":"Abhijit Muhurta","start_time":"2026-03-23T11:48:00+05:30","type":"auspicious"}],"date":"2026-03-23T12:00:00+05:30","inauspicious_periods":[{"activities":["Routine work only"],"description":"Avoid new ventures","end_time":"2026-03-23T09:12:00+05:30","id":1,"lord":"Rahu","name":"Rahu Kaal","start_time":"2026-03-23T07:42:00+05:30","type":"inauspicious"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (auto-refunded calculation failure)"}},"summary":"Lists the auspicious and inauspicious time-windows of a day at a given location (with ruling lord, description and suited activities).","tags":["Calendar"]}},"/v2/astrology/auspicious-yoga":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"misc","charged":1,"currency":"USD","endpoint":"/v2/astrology/auspicious-yoga"},"data":{"interpretation":{"effects":["Favorable for Health treatments, New ventures","Positive energy prevails","Good time for action"],"guidance":"This is an auspicious yoga. Take advantage of this favorable time for Health treatments.","significance":"Ayushman Yoga has a benefic nature and is considered Auspicious for activities.","summary":"Ayushman Yoga active"},"is_auspicious":true,"recommended_activities":["Health treatments","New ventures"],"tips":["Good for: Health treatments","Good for: New ventures"],"yoga":{"name":"Ayushman","quality":"Auspicious","type":"benefic"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (auto-refunded calculation failure)"}},"summary":"Detects whether the current luni-solar yoga is auspicious for a given datetime, with recommended activities and guidance.","tags":["Calendar"]}},"/v2/astrology/bhamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/bhamsa"},"data":{"chartType":"Bhamsa (D-27)","description":"Strengths and weaknesses","division":27,"interpretation":{"analysis":[],"keyPlanets":[],"reveals":["physical strength","resilience"],"significance":"Reveals innate strengths and vulnerabilities","summary":"Your Bhamsa divisional chart provides specific insights into the life area it governs."},"lagnaFormattedDegree":"3°15'","lagnaSign":0,"lagnaSignName":"Aries","positions":[{"degree":21.7,"formattedDegree":"21°42'","house":5,"nakshatra":"Ardra","planet":"Moon","sign":2,"signName":"Gemini"}],"remedies":[],"tips":[]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Validation error — missing/invalid datetime or coordinates (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Compute the Bhamsa (D-27) divisional chart — insight into inner strengths and weaknesses — with planet placements and interpretation.","tags":["Vedic Astrology"]}},"/v2/astrology/bhava/analysis":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"advanced","charged":1,"currency":"USD","endpoint":"/v2/astrology/bhava/analysis"},"data":{"houses":[{"aspects":["Saturn"],"house":1,"lord":"Mars","lordInHouse":7,"lordInSign":"Libra","occupants":["Sun"],"sign":"Aries","signIndex":0,"signification":"Self, body, personality, vitality","strength":"Moderate"}],"system":"bhava"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Get a 12-house (Bhava) analysis showing each house's sign, lord, lord placement, occupants, aspecting planets, significations, and strength.","tags":["Vedic Astrology"]}},"/v2/astrology/bhava/lord-placement":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"advanced","charged":1,"currency":"USD","endpoint":"/v2/astrology/bhava/lord-placement"},"data":{"lordPlacements":[{"fromHouse":1,"inHouse":7,"interpretation":"1st lord in 7th house — partnerships and relationships shape identity","isPositive":true,"lord":"Mars"}],"system":"bhava"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Get each house lord's placement (which house it falls in) with classical effect interpretation and a favorable/unfavorable flag.","tags":["Vedic Astrology"]}},"/v2/astrology/bhava/strength":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"advanced","charged":1,"currency":"USD","endpoint":"/v2/astrology/bhava/strength"},"data":{"bhavaBala":[{"bhavaAdhipati":0.85,"bhavaDig":0.6,"bhavaDrishti":0.4,"house":1,"lord":"Mars","rank":3,"sign":"Aries","strength":"Strong","totalBala":1.85}],"system":"bhava"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Compute Bhava Bala (house strength) for all twelve houses with component scores, total strength, rank, and a strength label.","tags":["Vedic Astrology"]}},"/v2/astrology/birth-chart":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"ayanamsa":"lahiri","datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/birth-chart"},"data":{"ascendant":{"degree":12.4,"sign":"Cancer"},"houses":[{"house":1,"sign":"Cancer"}],"planets":[{"degree":0.9,"house":11,"isRetrograde":false,"nakshatra":"Krittika","name":"Sun","sign":"Taurus"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE_UNSUPPORTED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Generate a Vedic birth chart (planets, signs, houses) from birth details","tags":["Vedic Astrology"]}},"/v2/astrology/birth-details":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/birth-details"},"data":{"ascendant":"Cancer","karana":"Bava","nakshatra":"Swati","rashi":"Libra","sunrise":"06:02","tithi":"Shukla Panchami","yoga":"Siddhi"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Birth analysis: planetary positions and panchang elements at the moment of birth","tags":["Vedic Astrology"]}},"/v2/astrology/brahma-muhurta":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Location latitude (-90 to 90). Defaults to 28.6139 (Delhi) if omitted.","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Location longitude (-180 to 180). Defaults to 77.2090 (Delhi) if omitted.","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"UTC offset (e.g. +05:30) or IANA zone (e.g. Asia/Kolkata). Defaults to +05:30.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"muhurta","charged":1,"currency":"USD","endpoint":"/v2/astrology/brahma-muhurta"},"data":{"brahma_muhurta":{"duration_minutes":48,"end_time":"2026-06-14T04:50:00.000Z","start_time":"2026-06-14T04:02:00.000Z"},"date":"2026-06-14T05:30:00+05:30"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed — invalid date/time or out-of-range location (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (wallet auto-refunded)"}},"summary":"Find the Brahma Muhurta — the sacred pre-dawn window ideal for meditation, study, and spiritual practice at a given location.","tags":["Vedic Astrology"]}},"/v2/astrology/chandra-bala":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/chandra-bala"},"data":{"favorableSigns":["Aries","Leo"],"moonSign":"Libra","score":6,"strength":"moderate"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Chandra Bala (Moon strength) relative to current transit. Related: /tara-bala, /upagraha-position, /planet-relationship","tags":["Vedic Astrology"]}},"/v2/astrology/chandrashtama":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"transit","charged":2,"currency":"USD","endpoint":"/v2/astrology/chandrashtama"},"data":{"chandrashtama_sign":{"id":8,"name":"Sagittarius"},"interpretation":{"currentStatus":"Not currently in Chandrashtama","significance":"Chandrashtama occurs when the Moon transits the 8th house from your natal Moon sign. It is considered inauspicious for important activities."},"is_in_chandrashtama":false,"moon_sign":{"id":1,"name":"Taurus"},"next_chandrashtama":{"end":"2026-06-22T15:42:00.000Z","start":"2026-06-20T03:10:00.000Z"},"periods":[{"end":"2026-06-22T15:42:00.000Z","start":"2026-06-20T03:10:00.000Z"}],"transit_moon":{"sign":"Leo"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Check Chandrashtama — the inauspicious ~2.5-day windows each month when the transiting Moon occupies the 8th house from your natal Moon sign.","tags":["Vedic Astrology"]}},"/v2/astrology/chandrashtama-periods":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/chandrashtama-periods"},"data":{"birthNakshatra":"Swati","chandrashtamaNakshatras":["Bharani","Krittika"],"upcomingPeriods":[{"date":"2026-06-20","nakshatra":"Bharani"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Moon-8th-house (Chandrashtama) inauspicious periods. Alias: /chandrashtama","tags":["Vedic Astrology"]}},"/v2/astrology/chara-dasha":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2447,"balanceBefore":24.5,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/chara-dasha"},"data":{"currentDasha":{"sign":"Scorpio"},"periods":[{"endDate":"1999-05-15","sign":"Cancer","startDate":"1990-05-15","years":9}],"system":"chara"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Jaimini Chara dasha (sign-based, variable cycle). Related: /narayana-dasha, /kalachakra-dasha, /shodasottari-dasha, /dwadashottari-dasha, /panchottari-dasha","tags":["Vedic Astrology"]}},"/v2/astrology/chaturthamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/chaturthamsa"},"data":{"chartType":"Chaturthamsa (D-4)","description":"Property, fixed assets, and fortune","division":4,"interpretation":{"analysis":[],"keyPlanets":["Mars"],"reveals":["property","fixed assets"],"significance":"Reveals property, real estate, and inner happiness","summary":"Your Chaturthamsa divisional chart provides specific insights into property and assets."},"lagnaFormattedDegree":"19°48'","lagnaSign":0,"lagnaSignName":"Aries","positions":[{"degree":8.1,"formattedDegree":"8°06'","house":10,"nakshatra":"Uttara Ashadha","planet":"Mars","sign":9,"signName":"Capricorn"}],"remedies":[],"tips":[]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Validation error — missing/invalid datetime or coordinates (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Compute the Chaturthamsa (D-4) divisional chart — insight into property, fixed assets, and home — with placements and interpretation.","tags":["Vedic Astrology"]}},"/v2/astrology/chaturvimsamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/chaturvimsamsa"},"data":{"chartType":"Chaturvimsamsa (D-24)","description":"Education and learning","division":24,"interpretation":{"analysis":[],"keyPlanets":["Mercury","Jupiter"],"reveals":["education","learning"],"significance":"Reveals academic success, learning capacity, and knowledge","summary":"Your Chaturvimsamsa divisional chart provides specific insights into education."},"lagnaFormattedDegree":"2°33'","lagnaSign":0,"lagnaSignName":"Aries","positions":[{"degree":14.9,"formattedDegree":"14°54'","house":6,"nakshatra":"Hasta","planet":"Mercury","sign":5,"signName":"Virgo"}],"remedies":[],"tips":[]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Validation error — missing/invalid datetime or coordinates (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Compute the Chaturvimsamsa (D-24) divisional chart — insight into education and learning — with planet placements and interpretation.","tags":["Vedic Astrology"]}},"/v2/astrology/choghadiya":{"get":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Latitude (default Delhi 28.6139)","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Longitude (default Delhi 77.2090)","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"Offset or IANA zone (default +05:30)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/choghadiya"},"data":{"date":"2026-06-14","day":[{"end":"07:54","name":"Amrit","start":"06:21","type":"good"},{"end":"09:27","name":"Kaal","start":"07:54","type":"bad"}],"night":[{"end":"20:00","name":"Shubh","start":"18:33","type":"good"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (Calculation failed — check date/location)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Choghadiya auspicious/inauspicious time blocks for the day at a location. Also POST (body-based)","tags":["Vedic Astrology"]}},"/v2/astrology/dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","depth":3,"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"dasha","charged":2,"currency":"USD","endpoint":"/v2/astrology/dasha"},"data":{"current_dasha":{"antar_dasha":{"end_date":"2026-09-13","planet":"Venus","start_date":"2024-09-13","vedic_name":"Shukra"},"maha_dasha":{"end_date":"2026-09-27","planet":"Sun","start_date":"2020-09-27","vedic_name":"Surya"},"pratyantar_dasha":{"end_date":"2026-07-20","planet":"Mercury","start_date":"2026-04-01","vedic_name":"Budha"}},"dasha_balance":{"days":12,"elapsed_percentage":52.1,"months":4,"planet":"Ketu","vedic_name":"Ketu","years":3},"guidance":{"current_phase":"You are in Sun (Surya) Maha Dasha","theme":"Authority, soul, vitality"},"maha_dasha":[{"antar_dasha":[{"dignity":"friend","dignity_strength":1.0,"duration_days":1217,"end_date":"1997-01-27","is_current":false,"planet":"Venus","start_date":"1993-09-27","vedic_name":"Shukra"}],"dignity":"friend","dignity_strength":1.0,"duration_years":20,"end_date":"2013-09-27","is_current":false,"planet":"Venus","start_date":"1993-09-27","vedic_name":"Shukra"}],"nakshatra":{"id":9,"lord":"Ketu","name":"Magha","pada":2}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (auto-refunded, returns expected_format)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Get the full Vimshottari Dasha timeline (Mahadasha → Antardasha → optional deeper sub-periods) with dignities, the current running period, and life guidance.","tags":["Vedic Astrology"]}},"/v2/astrology/dasha-periods":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","depth":3,"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"dasha","charged":2,"currency":"USD","endpoint":"/v2/astrology/dasha-periods"},"data":{"current_dasha":{"antar_dasha":{"end_date":"2026-09-13","planet":"Venus","start_date":"2024-09-13","vedic_name":"Shukra"},"maha_dasha":{"end_date":"2026-09-27","planet":"Sun","start_date":"2020-09-27","vedic_name":"Surya"}},"dasha_balance":{"days":12,"elapsed_percentage":52.1,"months":4,"planet":"Ketu","vedic_name":"Ketu","years":3},"guidance":{"current_phase":"You are in Sun (Surya) Maha Dasha","theme":"Authority, soul, vitality"},"maha_dasha":[{"antar_dasha":[{"duration_days":1217,"end_date":"1997-01-27","is_current":false,"planet":"Venus","start_date":"1993-09-27","vedic_name":"Shukra"}],"dignity":"friend","dignity_strength":1.0,"duration_years":20,"end_date":"2013-09-27","is_current":false,"planet":"Venus","start_date":"1993-09-27","vedic_name":"Shukra"}],"nakshatra":{"id":9,"lord":"Ketu","name":"Magha","pada":2}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (auto-refunded, returns expected_format)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Get the Vimshottari Dasha periods (Mahadasha/Antardasha ladder, optional depth 1-5) with the current running period and life-phase guidance.","tags":["Vedic Astrology"]}},"/v2/astrology/dasha/current-all":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2445,"balanceBefore":24.5,"category":"astrology","charged":5,"currency":"USD","endpoint":"/v2/astrology/dasha/current-all"},"data":{"ashtottari":{"endDate":"2035-05-15","lord":"Venus","startDate":"2014-05-15"},"vimshottari":{"endDate":"2032-06-01","lord":"Jupiter","startDate":"2016-06-01"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Current running dasha across multiple systems (Vimshottari + Ashtottari) in one call","tags":["Vedic Astrology"]}},"/v2/astrology/dashamsa":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2449,"balanceBefore":24.5,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/dashamsa"},"data":{"chartName":"D10","description":"Dashamsa Chart","divisionalLagna":{"sign":9,"signName":"Capricorn"},"interpretation":{"reveals":["Professional achievements"],"significance":"Career, profession and public status","summary":"..."},"positions":[{"degree":11,"house":1,"planet":"Saturn","sign":9,"signName":"Capricorn"}],"remedies":[],"tips":[]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Dashamsa (D-10) divisional chart for career and professional status. Related: /saptamsa (D7), /dwadashamsa (D12), /shashtiamsa (D60), /hora-chart (D2), /drekkana (D3), /chaturthamsa (D4), /trimsamsa (D30) etc.","tags":["Vedic Astrology"]}},"/v2/astrology/disha-shool":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"transit","charged":1,"currency":"USD","endpoint":"/v2/astrology/disha-shool"},"data":{"directions":[{"is_inauspicious":true,"name":"east","name_title":"East"}],"disha_shool":{"direction":"east","direction_hindi":"पूर्व","direction_name":"East","interpretation":{"deity":"Surya (Sun God)","element":"Air","ruler":"Indra (King of Gods)","significance":"East represents new beginnings, sunrise, and enlightenment..."}},"vaara":{"auspicious_color":"White/Silver","deity":"Lord Shiva","gemstone":"Pearl","name":"Monday","name_hindi":"सोमवार","ruling_planet":"Moon","significance":"Day of the Moon - emotions, mother, mind, travel"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (auto-refunded calculation failure)"}},"summary":"Disha Shool - the inauspicious travel direction for the day's weekday, with directional rulers, deities, weekday planet/gemstone and per-direction status.","tags":["Calendar"]}},"/v2/astrology/divisional-chart":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body param. One of 1,2,3,4,7,9,10,12,16,20,24,27,30,40,45,60","in":"query","name":"division","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","division":9,"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2449,"balanceBefore":24.5,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/divisional-chart"},"data":{"chartName":"D9","description":"Navamsa Chart","interpretation":{"significance":"Marriage, spouse and dharmic path","summary":"..."},"positions":[{"degree":2.1,"planet":"Sun","sign":8,"signName":"Sagittarius"}],"remedies":[],"tips":[]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Generic divisional (varga) chart for any supported division number","tags":["Vedic Astrology"]}},"/v2/astrology/dosha/all-detailed":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2449,"balanceBefore":24.5,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/dosha/all-detailed"},"data":{"grahan":{"present":false},"guruChandal":{"orb":3.1,"present":true},"kemdrum":{"present":true},"overallSeverity":"moderate","shani":{"present":false}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"All extended doshas (Grahan, Guru Chandal, Shani, Kemdrum) with severity scoring. Related: /dosha/guru-chandal, /dosha/shani, /dosha/kemdrum","tags":["Vedic Astrology"]}},"/v2/astrology/dosha/grahan":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2449,"balanceBefore":24.5,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/dosha/grahan"},"data":{"afflictedLuminary":null,"description":"No Grahan dosha: Sun and Moon are not within orb of Rahu/Ketu.","orb":null,"present":false},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Grahan dosha: Rahu/Ketu conjunct the luminaries (Sun/Moon)","tags":["Vedic Astrology"]}},"/v2/astrology/dosha/guru-chandal":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"dosha","charged":1,"currency":"USD","endpoint":"/v2/astrology/dosha/guru-chandal"},"data":{"description":"Guru Chandal Dosha: Jupiter conjunct Rahu within 4.2° in house 5 (Leo).","hasDosha":true,"jupiterHouse":5,"jupiterSign":"Leo","orb":4.2,"rahuHouse":5,"rahuSign":"Leo","remedies":["Chant Guru Beej Mantra 'Om Gram Greem Graum Sah Gurave Namah' daily","Worship Lord Vishnu on Thursdays","Donate yellow items on Thursdays","Wear Yellow Sapphire after consulting an astrologer"],"severity":"Moderate","severityScore":62},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Check for Guru Chandal Dosha (Jupiter conjunct Rahu) with severity scoring, the houses/signs involved, and remedies when present.","tags":["Vedic Astrology"]}},"/v2/astrology/dosha/kemdrum":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"dosha","charged":1,"currency":"USD","endpoint":"/v2/astrology/dosha/kemdrum"},"data":{"cancellationReasons":["Mercury in 2nd from Moon cancels Kemdrum"],"description":"No Kemdrum Dosha — a planet occupies the 2nd house from the Moon.","hasDosha":false,"moonHouse":4,"moonSign":"Cancer","remedies":[],"secondFromMoon":["Mercury"],"severity":"None","severityScore":0,"twelfthFromMoon":[]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Check for Kemdrum Dosha (no planet in the 2nd or 12th from the Moon) with severity, cancellation reasons, and remedies.","tags":["Vedic Astrology"]}},"/v2/astrology/dosha/shani":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"dosha","charged":1,"currency":"USD","endpoint":"/v2/astrology/dosha/shani"},"data":{"afflictedHouses":[7,4],"aspects":["Saturn placed in house 7","Saturn aspects house 4 (10th aspect)"],"description":"Shani Dosha: Saturn afflicts houses 7, 4 from Sagittarius.","hasDosha":true,"isRetrograde":false,"remedies":["Chant Shani Beej Mantra on Saturdays","Donate black sesame, mustard oil, and iron on Saturdays","Worship Lord Hanuman on Saturdays and Tuesdays","Fast on Saturdays (Shani Vrat)","Wear Blue Sapphire only after expert consultation"],"saturnHouse":7,"saturnSign":"Sagittarius","severity":"Moderate","severityScore":50},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Detect Shani (Saturn) Dosha affliction in a birth chart with severity and remedies","tags":["Vedic Astrology"]}},"/v2/astrology/drekkana":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/drekkana"},"data":{"chartType":"Drekkana (D-3)","description":"Siblings, courage and co-born","division":3,"interpretation":{"analysis":[],"keyPlanets":["Mars"],"reveals":["Relationship with brothers and sisters","Courage and drive"],"significance":"The D-3 chart reveals siblings, courage and the native's initiative","summary":"Mars placement in the Drekkana shows the strength of your courage and sibling bonds."},"keywords":["siblings","courage","valor"],"lagnaDegree":8.2,"lagnaFormattedDegree":"8°12'","lagnaLongitude":98.2,"lagnaSign":3,"lagnaSignName":"Cancer","positions":[{"degree":12.45,"formattedDegree":"12°27'","house":4,"originalLongitude":31.21,"planet":"Sun","sign":2,"signName":"Gemini"}],"remedies":[],"tips":[]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth details missing timezone / invalid datetime or coordinates"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Drekkana (D-3) divisional chart for siblings, courage, and co-born relationships","tags":["Vedic Astrology"]}},"/v2/astrology/durmuhurta":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Location latitude (default 28.6139, New Delhi)","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Location longitude (default 77.2090, New Delhi)","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"UTC offset like +05:30 or IANA name (default +05:30)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"muhurta","charged":1,"currency":"USD","endpoint":"/v2/astrology/durmuhurta"},"data":{"date":"2026-06-14T12:00:00+05:30","durmuhurta":[{"end_time":"2026-06-14T06:30:00.000Z","id":1,"start_time":"2026-06-14T05:42:00.000Z"},{"end_time":"2026-06-14T12:06:00.000Z","id":2,"start_time":"2026-06-14T11:18:00.000Z"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed — check the location (latitude -90..90, longitude -180..180)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Durmuhurta — the two inauspicious time windows of the day to avoid new beginnings","tags":["Vedic Astrology"]}},"/v2/astrology/dwadashamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/dwadashamsa"},"data":{"chartType":"Dwadasamsa (D-12)","description":"Parents, ancestry and lineage","division":12,"interpretation":{"analysis":[],"keyPlanets":["Sun","Moon"],"reveals":["Relationship with mother and father","Inherited traits and karma"],"significance":"The D-12 chart reveals parents, ancestral karma and family lineage","summary":"The D-12 shows the karmic inheritance and connection to your parents."},"keywords":["parents","ancestry","heritage"],"lagnaDegree":4.1,"lagnaFormattedDegree":"4°6'","lagnaLongitude":154.1,"lagnaSign":5,"lagnaSignName":"Virgo","positions":[{"degree":18.33,"formattedDegree":"18°19'","house":9,"originalLongitude":31.21,"planet":"Sun","sign":7,"signName":"Scorpio"}],"remedies":[],"tips":[]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth details missing timezone / invalid datetime or coordinates"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Dwadashamsa (D-12) divisional chart for parents, ancestry, and family heritage","tags":["Vedic Astrology"]}},"/v2/astrology/dwadashottari-dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"dasha","charged":3,"currency":"USD","endpoint":"/v2/astrology/dwadashottari-dasha"},"data":{"birthData":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"},"birthNakshatra":"Bharani","currentAntarDasha":{"endDate":"1991-02-20","mahaDashaLord":"Sun","planet":"Jupiter","startDate":"1990-04-12","vedicName":"Guru"},"currentMahaDasha":{"endDate":"1994-03-01","planet":"Sun","startDate":"1987-03-01","vedicName":"Surya"},"dashaBalance":{"elapsedPercentage":34.7,"planet":"Sun","remainingDays":11,"remainingMonths":2,"remainingTotalDays":1532,"remainingYears":4,"vedicName":"Surya"},"mahaDashas":[{"antarDashas":[{"durationDays":159,"durationYears":0.4375,"endDate":"1987-08-07","isCurrentPeriod":false,"mahaDashaLord":"Sun","planet":"Sun","startDate":"1987-03-01","vedicName":"Surya"}],"durationDays":2556,"durationYears":7,"endDate":"1994-03-01","isCurrentPeriod":true,"planet":"Sun","startDate":"1987-03-01","vedicName":"Surya"}],"nakshatraLord":"Sun","system":"dwadashottari","totalCycleYears":112},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Dwadashottari calculation failed (auto-refunded)"}},"summary":"Dwadashottari (112-year) conditional dasha timeline with Maha and Antar periods","tags":["Vedic Astrology"]}},"/v2/astrology/festivals/upcoming":{"get":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Start date YYYY-MM-DD (default today UTC)","in":"query","name":"from","required":false,"schema":{"type":"string"}},{"description":"Window size 1-90 (default 30)","in":"query","name":"days","required":false,"schema":{"type":"integer"}},{"description":"pan-india | kerala | tamil | maharashtra-south | north-india","example":"pan-india","in":"query","name":"region","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2447,"balanceBefore":24.5,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/festivals/upcoming"},"data":{"days":30,"festivals":[{"date":"2026-06-26","description":"...","name":"Jagannath Rath Yatra","region":"pan-india","type":"major"}],"from":"2026-06-14"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_REGION"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Upcoming Hindu festivals within a date window from a verified pan-India corpus","tags":["Vedic Astrology"]}},"/v2/astrology/fixed-stars/conjunctions":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"orb":1.0,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"fixed-stars","charged":1,"currency":"USD","endpoint":"/v2/astrology/fixed-stars/conjunctions"},"data":{"conjunctions":[{"applying":true,"nature":"benefic","orb":0.42,"planet":"Sun","planetLongitude":150.54,"significance":"Watcher of the North. Kingship, fame, high position — but fall from grace if revenge sought.","star":"Regulus","starLongitude":150.12}],"count":1,"orb":1.0},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Conjunction calculation failed (auto-refunded)"}},"summary":"Find the major fixed stars conjunct your natal planets with traditional significance","tags":["Vedic Astrology"]}},"/v2/astrology/fixed-stars/list":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"ISO datetime to compute star positions for (default: now)","in":"query","name":"datetime","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"fixed-stars","charged":1,"currency":"USD","endpoint":"/v2/astrology/fixed-stars/list"},"data":{"count":15,"stars":[{"calculated":true,"constellation":"Leo","degreeInSign":0.12,"designation":"Alpha Leonis","isRoyal":true,"latitude":0.46,"longitude":150.12,"magnitude":1.35,"name":"Regulus","nature":"benefic","planetaryNature":"Mars/Jupiter","sign":4},{"calculated":true,"constellation":"Canis Major","degreeInSign":14.08,"designation":"Alpha Canis Majoris","isRoyal":false,"latitude":-39.6,"longitude":104.08,"magnitude":-1.46,"name":"Sirius","nature":"mixed","planetaryNature":"Jupiter/Mars","sign":3}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Fixed star list failed (auto-refunded)"}},"summary":"Catalog of the 15 major fixed stars with their current ecliptic positions","tags":["Vedic Astrology"]}},"/v2/astrology/fixed-stars/parans":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"orb":2.0,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"fixed-stars","charged":1,"currency":"USD","endpoint":"/v2/astrology/fixed-stars/parans"},"data":{"count":1,"orb":2.0,"parans":[{"note":"Aldebaran culminating with Mars amplifies drive and martial honors at the peak of life.","orb":1.12,"paranType":"culminating","planet":"Mars","star":"Aldebaran"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Paran calculation failed (auto-refunded)"}},"summary":"Paran relationships — fixed stars co-rising, culminating, or setting with natal planets","tags":["Vedic Astrology"]}},"/v2/astrology/fixed-stars/royal":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"orb":2.0,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"fixed-stars","charged":1,"currency":"USD","endpoint":"/v2/astrology/fixed-stars/royal"},"data":{"orb":2.0,"royalStars":[{"closestPlanet":"Sun","degreeInSign":0.12,"delineation":"Watcher of the North. Kingship, fame, high position — but fall from grace if revenge sought.","isConjunct":true,"longitude":150.12,"orb":0.42,"sign":4,"star":"Regulus","title":"Watcher of the North"},{"closestPlanet":null,"degreeInSign":9.78,"delineation":"Watcher of the East. Military honors, courage, but danger of violence if afflicted.","isConjunct":false,"longitude":69.78,"orb":null,"sign":2,"star":"Aldebaran","title":"Watcher of the East"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Royal star analysis failed (auto-refunded)"}},"summary":"Analysis of the four Royal Stars (Watchers of the Sky) against your natal chart","tags":["Vedic Astrology"]}},"/v2/astrology/gowri-nalla-neram":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":13.0827,"longitude":80.2707,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"muhurta","charged":1,"currency":"USD","endpoint":"/v2/astrology/gowri-nalla-neram"},"data":{"periods":[{"activities":["All auspicious activities"],"end":"2026-03-23T07:42:00.000Z","id":1,"interpretation":{"avoid":["Nothing - all activities are blessed"],"bestFor":["Marriage ceremonies","Major decisions"],"mantra":"Om Amriteshwaraya Namaha","significance":"Amritam means Nectar - the MOST AUSPICIOUS period..."},"is_auspicious":true,"is_day":true,"meaning":"Nectar","name":"Amritam","quality":"auspicious","start":"2026-03-23T06:12:00.000Z","tamil_name":"அமிர்தம்"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (auto-refunded calculation failure)"}},"summary":"South Indian Gowri Panchangam / Nalla Neram day and night periods (Amritam, Labham, Shubham etc.) with quality, Tamil names, suited activities and mantras.","tags":["Calendar"]}},"/v2/astrology/gulika-kaal":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Location latitude (default 28.6139, New Delhi)","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Location longitude (default 77.2090, New Delhi)","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"UTC offset like +05:30 or IANA name (default +05:30)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"muhurta","charged":1,"currency":"USD","endpoint":"/v2/astrology/gulika-kaal"},"data":{"end":"2026-06-14T10:30:00.000Z","is_day":true,"start":"2026-06-14T09:00:00.000Z"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed — check the location (latitude -90..90, longitude -180..180)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Gulika Kaal — the daily inauspicious period ruled by Saturn's son to avoid important work","tags":["Vedic Astrology"]}},"/v2/astrology/guna-milan":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1997-03-15T14:00:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"},"male":{"datetime":"1995-06-20T10:30:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2445,"balanceBefore":24.5,"category":"astrology","charged":5,"currency":"USD","endpoint":"/v2/astrology/guna-milan"},"data":{"compatibility":"Good","conclusion":"...","koots":[{"max":1,"name":"Varna","obtained":1},{"max":8,"name":"Nadi","obtained":0}],"mangalDosha":{"female":true,"male":false},"maxScore":36,"totalScore":28},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (Invalid male/female birth details)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"36-Guna (Ashtakoot) marriage compatibility score between two charts. Aliases: /ashtakoot-match, /matching/ashtakoota","tags":["Vedic Astrology"]}},"/v2/astrology/hora":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Location latitude (default 28.6139, New Delhi)","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Location longitude (default 77.2090, New Delhi)","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"UTC offset like +05:30 or IANA name (default +05:30)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"muhurta","charged":2,"currency":"USD","endpoint":"/v2/astrology/hora"},"data":{"currentHora":null,"guidance":{"currentEnergy":"Unknown","nextGoodTime":"All benefic horas for today have passed.","recommendation":"This is a neutral hora. Proceed with regular activities.","summary":"Check the periods above to find the current Hora.","tip":"Select a hora to see guidance."},"hora":[{"associations":{"color":"Orange","direction":"East","element":"Fire","gemstone":"Ruby","metal":"Gold"},"avoid":["submission"],"duration":58,"end":"2026-06-14T01:10:00.000Z","id":1,"isDay":true,"lord":{"bestFor":["dealing with authority","government work"],"energy":"Assertive, leadership-oriented","id":1,"name":"Sun","summary":"Hour of authority and vitality","tip":"Begin tasks needing confidence.","vedic_name":"Surya"},"nature":"benefic","qualityScore":72,"start":"2026-06-14T00:12:00.000Z","suitable":["leadership"]}],"nextBeneficHora":null,"vapiTimeDetails":{"sunrise":"2026-06-14T00:12:00.000Z","sunset":"2026-06-14T13:54:00.000Z"},"weekday":{"id":0,"lord":{"name":"Sun","vedic_name":"Surya"},"name":"Sunday"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed — check the location (latitude -90..90, longitude -180..180)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Planetary hours (Hora) for the day with ruling planet, energy, and best-use guidance","tags":["Vedic Astrology"]}},"/v2/astrology/horoscope-signs":{"get":{"parameters":[],"responses":{"200":{"content":{"application/json":{"example":{"data":{"signs":[{"dateRange":"Mar 21 - Apr 19","element":"Fire","name":"aries","symbol":"♈"}]},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"}},"summary":"List the 12 zodiac signs with symbol, element and date range (free, no auth)","tags":["Vedic Astrology"]}},"/v2/astrology/horoscope/daily":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Zodiac sign name, e.g. aries, taurus, gemini","in":"query","name":"sign","required":true,"schema":{"type":"string"}},{"description":"Target date YYYY-MM-DD (default: today in the given timezone)","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Timezone for resolving 'today' (default Asia/Kolkata)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/horoscope/daily"},"data":{"categories":{"career":{"score":82,"sentiment":"positive","text":"Leadership opportunities open up."},"finance":{"score":65,"sentiment":"neutral","text":"Avoid impulsive spending today."},"health":{"score":70,"sentiment":"neutral","text":"Energy is high; channel it through exercise."},"love":{"score":78,"sentiment":"positive","text":"Warm exchanges deepen a close bond."}},"compatibility":"Sagittarius","date":"2026-06-14","lucky_color":"Red","lucky_number":7,"mood":"Confident","period":"daily","planetary_influences":[{"aspect":"Trine","effect":"Mars's Trine brings positive energy","planet":"Mars"}],"prediction":"A dynamic day favoring bold initiative and clear communication.","sign":"aries","symbol":"♈"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid zodiac sign"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Horoscope calculation failed (auto-refunded)"}},"summary":"Daily horoscope for a zodiac sign with love, career, health, and finance categories","tags":["Vedic Astrology"]}},"/v2/astrology/horoscope/monthly":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Zodiac sign name, e.g. aries, taurus, gemini","in":"query","name":"sign","required":true,"schema":{"type":"string"}},{"description":"Reference date YYYY-MM-DD (default: today in the given timezone)","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Timezone for resolving 'today' (default Asia/Kolkata)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/horoscope/monthly"},"data":{"categories":{"career":{"score":80,"sentiment":"positive","text":"A long-term plan starts to pay off."},"finance":{"score":74,"sentiment":"positive","text":"Savings improve with discipline."},"health":{"score":68,"sentiment":"neutral","text":"Maintain routine; rest matters."},"love":{"score":76,"sentiment":"positive","text":"Commitment grows through honest dialogue."}},"compatibility":"Sagittarius","date":"2026-06-14","lucky_color":"Orange","lucky_number":5,"mood":"Optimistic","period":"monthly","planetary_influences":[{"aspect":"Sextile","effect":"Jupiter's Sextile brings positive energy","planet":"Jupiter"}],"prediction":"This month rewards steady momentum on career and relationship goals.","sign":"aries","symbol":"♈"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid zodiac sign"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Horoscope calculation failed (auto-refunded)"}},"summary":"Monthly horoscope for a zodiac sign with love, career, health, and finance categories","tags":["Vedic Astrology"]}},"/v2/astrology/horoscope/weekly":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Zodiac sign name, e.g. aries, taurus, gemini","in":"query","name":"sign","required":true,"schema":{"type":"string"}},{"description":"Reference date YYYY-MM-DD (default: today in the given timezone)","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Timezone for resolving 'today' (default Asia/Kolkata)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/horoscope/weekly"},"data":{"categories":{"career":{"score":79,"sentiment":"positive","text":"Collaboration moves a project forward."},"finance":{"score":72,"sentiment":"positive","text":"A small windfall is possible."},"health":{"score":66,"sentiment":"neutral","text":"Watch stress levels mid-week."},"love":{"score":75,"sentiment":"positive","text":"Quality time strengthens trust."}},"compatibility":"Sagittarius","date":"2026-06-14","lucky_color":"Yellow","lucky_number":3,"mood":"Confident","period":"weekly","planetary_influences":[{"aspect":"Sextile","effect":"Venus's Sextile brings positive energy","planet":"Venus"},{"aspect":"Transit","effect":"Emotional awareness heightened today","planet":"Moon"}],"prediction":"A productive week for negotiations and fresh starts.","sign":"aries","symbol":"♈"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid zodiac sign"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Horoscope calculation failed (auto-refunded)"}},"summary":"Weekly horoscope for a zodiac sign with love, career, health, and finance categories","tags":["Vedic Astrology"]}},"/v2/astrology/horoscope/{sign}":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Zodiac sign name in the path, e.g. aries, leo, pisces","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"Target date YYYY-MM-DD (default: today in the given timezone)","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Timezone for resolving 'today' (default Asia/Kolkata)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/horoscope/{sign}"},"data":{"categories":{"career":{"score":83,"sentiment":"positive","text":"Recognition for past effort arrives."},"finance":{"score":70,"sentiment":"neutral","text":"A measured investment looks promising."},"health":{"score":78,"sentiment":"positive","text":"Vitality is strong; stay hydrated."},"love":{"score":85,"sentiment":"positive","text":"Romance is favored; express affection openly."}},"compatibility":"Sagittarius","date":"2026-06-14","lucky_color":"Gold","lucky_number":9,"mood":"Excellent","period":"daily","planetary_influences":[{"aspect":"Conjunction","effect":"Sun's Conjunction brings transformative energy","planet":"Sun"}],"prediction":"Your natural charisma draws favorable attention today.","sign":"leo","symbol":"♌"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid zodiac sign"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Horoscope calculation failed (auto-refunded)"}},"summary":"Daily horoscope for a zodiac sign supplied in the URL path","tags":["Vedic Astrology"]}},"/v2/astrology/horoscope/{sign}/monthly":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Zodiac sign name in the path, e.g. aries, leo, pisces","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"Reference date YYYY-MM-DD (default: today in the given timezone)","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Timezone for resolving 'today' (default Asia/Kolkata)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/horoscope/{sign}/monthly"},"data":{"categories":{"career":{"score":84,"sentiment":"positive","text":"A leadership role becomes available."},"finance":{"score":73,"sentiment":"positive","text":"Income streams stabilize."},"health":{"score":69,"sentiment":"neutral","text":"Balance activity with adequate rest."},"love":{"score":80,"sentiment":"positive","text":"Bonds deepen through shared ambition."}},"compatibility":"Sagittarius","date":"2026-06-14","lucky_color":"Royal Purple","lucky_number":6,"mood":"Optimistic","period":"monthly","planetary_influences":[{"aspect":"Trine","effect":"Jupiter's Trine brings positive energy","planet":"Jupiter"}],"prediction":"A month of visible progress in career and creative pursuits.","sign":"leo","symbol":"♌"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid zodiac sign"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Horoscope calculation failed (auto-refunded)"}},"summary":"Monthly horoscope for a zodiac sign supplied in the URL path","tags":["Vedic Astrology"]}},"/v2/astrology/horoscope/{sign}/weekly":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Zodiac sign name in the path, e.g. aries, leo, pisces","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"Reference date YYYY-MM-DD (default: today in the given timezone)","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Timezone for resolving 'today' (default Asia/Kolkata)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/horoscope/{sign}/weekly"},"data":{"categories":{"career":{"score":81,"sentiment":"positive","text":"Your initiative is noticed by seniors."},"finance":{"score":64,"sentiment":"neutral","text":"Budget carefully before a purchase."},"health":{"score":67,"sentiment":"neutral","text":"Mind your sleep schedule."},"love":{"score":77,"sentiment":"positive","text":"Warmth returns to a key relationship."}},"compatibility":"Sagittarius","date":"2026-06-14","lucky_color":"Orange","lucky_number":4,"mood":"Confident","period":"weekly","planetary_influences":[{"aspect":"Sextile","effect":"Mars's Sextile brings positive energy","planet":"Mars"}],"prediction":"A confident week to pitch ideas and lead.","sign":"leo","symbol":"♌"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid zodiac sign"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Horoscope calculation failed (auto-refunded)"}},"summary":"Weekly horoscope for a zodiac sign supplied in the URL path","tags":["Vedic Astrology"]}},"/v2/astrology/house-cusps":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/house-cusps"},"data":{"houses":[{"cusp":102.4,"house":1,"lord":"Moon","sign":"Cancer"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE_UNSUPPORTED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"House cusp positions for the natal chart","tags":["Vedic Astrology"]}},"/v2/astrology/houses/campanus":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"houses","charged":1,"currency":"USD","endpoint":"/v2/astrology/houses/campanus"},"data":{"ascendant":{"degree":124.2871,"degreeInSign":4.2871,"sign":"Leo","signIndex":4},"cusps":[{"cuspDegree":124.2871,"degreeInSign":4.2871,"house":1,"sign":"Leo","signIndex":4},{"cuspDegree":150.1102,"degreeInSign":0.1102,"house":2,"sign":"Virgo","signIndex":5}],"description":"Campanus house system divides the prime vertical into 12 equal parts. Space-based division.","midheaven":{"degree":33.4517,"degreeInSign":3.4517,"sign":"Taurus","signIndex":1},"system":"Campanus","systemCode":"C"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"House cusps computed with the Campanus (space-based) house system","tags":["Vedic Astrology"]}},"/v2/astrology/houses/equal":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"houses","charged":1,"currency":"USD","endpoint":"/v2/astrology/houses/equal"},"data":{"ascendant":{"degree":124.2871,"degreeInSign":4.2871,"sign":"Leo","signIndex":4},"cusps":[{"cuspDegree":124.2871,"degreeInSign":4.2871,"house":1,"sign":"Leo","signIndex":4},{"cuspDegree":154.2871,"degreeInSign":4.2871,"house":2,"sign":"Virgo","signIndex":5}],"description":"Equal house system creates 12 equal 30-degree houses starting from the ascendant degree. Simple and widely used.","midheaven":{"degree":34.2871,"degreeInSign":4.2871,"sign":"Taurus","signIndex":1},"system":"Equal","systemCode":"E"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"House cusps computed with the Equal house system (12 equal 30-degree houses from the ascendant)","tags":["Vedic Astrology"]}},"/v2/astrology/houses/koch":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"houses","charged":1,"currency":"USD","endpoint":"/v2/astrology/houses/koch"},"data":{"ascendant":{"degree":124.2871,"degreeInSign":4.2871,"sign":"Leo","signIndex":4},"cusps":[{"cuspDegree":124.2871,"degreeInSign":4.2871,"house":1,"sign":"Leo","signIndex":4},{"cuspDegree":147.9034,"degreeInSign":27.9034,"house":2,"sign":"Virgo","signIndex":5}],"description":"Koch house system divides the semi-arc of the ascendant into equal time intervals. Popular in European astrology.","midheaven":{"degree":33.4517,"degreeInSign":3.4517,"sign":"Taurus","signIndex":1},"system":"Koch","systemCode":"K"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"House cusps computed with the Koch house system (popular in European astrology)","tags":["Vedic Astrology"]}},"/v2/astrology/houses/regiomontanus":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"houses","charged":1,"currency":"USD","endpoint":"/v2/astrology/houses/regiomontanus"},"data":{"ascendant":{"degree":124.2871,"degreeInSign":4.2871,"sign":"Leo","signIndex":4},"cusps":[{"cuspDegree":124.2871,"degreeInSign":4.2871,"house":1,"sign":"Leo","signIndex":4},{"cuspDegree":149.0518,"degreeInSign":29.0518,"house":2,"sign":"Virgo","signIndex":5}],"description":"Regiomontanus house system divides the celestial equator into 12 equal arcs. Used in horary astrology.","midheaven":{"degree":33.4517,"degreeInSign":3.4517,"sign":"Taurus","signIndex":1},"system":"Regiomontanus","systemCode":"R"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"House cusps computed with the Regiomontanus house system (used in horary astrology)","tags":["Vedic Astrology"]}},"/v2/astrology/houses/whole-sign":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"houses","charged":1,"currency":"USD","endpoint":"/v2/astrology/houses/whole-sign"},"data":{"ascendant":{"degree":124.2871,"degreeInSign":4.2871,"sign":"Leo","signIndex":4},"cusps":[{"cuspDegree":120.0,"degreeInSign":0.0,"house":1,"sign":"Leo","signIndex":4},{"cuspDegree":150.0,"degreeInSign":0.0,"house":2,"sign":"Virgo","signIndex":5}],"description":"Whole Sign house system assigns one entire zodiac sign to each house. Traditional Vedic (Jyotish) method.","midheaven":{"degree":33.4517,"degreeInSign":3.4517,"sign":"Taurus","signIndex":1},"system":"Whole Sign","systemCode":"W"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"House cusps computed with the Whole Sign house system (traditional Vedic/Jyotish method)","tags":["Vedic Astrology"]}},"/v2/astrology/inauspicious-period":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"muhurta","charged":1,"currency":"USD","endpoint":"/v2/astrology/inauspicious-period"},"data":{"auspicious_periods":[{"activities":[],"description":"...","end_time":"2026-03-23T12:36:00+05:30","id":1,"lord":"Brahma","name":"Abhijit Muhurta","start_time":"2026-03-23T11:48:00+05:30","type":"auspicious"}],"date":"2026-03-23T12:00:00+05:30","inauspicious_periods":[{"activities":["Routine work only"],"description":"Avoid new ventures","end_time":"2026-03-23T09:12:00+05:30","id":1,"lord":"Rahu","name":"Rahu Kaal","start_time":"2026-03-23T07:42:00+05:30","type":"inauspicious"},{"activities":[],"description":"...","end_time":"...","id":2,"lord":"Yama","name":"Yamaganda","start_time":"...","type":"inauspicious"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (auto-refunded calculation failure)"}},"summary":"Same day-window finder as auspicious-period, oriented to the inauspicious periods (Rahu Kaal, Yamaganda, Gulika) to avoid.","tags":["Calendar"]}},"/v2/astrology/jaimini/amatya-karaka":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"jaimini","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/amatya-karaka"},"data":{"amatyakaraka":{"degree":27.84,"description":"Minister — career, profession, and mental faculties","karaka":"Amatyakaraka","planet":"Mercury","sign":"Taurus","signIndex":1},"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / Could not determine planetary positions"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Amatyakaraka (minister significator) from the Jaimini Chara Karaka scheme","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/argala":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","house":1,"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"jaimini","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/argala"},"data":{"argala":{"argalas":[{"cancelled":false,"cancelledBy":null,"fromHouse":2,"planets":["Venus"],"type":"primary"},{"cancelled":false,"cancelledBy":null,"fromHouse":4,"planets":[],"type":"primary"},{"cancelled":true,"cancelledBy":3,"fromHouse":11,"planets":["Saturn"],"type":"primary"}],"house":1,"netArgala":1,"virodhaArgalas":[{"fromHouse":12,"planets":[]},{"fromHouse":10,"planets":["Sun"]},{"fromHouse":3,"planets":["Mars","Mercury"]}]},"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / Could not determine planetary positions"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Argala (sign-based intervention) on a house, with virodha (counter-intervention) analysis","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/arudha-padas":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/arudha-padas"},"data":{"arudhaPadas":[{"arudhaSign":9,"arudhaSignName":"Capricorn","house":1,"interpretation":"Arudha Lagna in Capricorn — public image and perceived personality","label":"Lagna Pada (AL)","lord":"Mars","lordInSign":5}],"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME / INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Reveals all 12 Arudha Padas — the perceived public image of each area of life","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/aspects":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/aspects"},"data":{"aspects":[{"fromSign":0,"fromSignName":"Aries","planetsInFrom":["Mars"],"planetsInTo":["Sun"],"toSign":4,"toSignName":"Leo","type":"movable-fixed"}],"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Computes sign-based Jaimini aspects (Rashi Drishti) between zodiac signs in your chart","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/atmakaraka":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/atmakaraka"},"data":{"atmakaraka":{"degree":28.74,"description":"Soul significator — represents the self, desires, and spiritual path","karaka":"Atmakaraka","planet":"Saturn","sign":"Sagittarius","signIndex":8},"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Identifies your Atmakaraka — the soul significator, the most advanced planet in your chart","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/chara-dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/chara-dasha"},"data":{"birthData":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"},"countingDirection":"forward","currentAntarDasha":{"endDate":"2026-01-20","lord":"Mars","mahaDashaSign":"Scorpio","sign":"Aries","startDate":"2025-08-01","vedicName":"Mesha"},"currentMahaDasha":{"endDate":"2029-05-15","lord":"Mars","sign":"Scorpio","startDate":"2022-05-15","vedicName":"Vrishchika"},"lagnaSign":"Leo","lagnaSignIndex":4,"lagnaType":"odd","mahaDashas":[{"antarDashas":[{"durationDays":243,"durationYears":0.67,"endDate":"1990-12-15","isCurrentPeriod":false,"lord":"Sun","mahaDashaSign":"Leo","sign":"Leo","signIndex":4,"startDate":"1990-05-15","vedicName":"Simha"}],"durationDays":2922,"durationYears":8,"endDate":"1998-05-15","isCurrentPeriod":false,"lord":"Sun","sign":"Leo","signIndex":4,"startDate":"1990-05-15","vedicName":"Simha"}],"system":"chara","totalCycleYears":144},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Generates the full Jaimini Chara Dasha timeline — sign-based life periods with sub-periods","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/drekkana":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/drekkana"},"data":{"drekkana":[{"d1Sign":"Taurus","d3Sign":"Virgo","d3SignIndex":5,"decanate":2,"degreeInSign":14.32,"planet":"Sun"},{"d1Sign":"Cancer","d3Sign":"Cancer","d3SignIndex":3,"decanate":1,"degreeInSign":4.18,"planet":"Moon"}],"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Maps each planet into its Jaimini Drekkana (D-3) decanate for sibling and courage analysis","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/full-report":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/full-report"},"data":{"argala":{"argalas":[{"cancelled":false,"cancelledBy":null,"fromHouse":2,"planets":["Venus"],"type":"primary"}],"house":1,"netArgala":1,"virodhaArgalas":[]},"arudhaPadas":[{"arudhaSign":9,"arudhaSignName":"Capricorn","house":1,"interpretation":"Arudha Lagna in Capricorn — public image and perceived personality","label":"Lagna Pada (AL)","lord":"Sun","lordInSign":1}],"aspects":[{"fromSign":0,"fromSignName":"Aries","planetsInFrom":["Mars"],"planetsInTo":["Sun"],"toSign":4,"toSignName":"Leo","type":"movable-fixed"}],"drekkana":[{"d1Sign":"Taurus","d3Sign":"Virgo","d3SignIndex":5,"decanate":2,"degreeInSign":14.32,"planet":"Sun"}],"karakas":[{"degree":28.74,"description":"Soul significator — represents the self, desires, and spiritual path","karaka":"Atmakaraka","planet":"Saturn","sign":"Sagittarius","signIndex":8}],"rajayogas":[{"description":"...","formed":true,"houses":[5,9],"name":"Atmakaraka-Putrakaraka association","planets":["Saturn","Jupiter"],"strength":"strong"}],"swamsha":{"atmakaraka":"Saturn","careerHint":"","indication":"General tendencies","karakamshaSign":"Libra","navamsaSign":"Libra","navamsaSignIndex":6},"system":"jaimini","upapada":{"interpretation":"Upapada in Gemini indicates the nature and direction of marriage","twelfthLord":"Moon","upapadaSign":2,"upapadaSignName":"Gemini"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Complete Jaimini analysis in one call — karakas, padas, aspects, yogas, drekkana and more","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/karakamsha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/karakamsha"},"data":{"atmakaraka":{"degree":28.74,"description":"Soul significator — represents the self, desires, and spiritual path","karaka":"Atmakaraka","planet":"Saturn","sign":"Sagittarius","signIndex":8},"karakamsha":{"karakamshaSign":8,"karakamshaSignName":"Sagittarius"},"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / Atmakaraka not found"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Finds your Karakamsha — the Navamsa sign of your Atmakaraka, key to spiritual destiny","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/karakas":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/karakas"},"data":{"karakas":[{"degree":28.74,"description":"Soul significator — represents the self, desires, and spiritual path","karaka":"Atmakaraka","planet":"Saturn","sign":"Sagittarius","signIndex":8},{"degree":24.11,"description":"Minister — career, profession, and mental faculties","karaka":"Amatyakaraka","planet":"Mercury","sign":"Taurus","signIndex":1},{"degree":2.03,"description":"Spouse — marriage partner, partnerships, and relationships","karaka":"Darakaraka","planet":"Moon","sign":"Cancer","signIndex":3}],"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Assigns all 7 Chara Karakas (soul, career, siblings, mother, children, enemies, spouse)","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/narayana-dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/narayana-dasha"},"data":{"birthData":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"},"currentMahaDasha":{"endDate":"2029-08-15","sign":"Scorpio","signLord":"Mars","startDate":"2021-08-15"},"currentSubPeriod":{"endDate":"2026-02-10","parentSign":"Scorpio","sign":"Aries","signLord":"Mars","startDate":"2025-09-01"},"dashaBalance":6.42,"lagnaLord":"Sun","lagnaSign":"Leo","mahaDashas":[{"durationYears":7,"endDate":"1997-05-15","isCurrentPeriod":false,"sign":"Leo","signLord":"Sun","startDate":"1990-05-15","subPeriods":[{"endDate":"1990-12-01","parentSign":"Leo","sign":"Virgo","signLord":"Mercury","startDate":"1990-05-15"}]}],"system":"narayana"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Generates the Narayana (Padakrama) Dasha — Rashi dasha seeded from Lagna or 7th house","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/pada":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","house":7,"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/pada"},"data":{"allPadas":[{"arudhaSign":9,"arudhaSignName":"Capricorn","house":1,"interpretation":"Arudha Lagna in Capricorn — public image and perceived personality","label":"Lagna Pada (AL)","lord":"Sun","lordInSign":1}],"pada":{"arudhaSign":0,"arudhaSignName":"Aries","house":7,"interpretation":"Dara Pada in Aries — perceived nature of spouse and partnerships","label":"Dara Pada (A7)","lord":"Saturn","lordInSign":8},"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Returns a single Arudha Pada for a chosen house, plus all 12 padas for reference","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/rajayogas":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/rajayogas"},"data":{"rajayogas":[{"description":"Soul significator joined with the minister significator — sustained authority and recognition","formed":true,"houses":[9,10],"name":"Atmakaraka-Amatyakaraka conjunction","planets":["Saturn","Mercury"],"strength":"strong"}],"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Detects Jaimini Rajayogas — sign-based combinations indicating power, status and success","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/swamsha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/swamsha"},"data":{"swamsha":{"atmakaraka":"Saturn","careerHint":"","indication":"General tendencies","karakamshaSign":"Libra","navamsaSign":"Libra","navamsaSignIndex":6},"system":"jaimini"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Analyzes your Swamsha — the Atmakaraka's Navamsa placement for life purpose and career","tags":["Vedic Astrology"]}},"/v2/astrology/jaimini/upapada":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/jaimini/upapada"},"data":{"system":"jaimini","upapada":{"interpretation":"Upapada in Gemini indicates the nature and direction of marriage","twelfthLord":"Moon","upapadaSign":2,"upapadaSignName":"Gemini"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Computes the Upapada Lagna — the Jaimini indicator of marriage nature and spouse","tags":["Vedic Astrology"]}},"/v2/astrology/kaal-sarp-dosha":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2447,"balanceBefore":24.5,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/kaal-sarp-dosha"},"data":{"description":"Planets are not fully hemmed between Rahu and Ketu; no Kaal Sarp dosha.","hasKaalSarpDosha":false,"remedies":[],"type":null},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Kaal Sarp (Rahu-Ketu axis) dosha detection and type","tags":["Vedic Astrology"]}},"/v2/astrology/kalachakra-dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/kalachakra-dasha"},"data":{"birthData":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"},"birthNakshatra":"Rohini","currentMahaDasha":{"endDate":"2038-04-10","sign":"Libra","startDate":"2022-04-10"},"currentSubPeriod":{"endDate":"2026-08-15","parentSign":"Libra","sign":"Scorpio","startDate":"2025-06-01"},"dashaBalance":4.18,"group":"Savya","mahaDashas":[{"durationYears":6,"endDate":"1996-05-15","isCurrentPeriod":false,"sign":"Gemini","startDate":"1990-05-15","subPeriods":[{"endDate":"1990-12-20","parentSign":"Gemini","sign":"Gemini","startDate":"1990-05-15"}]}],"nakshatraPada":3,"startingSign":"Gemini","system":"kalachakra","totalCycleYears":100},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / Moon position not found"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Generates the Kalachakra Dasha — nakshatra-pada based life periods with sign sub-periods","tags":["Vedic Astrology"]}},"/v2/astrology/karana":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Retry-safe dedup key.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"panchang","charged":1,"currency":"USD","endpoint":"/v2/astrology/karana"},"data":{"coordinates":{"latitude":28.6139,"longitude":77.209},"datetime":"2026-03-23T12:00:00+05:30","disha_shool":{"direction":"east"},"guidance":{"activitiesToAvoid":[],"bestActivities":[],"overallAuspiciousness":"Good","tips":[]},"karana":{"id":2,"interpretation":{"avoid":["Aggressive actions"],"bestFor":["Worship","Gentle work"],"meaning":"Karana of children and nurturing","nature":"Benefic","tip":"Be nurturing"},"name":"Balava"},"masa":{"name":"Chaitra"},"nakshatra":{"interpretation":{},"name":"Krittika"},"ritu":{"name":"Vasanta"},"timezone":"+05:30","tithi":{"interpretation":{},"name":"Panchami","paksha":{"id":1,"name":"Shukla"}},"vaara":{"interpretation":{},"name":"Somavara"},"yoga":{"interpretation":{},"name":"Saubhagya","quality":"Auspicious"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Karana (half-tithi) for a given datetime and location, with its nature and recommended/avoided activities.","tags":["Calendar"]}},"/v2/astrology/khavedamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/khavedamsa"},"data":{"chartType":"Khavedamsa (D-40)","description":"Khavedamsa (D-40) — auspicious and inauspicious effects from the maternal line","interpretation":{"analysis":["..."],"keyPlanets":["Moon"],"reveals":["Maternal lineage influences","Inherited auspicious and inauspicious effects"],"significance":"The Khavedamsa (D-40) chart reveals maternal legacy and the karmic inheritance from your mother's side of the family.","summary":"..."},"lagnaDegree":4.1,"lagnaFormattedDegree":"4°06'","lagnaLongitude":64.1,"lagnaSign":2,"lagnaSignName":"Gemini","positions":[{"degree":12.5,"formattedDegree":"12°30'","house":6,"longitude":222.5,"planet":"Sun","sign":7,"signName":"Scorpio"},{"degree":4.1,"formattedDegree":"4°06'","house":1,"longitude":64.1,"planet":"Moon","sign":2,"signName":"Gemini"}],"remedies":["..."],"tips":["..."],"vargottamaPlanets":["Mercury"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 datetime is required / Invalid datetime / Birth details missing timezone"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Computes the Khavedamsa (D-40) divisional chart for maternal legacy and family karma","tags":["Vedic Astrology"]}},"/v2/astrology/kp/4-step-theory":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","house":10,"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/4-step-theory"},"data":{"cuspSubLord":"Venus","dataSource":"vedika-ephemeris","house":10,"significations":["Career","Profession","Status","Authority"],"significators":["Mars","Saturn","Moon","Mercury"],"steps":{"step1_planetsInStarsOfOccupants":["Mars"],"step2_occupants":["Saturn"],"step3_planetsInStarsOfOwner":["Moon"],"step4_owner":"Mercury"},"system":"kp","type":"four-step-theory"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Runs the KP 4-Step Significator Theory for a chosen house to find result-giving planets","tags":["Vedic Astrology"]}},"/v2/astrology/kp/ayanamsha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/ayanamsha"},"data":{"ayanamsaSystem":"Krishnamurti","chartAyanamsa":23.785432,"comparisons":[{"ayanamsa":23.851234,"diffFromKP":0.065802,"system":"lahiri"},{"ayanamsa":22.461234,"diffFromKP":-1.324198,"system":"raman"},{"ayanamsa":24.741234,"diffFromKP":0.955802,"system":"fagan-bradley"}],"dataSource":"vedika-ephemeris","note":"Differences affect sign boundary cases. KP uses Krishnamurti ayanamsa.","system":"kp","type":"ayanamsha-comparison"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Compares the KP ayanamsha against Lahiri, Raman, Yukteshwar and Fagan-Bradley systems","tags":["Vedic Astrology"]}},"/v2/astrology/kp/birth-chart":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/birth-chart"},"data":{"ascendant":{"degree":14.3201,"nakshatra":"Purva Phalguni","sign":"Leo","subLord":"Saturn"},"ayanamsa":23.785432,"ayanamsaSystem":"Krishnamurti","dataSource":"vedika-ephemeris","houseSystem":"Placidus","planets":[{"degree":0.7421,"isRetrograde":false,"longitude":30.7421,"nakshatra":"Krittika","nakshatraLord":"Sun","nakshatraPada":2,"planet":"Sun","sign":"Taurus","signIndex":1,"signLord":"Venus","significatorOf":[1,5,10],"subLord":"Mercury","subSubLord":"Ketu"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Casts a full KP birth chart with sign, star, sub and sub-sub lords for every planet","tags":["Vedic Astrology"]}},"/v2/astrology/kp/compatibility":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-08-22T14:15:00","latitude":28.61,"longitude":77.21,"timezone":"+05:30"},"male":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/compatibility"},"data":{"analysis":{"moonSignHarmony":true,"nakshatraLordMatch":false,"person1_7thSubLord":"Venus","person2_7thSubLord":"Venus","seventhHouseSubLordMatch":true},"dataSource":"vedika-ephemeris","indication":"highly compatible","maxScore":100,"score":70,"system":"kp","type":"compatibility"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Both male and female birth details are required / Invalid male birth details / Invalid female birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Scores partner compatibility using KP 7th-house sub-lord, Moon-sign and star-lord matching","tags":["Vedic Astrology"]}},"/v2/astrology/kp/conjunction":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/conjunction"},"data":{"conjunctions":[{"combinedSignificators":[1,2,5,10,11],"house":10,"orb":3.2841,"planet1":"Sun","planet2":"Mercury"}],"dataSource":"vedika-ephemeris","orbUsed":5,"system":"kp","type":"conjunction"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Lists KP planetary conjunctions within orb with their combined house significators","tags":["Vedic Astrology"]}},"/v2/astrology/kp/cusps":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/cusps"},"data":{"ayanamsa":23.785432,"cusps":[{"cuspLongitude":134.3201,"degree":14.3201,"house":1,"nakshatra":"Purva Phalguni","nakshatraLord":"Venus","sign":"Leo","signIndex":4,"signLord":"Sun","subLord":"Saturn","subLordSignificators":[3,7,10],"subSubLord":"Mercury"}],"dataSource":"vedika-ephemeris","houseSystem":"Placidus"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Returns all 12 Placidus house cusps with sign, star, sub and sub-sub lords (KP standard)","tags":["Vedic Astrology"]}},"/v2/astrology/kp/dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/dasha"},"data":{"currentPeriod":{"antarDasha":{"end":"2027-11-12","planet":"Mercury","start":"2025-01-15"},"mahaDasha":{"end":"2040-03-10","planet":"Venus","start":"2020-03-10"}},"dashaBalance":4.18,"dataSource":"vedika-ephemeris","periods":[{"antardasha":[{"end":"1990-12-01","isCurrent":false,"planet":"Moon","start":"1990-05-15"}],"durationYears":6.32,"end":"1996-09-12","isCurrent":false,"planet":"Moon","significatorOf":[4,7],"start":"1990-05-15","subLord":"Saturn"}],"system":"kp","type":"dasha"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Generates KP Vimshottari Dasha with maha and antar periods plus per-period sub-lords","tags":["Vedic Astrology"]}},"/v2/astrology/kp/full-report":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","language":"en","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/kp/full-report"},"data":{"aspects":{"config":{"angles":[0,30,45,60,90,120,135,150,180],"direction":"forward","includesVedicDrishti":true,"orb":5,"sourcePlanets":["Venus","Sun","Moon","Mars","Jupiter","Saturn","Mercury"]},"houseHits":{"1":[]},"onHouses":{"Sun":{"10":0}},"onPlanets":{"Sun":{"Moon":120}},"planetHits":{"Sun":[]}},"ayanamsa":23.785432,"ayanamsaSystem":"Krishnamurti","computeTimeMs":42,"cusps":[{"cuspLongitude":134.3201,"degree":14.3201,"house":1,"nakshatra":"Purva Phalguni","nakshatraLord":"Venus","sign":"Leo","signIndex":4,"signLord":"Sun","subLord":"Saturn","subLordSignificators":[3,7,10],"subSubLord":"Mercury"}],"dasha":{"currentPeriod":{"antarDasha":null,"mahaDasha":{"endDate":"2040-03-10","planet":"Venus","startDate":"2020-03-10"},"pratyantarDasha":null},"dashaBalance":4.18,"mahaDashas":[{"antarDashas":[{"endDate":"1990-12-01","isCurrentPeriod":false,"planet":"Moon","pratyantarDashas":[],"startDate":"1990-05-15"}],"durationYears":6.32,"endDate":"1996-09-12","isCurrentPeriod":false,"planet":"Moon","startDate":"1990-05-15"}]},"dataSource":"vedika-ephemeris","houseSystem":"Placidus","ownership":[{"isRetrograde":false,"occupantHouse":10,"ownedHouses":[1],"planet":"Sun"}],"planets":[{"degree":0.7421,"isRetrograde":false,"longitude":30.7421,"nakshatra":"Krittika","nakshatraLord":"Sun","nakshatraPada":2,"planet":"Sun","sign":"Taurus","signIndex":1,"signLord":"Venus","significatorOf":[1,5,10],"subLord":"Mercury","subSubLord":"Ketu"}],"rulingPlanets":{"dayLord":"Mars","lagnaSignLord":"Sun","lagnaStarLord":"Venus","moonSignLord":"Moon","moonStarLord":"Mercury"},"significatorTable":{"1":{"occupants":[],"owner":"Sun","signified":["Sun","Saturn"]}},"supportedLanguages":["en","hi","ta","te"],"translations":{"labels":{"planets":"Planets"},"language":"en"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / MISSING_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Moon position unavailable / Calculation failed (auto-refunded)"}},"summary":"Complete KP analysis in one call — planets, cusps, significators, ruling planets, dasha, aspects","tags":["Vedic Astrology"]}},"/v2/astrology/kp/horary":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/horary"},"data":{"ayanamsa":24.182345,"cusps":[{"degree":9.221,"house":1,"nakshatraLord":"Ketu","sign":"Leo","subLord":"Venus"}],"dataSource":"vedika-ephemeris","houseSystem":"Placidus","planets":[{"degree":28.4102,"isRetrograde":false,"longitude":88.4102,"nakshatra":"Punarvasu","nakshatraLord":"Jupiter","planet":"Sun","sign":"Gemini","signLord":"Mercury","significatorOf":[3,6],"subLord":"Saturn","subSubLord":"Mercury"}],"queryMoment":"2026-06-14T08:42:11.000Z","rulingPlanets":{"dayLord":"Sun","lagnaSignLord":"Sun","lagnaStarLord":"Ketu","moonSignLord":"Mars","moonStarLord":"Saturn"},"system":"kp","type":"horary"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 latitude and longitude are required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Casts a KP horary (Prashna) chart for the current query moment at the querent's location","tags":["Vedic Astrology"]}},"/v2/astrology/kp/prediction":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","house":7,"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"kp","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/prediction"},"data":{"cuspSubLord":"Venus","dataSource":"vedika-ephemeris","favorableInfluences":3,"house":7,"indication":"favorable","significations":["Marriage","Spouse","Partnerships"],"subLordSignificatorOf":[2,7,11],"system":"kp","type":"prediction","unfavorableInfluences":0},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"KP house-based prediction from the cusp sub-lord and its significators","tags":["Vedic Astrology"]}},"/v2/astrology/kp/remedies":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","house":10,"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"kp","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/remedies"},"data":{"afflictingPlanets":[{"planet":"Mars","remedy":{"gemstone":"Red Coral","mantra":"Om Angarakaya Namah"}}],"cuspSubLord":"Saturn","dataSource":"vedika-ephemeris","house":10,"primaryRemedy":{"charity":"Donate black sesame, iron, mustard oil on Saturday","deity":"Shani","gemstone":"Blue Sapphire","mantra":"Om Sham Shanaischaraya Namah"},"system":"kp","type":"remedies"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"KP sub-lord-based remedies for a chosen house and its afflicting planets","tags":["Vedic Astrology"]}},"/v2/astrology/kp/ruling-planets":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"kp","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/ruling-planets"},"data":{"dataSource":"vedika-ephemeris","rulingPlanets":{"ascendantNakshatraLord":"Ketu","ascendantSignLord":"Sun","ascendantSubLord":"Mercury","dayLord":"Mars","moonNakshatraLord":"Mars","moonSignLord":"Saturn","moonSubLord":"Venus"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"KP ruling planets at the birth moment (day, Moon and Ascendant lords)","tags":["Vedic Astrology"]}},"/v2/astrology/kp/significators":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"kp","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/significators"},"data":{"dataSource":"vedika-ephemeris","significatorTable":{"Moon":{"borrowed":[],"combined":[1,3,4,7],"lord":[3],"occupant":[4],"starOfLord":[1],"starOfOccupant":[7]},"Rahu":{"borrowed":[6,11],"combined":[6,9,10,11],"lord":[],"occupant":[9],"starOfLord":[],"starOfOccupant":[10]},"Sun":{"borrowed":[],"combined":[2,3,4,5],"lord":[4],"occupant":[2],"starOfLord":[5],"starOfOccupant":[3]}}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Four-level KP significator table for every planet","tags":["Vedic Astrology"]}},"/v2/astrology/kp/sublord-table":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"kp","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/sublord-table"},"data":{"ayanamsa":23.876543,"cusps":[{"degree":5.4102,"house":1,"longitude":95.4102,"nakshatraLord":"Saturn","sign":"Cancer","signLord":"Moon","subLord":"Mercury","subSubLord":"Ketu"}],"dataSource":"vedika-ephemeris","planets":[{"degree":1.2415,"house":2,"longitude":31.2415,"nakshatraLord":"Sun","planet":"Sun","sign":"Taurus","signLord":"Venus","significatorOf":[2,5],"subLord":"Venus","subSubLord":"Sun"}],"system":"kp","totalSubDivisions":249,"type":"sublord-table"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Full KP sub-lord table for all planets and 12 house cusps across the 249 sub-divisions","tags":["Vedic Astrology"]}},"/v2/astrology/kp/transit-analysis":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","transitDate":"2026-06-14T12:00:00+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"kp","charged":1,"currency":"USD","endpoint":"/v2/astrology/kp/transit-analysis"},"data":{"dataSource":"vedika-ephemeris","natalDate":"1990-05-15T10:30:00+05:30","system":"kp","transitDate":"2026-06-14T12:00:00+05:30","transits":[{"isRetrograde":false,"natalLongitude":112.3344,"natalSubLord":"Mercury","planet":"Jupiter","transitHouse":11,"transitLongitude":78.4521,"transitNakshatraLord":"Rahu","transitSign":"Gemini","transitSubLord":"Saturn"}],"type":"transit-analysis"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime or coordinates)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Compares transiting planet sub-lords against the natal KP chart for a given transit date","tags":["Vedic Astrology"]}},"/v2/astrology/kundali-matching":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1997-03-15T14:00:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"},"male":{"datetime":"1995-06-20T10:30:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2445,"balanceBefore":24.5,"category":"astrology","charged":5,"currency":"USD","endpoint":"/v2/astrology/kundali-matching"},"data":{"compatibility":"Good","doshaAnalysis":{"mangal":{"compatible":true},"nadi":{"compatible":true}},"gunaMilan":{"maxScore":36,"totalScore":28},"recommendation":"..."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (Both male and female birth details required)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Full Kundli matching with Ashtakoot, doshas and overall verdict. Aliases: /kundli-matching, /kundli-match","tags":["Vedic Astrology"]}},"/v2/astrology/kundli":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2447,"balanceBefore":24.5,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/kundli"},"data":{"ascendant":{"degree":12.4,"nakshatra":"Pushya","sign":"Cancer"},"houses":[{"house":1,"lord":"Moon","sign":"Cancer"}],"planets":[{"degree":18.2,"house":4,"nakshatra":"Swati","nakshatraPada":2,"name":"Moon","sign":"Libra"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 MISSING_LATITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Full Kundli with all 12 houses, planetary placements and lordships","tags":["Vedic Astrology"]}},"/v2/astrology/kundli-match":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-03-20T14:00:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"male":{"datetime":"1990-05-15T10:30:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4995,"balanceBefore":50.0,"category":"matching","charged":5,"currency":"USD","endpoint":"/v2/astrology/kundli-match"},"data":{"female_info":{"moon_nakshatra":"Magha","moon_sign":"Leo"},"guna_kootas":[{"description":"Spiritual compatibility - Match","female_koot":"Vaishya","id":1,"male_koot":"Kshatriya","maximum_points":1,"name":"Varna","points":1},{"description":"Health/genes compatibility - No Nadi Dosha","female_koot":"Antya","id":8,"male_koot":"Adi","maximum_points":8,"name":"Nadi","points":8}],"interpretation":"This is a strong match with 28 out of 36 gunas.","male_info":{"moon_nakshatra":"Dhanishtha","moon_sign":"Aquarius"},"match_result":"Compatible","maximum_points":36,"percentage":77.8,"recommendation":"Good match — most kootas align favourably.","remedies":[],"total_points":28},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid male/female birth details (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Ashtakoot 36-Guna marriage compatibility matching for two birth charts","tags":["Vedic Astrology"]}},"/v2/astrology/kundli-matching":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-03-20T14:00:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"male":{"datetime":"1990-05-15T10:30:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4995,"balanceBefore":50.0,"category":"matching","charged":5,"currency":"USD","endpoint":"/v2/astrology/kundli-matching"},"data":{"female_info":{"moon_nakshatra":"Magha","moon_sign":"Leo"},"guna_kootas":[{"description":"Sexual compatibility - Friendly","female_koot":"Rat","id":4,"male_koot":"Mongoose","maximum_points":4,"name":"Yoni","points":3},{"description":"Financial prosperity - 1/7 (Shadashtaka)","female_koot":"Leo","id":7,"male_koot":"Aquarius","maximum_points":7,"name":"Bhakoot","points":0,"warning":"Bhakoot dosha present"}],"interpretation":"This is a strong match with 28 out of 36 gunas.","male_info":{"moon_nakshatra":"Dhanishtha","moon_sign":"Aquarius"},"match_result":"Compatible","maximum_points":36,"percentage":77.8,"recommendation":"Good match — most kootas align favourably.","remedies":[],"total_points":28},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid male/female birth details (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Ashtakoot 36-Guna marriage compatibility matching for two birth charts (alias of kundli-match)","tags":["Vedic Astrology"]}},"/v2/astrology/lalkitab/chart":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"lalkitab","charged":1,"currency":"USD","endpoint":"/v2/astrology/lalkitab/chart"},"data":{"ascendantSign":"Leo","birthData":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"},"debts":[{"description":"Ancestral debt indicated by afflicted Sun","house":10,"planet":"Sun","remedies":["Offer water to the Sun at sunrise","Respect father and elders"],"severity":"moderate","type":"pitru_rin"}],"houseAnalysis":[{"effects":["Sun with friends (Mercury) — mutual support"],"house":10,"isEmpty":false,"planets":[{"house":10,"planet":"Sun","status":"neutral"}],"significance":"Career, profession, status"}],"overallStrength":"Moderate — most planets neutral, a few afflictions need remedies","planetPlacements":[{"enemiesInHouse":[],"friendsInHouse":["Mercury"],"house":10,"isNeechGhar":false,"isPakkaGhar":false,"isSleeping":false,"isUcchaGhar":false,"longitude":31.24,"planet":"Sun","sign":"Taurus","status":"neutral","vedicName":"Surya"}],"system":"lalkitab"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation error (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Full Lal Kitab chart with house placements, debts and overall strength","tags":["Vedic Astrology"]}},"/v2/astrology/lalkitab/debts":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"lalkitab","charged":1,"currency":"USD","endpoint":"/v2/astrology/lalkitab/debts"},"data":{"debts":[{"description":"Ancestral debt indicated by afflicted Sun","house":12,"planet":"Sun","remedies":["Offer water to the Sun at sunrise","Respect father and elders","Donate wheat and jaggery on Sunday"],"severity":"severe","type":"pitru_rin"},{"description":"Maternal debt indicated by afflicted Moon","house":6,"planet":"Moon","remedies":["Serve and respect the mother","Donate milk or rice","Keep a silver item with you"],"severity":"moderate","type":"matru_rin"}],"system":"lalkitab"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation error (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Lal Kitab planetary debts (Rin) — Pitru, Matru, Stri and self debts with remedies","tags":["Vedic Astrology"]}},"/v2/astrology/lalkitab/houses":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"lalkitab","charged":1,"currency":"USD","endpoint":"/v2/astrology/lalkitab/houses"},"data":{"houses":[{"effects":["Empty house — results depend on house lord placement"],"house":1,"isEmpty":true,"planets":[],"significance":"Self, personality, health"},{"effects":["Sun with friends (Mercury) — mutual support"],"house":10,"isEmpty":false,"planets":[{"enemiesInHouse":[],"friendsInHouse":["Mercury"],"house":10,"planet":"Sun","status":"neutral"}],"significance":"Career, profession, status"}],"system":"lalkitab"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation error (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Lal Kitab house-by-house analysis with planet placements and effects","tags":["Vedic Astrology"]}},"/v2/astrology/lalkitab/lucky":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"lalkitab","charged":1,"currency":"USD","endpoint":"/v2/astrology/lalkitab/lucky"},"data":{"lucky":{"color":"Red","day":"Sunday","direction":"East","dominantPlanet":"Sun","metal":"Gold","vedicName":"Surya"},"system":"lalkitab"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation error (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Lal Kitab lucky color, day, metal and direction based on the ascendant lord","tags":["Vedic Astrology"]}},"/v2/astrology/lalkitab/predictions":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"lalkitab","charged":1,"currency":"USD","endpoint":"/v2/astrology/lalkitab/predictions"},"data":{"currentAge":36,"predictions":[{"activatedAge":22,"house":10,"isActive":true,"planets":["Sun"],"prediction":"House 10 (Career, profession, status): Sun gives mixed results based on associations."},{"activatedAge":48,"house":4,"isActive":false,"planets":[],"prediction":"House 4 (Mother, home, property): No direct planetary influence. Results depend on house lord."}],"system":"lalkitab"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation error (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Lal Kitab age-activated house predictions based on the native's current age","tags":["Vedic Astrology"]}},"/v2/astrology/lalkitab/remedies":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"lalkitab","charged":1,"currency":"USD","endpoint":"/v2/astrology/lalkitab/remedies"},"data":{"remedies":[{"house":8,"planet":"Saturn","reason":"Saturn debilitated in house 8","remedies":["Feed crows and black dogs","Donate mustard oil on Saturday","Serve labourers and the underprivileged"]},{"house":6,"planet":"Moon","reason":"Moon afflicted by enemies (Saturn) in house 6","remedies":["Serve and respect the mother","Donate milk or rice"]}],"system":"lalkitab"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation error (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Lal Kitab remedies for debilitated, sleeping or enemy-afflicted planets","tags":["Vedic Astrology"]}},"/v2/astrology/lalkitab/totke":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"lalkitab","charged":1,"currency":"USD","endpoint":"/v2/astrology/lalkitab/totke"},"data":{"system":"lalkitab","totke":[{"house":8,"planet":"Saturn","purpose":"Strengthen debilitated Saturn in house 8","totke":["Feed crows and black dogs","Donate mustard oil on Saturday","Serve labourers and the underprivileged"]},{"house":4,"planet":"Mars","purpose":"Activate sleeping Mars in house 4","totke":["Donate sweets at a temple","Keep a square piece of silver"]}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation error (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Traditional Lal Kitab Totke (remedial measures) for afflicted planets","tags":["Vedic Astrology"]}},"/v2/astrology/lalkitab/varshphal":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"lalkitab","charged":1,"currency":"USD","endpoint":"/v2/astrology/lalkitab/varshphal"},"data":{"system":"lalkitab","varshphal":{"age":36,"debts":[],"houseAnalysis":[{"effects":["Sun gives mixed results based on associations"],"house":11,"isEmpty":false,"planets":[{"house":11,"planet":"Sun"}],"significance":"Gains, income, friends"}],"overallStrength":"Moderate","planetPlacements":[{"enemiesInHouse":[],"friendsInHouse":[],"house":11,"planet":"Sun","sign":"Taurus","status":"neutral","vedicName":"Surya"}],"predictions":[{"activatedAge":22,"house":11,"isActive":true,"planets":["Sun"],"prediction":"House 11 (Gains, income, friends): Sun gives mixed results based on associations."}],"startDate":"2026-05-15","year":2026}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation error (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Lal Kitab annual (Varshphal) chart for a given year with active predictions","tags":["Vedic Astrology"]}},"/v2/astrology/mahadasha":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2447,"balanceBefore":24.5,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/mahadasha"},"data":{"currentMahaDasha":{"endDate":"2032-06-01","lord":"Jupiter"},"mahadashas":[{"endDate":"2001-08-20","lord":"Rahu","startDate":"1990-05-15","years":18}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Vimshottari Mahadasha (main planetary period) timeline","tags":["Vedic Astrology"]}},"/v2/astrology/mangal-dosha":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/mangal-dosha"},"data":{"cancellation":[],"description":"Mars in the 7th house from Ascendant indicates Manglik dosha.","hasMangalDosha":true,"marsHouse":7,"remedies":["Recite Hanuman Chalisa on Tuesdays"],"severity":"medium"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Manglik (Mars) dosha check with severity and affected houses","tags":["Vedic Astrology"]}},"/v2/astrology/matching/ashtakoota":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-03-20T14:00:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"},"male":{"datetime":"1990-05-15T10:30:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50,"category":"matching","charged":2,"currency":"USD","endpoint":"/v2/astrology/matching/ashtakoota"},"data":{"female_info":{"moon_nakshatra":"Pushya","moon_sign":"Cancer"},"gunaDetails":{"varna":{"interpretation":"Full spiritual harmony","score":1}},"guna_kootas":[{"description":"Spiritual compatibility - Match","female_koot":"Vaishya","id":1,"male_koot":"Kshatriya","maximum_points":1,"name":"Varna","points":1},{"description":"Health/genes compatibility - No Nadi Dosha","female_koot":"Madhya","id":8,"male_koot":"Aadi","maximum_points":8,"name":"Nadi","points":8}],"male_info":{"moon_nakshatra":"Rohini","moon_sign":"Taurus"},"match_result":"Compatible","maximum_points":36,"percentage":77.8,"recommendation":"This is a good match with strong compatibility.","remedies":[],"total_points":28},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Both male and female birth details are required (auto-refunded, returns expected_format)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Run Ashtakoot (36-Guna) marriage compatibility between two birth charts, scoring all eight kootas with interpretation and remedies.","tags":["Vedic Astrology"]}},"/v2/astrology/muhurta":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-06-14T09:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/muhurta"},"data":{"choghadiya":{"current":"Amrit","type":"good"},"hora":{"current":"Jupiter"},"rahu_kaal":{"end":"18:33","start":"16:59"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"General muhurta analysis combining Choghadiya, Hora and Rahu Kaal. Related: /shubh-muhurta (auspicious-only)","tags":["Vedic Astrology"]}},"/v2/astrology/nadi-dosha":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","female_details":{"datetime":"1992-08-10T08:15:00","latitude":28.61,"longitude":77.21,"timezone":"+05:30"},"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/nadi-dosha"},"data":{"description":"Different Nadi — no Nadi dosha.","femaleNadi":"Madhya","hasNadiDosha":false,"maleNadi":"Adi"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Nadi compatibility check; runs a two-chart marriage comparison when partner details are supplied","tags":["Vedic Astrology"]}},"/v2/astrology/nadi/analysis":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"vedic-advanced","charged":1,"currency":"USD","endpoint":"/v2/astrology/nadi/analysis"},"data":{"compatibility_note":"For marriage matching, same Nadi (Madhya) between partners is considered Nadi Dosha","constitution":"Pitta (fire) dominant constitution — intense, driven, transformative","healthTendency":"Digestive system, liver, and heat-related conditions","moonNakshatra":"Dhanishtha","nadiDescription":"Madhya Nadi — Pitta (fire) dominant constitution — intense, driven, transformative","nadiType":"Madhya","system":"nadi"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation error (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Nadi (Adi/Madhya/Antya) analysis from the Moon nakshatra with constitution and health tendency","tags":["Vedic Astrology"]}},"/v2/astrology/nakshatra":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Retry-safe dedup key.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"panchang","charged":1,"currency":"USD","endpoint":"/v2/astrology/nakshatra"},"data":{"coordinates":{"latitude":28.6139,"longitude":77.209},"datetime":"2026-03-23T12:00:00+05:30","disha_shool":{"direction":"east"},"guidance":{"activitiesToAvoid":[],"bestActivities":[],"overallAuspiciousness":"Good","tips":[]},"karana":{"interpretation":{},"name":"Bava"},"masa":{"name":"Chaitra"},"nakshatra":{"gana":"Rakshasa","id":3,"interpretation":{"avoid":["Delicate matters"],"bestFor":["Bold action"],"energy":"Fiery","meaning":"Star of fire and purification","tip":"Act decisively"},"name":"Krittika","pada":2},"ritu":{"name":"Vasanta"},"timezone":"+05:30","tithi":{"interpretation":{},"name":"Panchami","paksha":{"id":1,"name":"Shukla"}},"vaara":{"interpretation":{},"name":"Somavara"},"yoga":{"interpretation":{},"name":"Saubhagya","quality":"Auspicious"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Lunar mansion (Nakshatra) for a given datetime and location, with pada, gana and activity guidance.","tags":["Calendar"]}},"/v2/astrology/nakshatra-porutham":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1997-03-15T14:00:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"},"male":{"datetime":"1995-06-20T10:30:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2446,"balanceBefore":24.5,"category":"astrology","charged":4,"currency":"USD","endpoint":"/v2/astrology/nakshatra-porutham"},"data":{"outOf":10,"poruthams":[{"matched":true,"name":"Dina"},{"matched":false,"name":"Rajju"}],"totalMatched":8,"verdict":"Compatible"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (Both male and female birth details required)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"10-factor South Indian (nakshatra) marriage matching. Aliases: /porutham, /thirumana-porutham","tags":["Vedic Astrology"]}},"/v2/astrology/narayana-dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"dasha","charged":3,"currency":"USD","endpoint":"/v2/astrology/narayana-dasha"},"data":{"birthData":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"},"currentMahaDasha":{"endDate":"2031-05-15","sign":"Sagittarius","signLord":"Jupiter","startDate":"2022-05-15"},"currentSubPeriod":{"endDate":"2026-09-15","parentSign":"Sagittarius","sign":"Aquarius","signLord":"Saturn","startDate":"2025-11-15"},"dashaBalance":{"elapsedPercentage":61.0,"remainingDays":12,"remainingMonths":7,"remainingTotalDays":1683,"remainingYears":4,"sign":"Leo"},"lagnaLord":"Sun","lagnaSign":"Leo","mahaDashas":[{"durationDays":4383,"durationYears":12,"endDate":"2002-05-15","isCurrentPeriod":false,"sign":"Leo","signLord":"Sun","startDate":"1990-05-15","subPeriods":[{"durationDays":365,"durationYears":1,"endDate":"1991-05-15","isCurrentPeriod":false,"parentSign":"Leo","sign":"Leo","signLord":"Sun","startDate":"1990-05-15"}]}],"system":"narayana"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Could not determine ascendant position (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Jaimini Narayana Dasha — sign-based dasha periods from the Lagna with current period","tags":["Vedic Astrology"]}},"/v2/astrology/navamsa":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2449,"balanceBefore":24.5,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/navamsa"},"data":{"chartName":"D9","description":"Navamsa Chart","divisionalLagna":{"degree":4.2,"sign":3,"signName":"Cancer"},"interpretation":{"reveals":["Spouse characteristics"],"significance":"Marriage, spouse and dharmic path","summary":"..."},"positions":[{"degree":2.1,"formattedDegree":"2°6'","house":6,"planet":"Sun","sign":8,"signName":"Sagittarius"}],"remedies":[],"tips":[],"vargottamaPlanets":["Moon"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 MISSING_LATITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Navamsa (D-9) divisional chart for marriage, dharma and planetary strength. Alias: /navamsha","tags":["Vedic Astrology"]}},"/v2/astrology/navamsha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/navamsha"},"data":{"chartType":"Navamsa (D-9)","description":"Marriage, spouse, dharma and inner strength of planets","division":9,"interpretation":{"analysis":[],"keyPlanets":["Venus","Jupiter"],"reveals":["Marriage and spouse","Dharma","Planetary strength"],"significance":"The Navamsa reveals marriage prospects and the dharmic path.","summary":"In your Navamsa chart, Venus is placed in Pisces, indicating refined and devoted love. This chart reveals your dharmic path and the nature of your married life."},"keywords":["marriage","dharma","spouse"],"lagnaDegree":18.4,"lagnaFormattedDegree":"18°24'","lagnaLongitude":78.4,"lagnaSign":2,"lagnaSignName":"Gemini","positions":[{"degree":11.17,"formattedDegree":"11°10'","house":4,"originalLongitude":31.24,"planet":"Sun","sign":7,"signName":"Scorpio"}],"remedies":[],"tips":[],"vargottamaPlanets":["Jupiter"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing date, bad datetime format, polar/invalid coordinates) — auto-refunded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Navamsa (D-9) divisional chart for marriage, dharma and planetary strength with interpretation","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/address":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional key to dedupe retries and prevent double-charging the wallet.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"address":"42 Park Avenue, Apt 7"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/address"},"data":{"address":"42 Park Avenue, Apt 7","analysis":"Number 4: Foundation — Builder, practical, disciplined","interpretation":{"challenges":["Rigidity","Stubbornness"],"description":"Builder, practical, disciplined","element":"Earth","keyword":"Foundation","planet":"Uranus","strengths":["Organization","Reliability","Hard work"]},"method":"applied","number":4,"rawNumber":13,"suitableFor":["Families","Builders","Traditional businesses"],"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 address must be a string (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Numerology of a street address — house number vibration and what it suits","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/balance":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional key to dedupe retries and prevent double-charging the wallet.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"Rajesh Kumar Sharma"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/balance"},"data":{"balanceNumber":6,"interpretation":{"challenges":["Over-giving","Perfectionism"],"description":"Nurturer, harmonizer, healer","element":"Earth","keyword":"Responsibility","planet":"Venus","strengths":["Compassion","Responsibility","Artistic sense"]},"method":"pythagorean","name":"Rajesh Kumar Sharma","system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 name must be a string (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Balance number from name initials — how you steady yourself under stress","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/birthday":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional key to dedupe retries and prevent double-charging the wallet.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDate":"1990-05-15"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/birthday"},"data":{"birthDate":"1990-05-15","birthdayNumber":6,"interpretation":{"challenges":["Over-giving","Perfectionism"],"description":"Nurturer, harmonizer, healer","element":"Earth","keyword":"Responsibility","planet":"Venus","strengths":["Compassion","Responsibility","Artistic sense"]},"method":"pythagorean","system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Date must be YYYY-MM-DD"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Birthday number from the day of birth — your natural talent","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/business-name":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional key to dedupe retries and prevent double-charging the wallet.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"businessName":"Vedika Technologies"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/business-name"},"data":{"analysis":"Number 7: Analysis — Seeker, introspective, spiritual","compoundNumber":79,"method":"applied","name":"Vedika Technologies","number":7,"rating":"neutral","suggestions":["Add letter \"H\" (value 8) to reach 6 — Responsibility","Add letter \"B\" (value 2) to reach 9 — Completion"],"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 businessName must be a string (auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Business-name numerology with a rating and name-tuning suggestions","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/chaldean/life-path":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). May also be sent as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional key to dedupe retries and prevent double-charging the wallet.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDate":"1990-05-15"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/chaldean/life-path"},"data":{"birthDate":"1990-05-15","interpretation":{"challenges":["Scattered energy","Superficiality"],"description":"Creative, communicative, joyful","element":"Fire","keyword":"Expression","planet":"Jupiter","strengths":["Creativity","Charisma","Optimism"]},"lifePathNumber":3,"method":"chaldean","reducedDay":6,"reducedMonth":5,"reducedYear":1,"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Date must be YYYY-MM-DD"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Chaldean life-path number from the birth date with reduced day/month/year","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/chaldean/name":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"Aishwarya Rai"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/chaldean/name"},"data":{"compoundMeaning":{"fortunate":true,"interpretation":"No verified classical compound meaning is available for 39 (our sourced Chaldean compounds cover 10–27). Reduces to root number 3.","name":"Compound 39","number":39},"compoundNumber":39,"interpretation":{"challenges":["Scattered energy","Superficiality"],"description":"Creative, communicative, joyful","element":"Fire","keyword":"Expression","planet":"Jupiter","strengths":["Creativity","Charisma","Optimism"]},"letterBreakdown":[{"letter":"A","value":1},{"letter":"I","value":1},{"letter":"S","value":3},{"letter":"H","value":5}],"method":"chaldean","name":"Aishwarya Rai","nameNumber":3,"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 name (or fullName) is required / name must be a string"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Chaldean name-number reading with per-letter breakdown and compound-number fortune meaning.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/challenge":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/challenge"},"data":{"birthDate":"1990-05-15","challenges":[{"number":1,"period":"First Challenge (birth to ~30)"},{"number":4,"period":"Second Challenge (~30 to ~40)"},{"number":3,"period":"Third Challenge (~40 to ~50)"},{"number":5,"period":"Fourth Challenge (~50 onward)"}],"method":"pythagorean","system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required (YYYY-MM-DD) / Date must be YYYY-MM-DD"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"The four life-challenge numbers and the periods they govern, derived from birth date.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/color-numerology":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/color-numerology"},"data":{"birthDate":"1990-05-15","hex":"#FFD700","lifePathNumber":3,"method":"pythagorean","primary":"Yellow","recommendation":"As a Expression (3), wearing Yellow enhances your natural energy.","secondary":["Orange","Pink"],"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required (YYYY-MM-DD) / Date must be YYYY-MM-DD"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Lucky colors and recommended shades based on your life-path number.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/compatibility":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"person1":{"birthDate":"1990-05-15","name":"Rahul Sharma"},"person2":{"birthDate":"1992-08-21","name":"Priya Verma"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/compatibility"},"data":{"compatibility":{"destiny":{"rating":"Challenging","score":50},"lifePath":{"rating":"Good","score":85},"overall":{"rating":"Moderate","score":74},"soulUrge":{"rating":"Good","score":85}},"person1":{"destiny":8,"lifePath":3,"name":"Rahul Sharma","soulUrge":1},"person2":{"destiny":7,"lifePath":5,"name":"Priya Verma","soulUrge":5}},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 person2.name and person2.birthDate are required"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Numerology compatibility score between two people across life-path, destiny and soul-urge.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/complete":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"name":"Rahul Sharma","system":"pythagorean","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/complete"},"data":{"birthDate":"1990-05-15","coreNumbers":{"birthday":{"number":6},"destiny":{"number":8},"lifePath":{"career":["Artist","Writer","Actor"],"challenges":["Scattered energy","Superficiality"],"description":"Creative communicator, optimistic, artistic talents. You bring joy and inspiration to others.","keywords":"Creativity, Expression, Joy","lifeLesson":"Learn to focus your creative energy and communicate authentically.","luckyColors":["Yellow","Orange","Pink"],"luckyNumbers":[3,12,21,30],"number":3,"relationships":"You need a partner who appreciates your creative spirit and social nature.","strengths":["Creativity","Self-expression","Optimism"]},"maturity":{"number":2},"personality":{"number":7},"soulUrge":{"number":1}},"currentCycles":{"personalYear":{"number":5,"year":2026},"universalYear":{"number":1,"year":2026}},"karmicIndicators":{"hiddenPassion":1,"karmicDebt":null,"karmicLessons":[2,4,9]},"name":"Rahul Sharma","personalityIndicators":{"balanceNumber":1,"challengeNumber":3},"system":"pythagorean"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid calendar date"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Complete numerology reading: all core numbers, karmic indicators and current cycles in one call.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/complete-report":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"name":"Rahul Sharma","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/complete-report"},"data":{"birthDate":"1990-05-15","chaldean":{"lifePathNumber":7,"name":{"compoundNumber":41,"letterBreakdown":[{"letter":"R","value":2}],"nameNumber":5},"reducedDay":6,"reducedMonth":5,"reducedYear":1},"colors":{"hex":"#FFD700","lifePathNumber":3,"primary":"Yellow","recommendation":"As a Expression (3), wearing Yellow enhances your natural energy.","secondary":["Orange","Pink"]},"loShu":{"arrows":[],"digitCounts":{"1":2,"5":1,"6":1,"9":2},"grid":[[null,9,null],[null,5,null],[null,1,6]],"missingNumbers":[2,3,4,7,8],"presentNumbers":[1,5,6,9]},"luckyNumbers":{"luckyDates":[3,6,12,15,21,24,30],"luckyYears":[2028,2031],"primary":3,"secondary":[1,5,6]},"method":"all","name":"Rahul Sharma","pythagorean":{"balance":1,"birthday":6,"challenge":{"challenges":[{"number":1,"period":"First Challenge (birth to ~30)"}]},"expression":8,"hiddenPassion":{"allFrequencies":{"1":3,"2":1},"frequency":3,"number":1},"innerDream":7,"karmicDebt":{"debtNumbers":[],"descriptions":[],"hasDebt":false},"karmicLesson":{"lessons":[{"lesson":"Learn cooperation, patience, and sensitivity to others.","number":2}],"missingNumbers":[2,4,9]},"lifePath":3,"maturity":2,"pinnacle":{"pinnacles":[{"ages":"Birth to 33","number":6,"period":"First Pinnacle"}]}},"system":"numerology","vedic":{"bhagyank":3,"favorableColors":["Pink","Light Blue"],"favorableDays":["Friday"],"mantra":"Om Shukraya Namaha","mulank":6,"namank":8,"planetaryRuler":"Shukra (Venus)"}},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required (YYYY-MM-DD)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"All-systems numerology report combining Pythagorean, Chaldean, Lo Shu, Vedic and applied numbers.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/destiny":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"Rahul Sharma","system":"pythagorean"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/destiny"},"data":{"destinyNumber":8,"interpretation":{"career":["Business owner","Executive","Banker"],"challenges":["Workaholic","Materialistic"],"description":"Ambitious, business acumen, material success. You are here to master the material world.","keywords":"Power, Abundance, Achievement","lifeLesson":"Learn that true wealth includes emotional and spiritual abundance.","luckyColors":["Black","Dark blue","Dark grey"],"luckyNumbers":[8,17,26,35],"relationships":"Balance power dynamics. Success means nothing without love.","strengths":["Business sense","Authority","Organization"]},"name":"Rahul Sharma","system":"pythagorean"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 name (or fullName) is required"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Destiny (Expression) number from full name with detailed life-guidance interpretation.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/expression":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"Rahul Sharma"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/expression"},"data":{"expressionNumber":8,"interpretation":{"challenges":["Workaholism","Materialism"],"description":"Ambitious, authoritative, material success","element":"Earth","keyword":"Power","planet":"Saturn","strengths":["Business sense","Authority","Financial wisdom"]},"method":"pythagorean","name":"Rahul Sharma","system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 name (or fullName) is required / name must be a string"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Expression number (sum of all name letters) revealing innate talents and life purpose.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/hidden-passion":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"Rahul Sharma"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/hidden-passion"},"data":{"allFrequencies":{"1":3,"2":1,"3":1,"4":0,"5":1,"6":0,"7":0,"8":2,"9":2},"frequency":3,"interpretation":{"challenges":["Stubbornness","Impatience"],"description":"Pioneer, independent, original","element":"Fire","keyword":"Leadership","planet":"Sun","strengths":["Initiative","Ambition","Drive"]},"method":"pythagorean","name":"Rahul Sharma","number":1,"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 name (or fullName) is required / name must be a string"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Hidden passion number — the most frequent digit in your name showing a dominant inner talent.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/inner-dream":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"Rahul Sharma"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/inner-dream"},"data":{"innerDreamNumber":7,"interpretation":{"challenges":["Isolation","Skepticism"],"description":"Seeker, introspective, spiritual","element":"Water","keyword":"Analysis","planet":"Neptune","strengths":["Analytical mind","Wisdom","Intuition"]},"method":"pythagorean","name":"Rahul Sharma","system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 name (or fullName) is required / name must be a string"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Inner dream number (consonants of your name) revealing your private hopes and self-image.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/kabbalah":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"Rahul Sharma"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/kabbalah"},"data":{"method":"kabbalah","name":"Rahul Sharma","nameNumber":8,"path":{"hebrewLetter":"Mem","meaning":"Transformation, death-rebirth","path":"Tiphereth to Netzach"},"pathNumber":13,"system":"numerology","treePosition":"Tiphereth to Netzach"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 name (or fullName) is required / name must be a string"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Kabbalistic name number mapped to a Tree-of-Life path and Hebrew letter.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/karmic-debt":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/karmic-debt"},"data":{"birthDate":"1990-05-15","debtNumbers":[],"descriptions":[],"hasDebt":false,"method":"pythagorean","system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required (YYYY-MM-DD) / Date must be YYYY-MM-DD"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Karmic debt numbers (13/14/16/19) present in your birth date and the lessons they carry.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/karmic-lesson":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"Rahul Sharma"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/karmic-lesson"},"data":{"lessons":[{"lesson":"Learn cooperation, patience, and sensitivity to others.","number":2},{"lesson":"Build discipline, organization, and practical skills.","number":4},{"lesson":"Practice compassion, humanitarianism, and letting go.","number":9}],"method":"pythagorean","missingNumbers":[2,4,9],"name":"Rahul Sharma","system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 name (or fullName) is required / name must be a string"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Karmic lesson numbers — the digits 1-9 absent from your name and the qualities to develop.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/life-path":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"system":"pythagorean","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/life-path"},"data":{"birthDate":"1990-05-15","interpretation":{"career":["Artist","Writer","Actor"],"challenges":["Scattered energy","Superficiality"],"description":"Creative communicator, optimistic, artistic talents. You bring joy and inspiration to others.","keywords":"Creativity, Expression, Joy","lifeLesson":"Learn to focus your creative energy and communicate authentically.","luckyColors":["Yellow","Orange","Pink"],"luckyNumbers":[3,12,21,30],"relationships":"You need a partner who appreciates your creative spirit and social nature.","strengths":["Creativity","Self-expression","Optimism"]},"lifePathNumber":3,"system":"pythagorean"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid calendar date"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Life Path number from birth date — your core life theme with full interpretation.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/lo-shu-grid":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/lo-shu-grid"},"data":{"arrows":[],"birthDate":"1990-05-15","digitCounts":{"1":2,"2":0,"3":0,"4":0,"5":1,"6":1,"7":0,"8":0,"9":2},"grid":[[null,9,null],[null,5,null],[null,1,6]],"method":"lo-shu","missingNumbers":[2,3,4,7,8],"presentNumbers":[1,5,6,9],"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required (YYYY-MM-DD) / Date must be YYYY-MM-DD"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Lo Shu magic-square grid from birth date with present/missing numbers and detected arrows.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/lucky-numbers":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/lucky-numbers"},"data":{"birthDate":"1990-05-15","luckyDates":[3,5,6,12,14,15,21,23,24,30],"luckyYears":[2028,2031,2034,2037,2040],"method":"pythagorean","primary":3,"secondary":[1,5,6],"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required (YYYY-MM-DD) / Date must be YYYY-MM-DD"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Your primary and secondary lucky numbers plus lucky dates and years from birth date.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/maturity":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"name":"Rahul Sharma","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/maturity"},"data":{"birthDate":"1990-05-15","expression":8,"interpretation":{"challenges":["Over-sensitivity","Indecision"],"description":"Diplomat, sensitive, peacemaker","element":"Water","keyword":"Cooperation","planet":"Moon","strengths":["Diplomacy","Intuition","Patience"]},"lifePath":3,"maturityNumber":2,"method":"pythagorean","name":"Rahul Sharma","system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required (YYYY-MM-DD)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Maturity number (life-path + expression) showing the goal that emerges in later life.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/name-correction":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"name":"Rahul Sharma","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/name-correction"},"data":{"birthDate":"1990-05-15","currentNumber":8,"lifePath":3,"method":"applied","name":"Rahul Sharma","suggestions":[{"name":"Rahul Sharmae","number":3,"reason":"Adding \"E\" (value 5) shifts name number to 3 (Expression), harmonious with life path 3."},{"name":"Rahul Sharmab","number":1,"reason":"Adding \"B\" (value 2) shifts name number to 1 (Leadership), harmonious with life path 3."}],"system":"numerology","targetNumbers":[3,1,9]},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required (YYYY-MM-DD)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Name-correction suggestions to align your name number harmoniously with your life path.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/number-meaning/{number}":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"The numerology number to look up; must be 1-33 (single digits 1-9 or master numbers 11, 22, 33).","in":"path","name":"number","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/number-meaning/{number}"},"data":{"challenges":["Workaholism","Materialism"],"description":"Ambitious, authoritative, material success","element":"Earth","keyword":"Power","method":"reference","number":8,"planet":"Saturn","strengths":["Business sense","Authority","Financial wisdom"],"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 No meaning found for number {n}"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Reference lookup of the meaning of any numerology number (1-9, 11, 22, 33).","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/personal-day":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"date":"2026-06-14","datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/personal-day"},"data":{"birthDate":"1990-05-15","date":"2026-06-14","interpretation":{"challenges":["Isolation","Skepticism"],"description":"Seeker, introspective, spiritual","element":"Water","keyword":"Analysis","planet":"Neptune","strengths":["Analytical mind","Wisdom","Intuition"]},"method":"pythagorean","personalDay":7,"personalMonth":9,"personalYear":5,"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 date must be YYYY-MM-DD"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Personal day number — the daily numerological theme for any target date.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/personal-month":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"month":6,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/personal-month"},"data":{"birthDate":"1990-05-15","interpretation":{"challenges":["Aloofness","Scattered energy"],"description":"Humanitarian, wise, universal love","element":"Fire","keyword":"Completion","planet":"Mars","strengths":["Compassion","Creativity","Generosity"]},"method":"pythagorean","month":6,"personalMonth":9,"personalYear":5,"system":"numerology","year":2026},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required (YYYY-MM-DD) / Date must be YYYY-MM-DD"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Personal month number — the numerological theme for a given month and year.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/personal-year":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/personal-year"},"data":{"birthDate":"1990-05-15","description":"Theme for your year 2026","interpretation":{"career":["Travel writer","Sales","Marketing"],"challenges":["Restlessness","Inconsistency"],"description":"Dynamic energy, versatile, loves variety. You are here to experience life fully.","keywords":"Freedom, Change, Adventure","lifeLesson":"Learn that true freedom comes from disciplined focus, not chaos.","luckyColors":["Turquoise","Light green","Silver"],"luckyNumbers":[5,14,23,32],"relationships":"You need freedom in relationships. Choose a partner who values adventure.","strengths":["Adaptability","Curiosity","Versatility"]},"personalYearNumber":5,"year":2026},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid calendar date"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Personal year number — the overarching theme of a calendar year for you.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/personality":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"Rahul Sharma","system":"pythagorean"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/personality"},"data":{"description":"How others perceive you based on consonants in your name","interpretation":{"career":["Researcher","Scientist","Philosopher"],"challenges":["Isolation","Skepticism"],"description":"Seeker of truth, introspective, analytical mind. You are here to find deeper meaning.","keywords":"Analysis, Wisdom, Spirituality","lifeLesson":"Learn to trust your intuition and share your wisdom with others.","luckyColors":["Purple","Violet","Grey"],"luckyNumbers":[7,16,25,34],"relationships":"You need intellectual connection. Solitude is important but avoid isolation.","strengths":["Analytical mind","Intuition","Wisdom"]},"name":"Rahul Sharma","personalityNumber":7,"system":"pythagorean"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 name (or fullName) is required"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Personality number (consonants of your name) showing how others first perceive you.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/phone-number":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"phone":"+91 98765 43210"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/phone-number"},"data":{"analysis":"Responsibility: Nurturer, harmonizer, healer","digitSum":51,"interpretation":{"challenges":["Over-giving","Perfectionism"],"description":"Nurturer, harmonizer, healer","element":"Earth","keyword":"Responsibility","planet":"Venus","strengths":["Compassion","Responsibility","Artistic sense"]},"method":"applied","number":6,"phone":"+91 98765 43210","system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 phone must contain at least one digit (0-9)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Numerology analysis of a phone number — its reduced number and vibration.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/pinnacle":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional client-supplied key; reusing it on a retry prevents a duplicate wallet charge.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDate":"1990-05-15","name":"Rajesh Kumar"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/pinnacle"},"data":{"birthDate":"1990-05-15","method":"pythagorean","pinnacles":[{"ages":"Birth to 30","number":2,"period":"First Pinnacle"},{"ages":"31 to 39","number":7,"period":"Second Pinnacle"},{"ages":"40 to 48","number":9,"period":"Third Pinnacle"},{"ages":"49 onward","number":6,"period":"Fourth Pinnacle"}],"system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required / Date must be YYYY-MM-DD"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Reveal the four life-stage pinnacle numbers and the age ranges each one governs from a birth date.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/soul-urge":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional client-supplied key; reusing it on a retry prevents a duplicate wallet charge.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"Rajesh Kumar","system":"pythagorean"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/soul-urge"},"data":{"description":"Your inner desires and motivations based on vowels in your name","interpretation":{"career":["Business owner","Executive","Banker"],"challenges":["Workaholic","Materialistic"],"description":"Ambitious, business acumen, material success...","keywords":"Power, Abundance, Achievement","lifeLesson":"Learn that true wealth includes emotional and spiritual abundance.","luckyColors":["Black","Dark blue"],"luckyNumbers":[8,17,26,35],"relationships":"Balance power dynamics. Success means nothing without love.","strengths":["Business sense","Authority","Organization"]},"name":"Rajesh Kumar","soulUrgeNumber":8,"system":"pythagorean"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 system must be \"pythagorean\" or \"chaldean\""},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Calculate the Soul Urge (Heart's Desire) number from a name's vowels, revealing inner motivations.","tags":["Vedic Astrology"]}},"/v2/astrology/numerology/vedic/sankhya":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional client-supplied key; reusing it on a retry prevents a duplicate wallet charge.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDate":"1990-05-15","name":"Rajesh Kumar"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"endpoint":"/v2/astrology/numerology/vedic/sankhya"},"data":{"bhagyank":3,"birthDate":"1990-05-15","favorableColors":["White","Pink"],"favorableDays":["Friday","Monday"],"mantra":"Om Shukraya Namah","method":"vedic","mulank":6,"namank":8,"name":"Rajesh Kumar","planetaryRuler":"Venus","system":"numerology"},"engine":"vedika-intelligence","success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birthDate is required (YYYY-MM-DD)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Compute Vedic numerology (Mulank, Bhagyank, Namank) with the ruling planet, favorable days, colors and mantra.","tags":["Vedic Astrology"]}},"/v2/astrology/panchang":{"get":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Date YYYY-MM-DD (anchored at noon IST). If omitted with no datetime, uses now.","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Full ISO 8601 datetime (takes precedence over date).","in":"query","name":"datetime","required":false,"schema":{"type":"string"}},{"description":"Latitude (alias lat). Defaults to Delhi.","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Longitude (alias lng/lon). Defaults to Delhi.","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"IANA name or UTC offset. Default Asia/Kolkata.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Add-on blocks: sunrise, muhurta, festivals, all.","in":"query","name":"include","required":false,"schema":{"type":"string"}},{"description":"Localized language (alias langcode). Default en.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"panchang","charged":1,"currency":"USD","endpoint":"/v2/astrology/panchang"},"data":{"coordinates":{"latitude":28.6139,"longitude":77.209},"datetime":"2026-05-15T12:00:00+05:30","disha_shool":{"direction":"north"},"guidance":{"activitiesToAvoid":[],"bestActivities":[],"overallAuspiciousness":"Good","tips":[]},"karana":{"interpretation":{},"name":"Garaja"},"masa":{"name":"Vaishakha"},"nakshatra":{"interpretation":{"meaning":"..."},"name":"Rohini"},"ritu":{"name":"Grishma"},"timezone":"Asia/Kolkata","tithi":{"interpretation":{"meaning":"..."},"name":"Dashami","paksha":{"id":2,"name":"Krishna"}},"vaara":{"interpretation":{"gemstone":"Emerald","luckyColor":"Green"},"name":"Budhavara"},"yoga":{"interpretation":{},"name":"Shobhana","quality":"Auspicious"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LANG_PARAM"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Complete Panchang via query parameters (?date= or ?datetime=); same data as the dated path with convenient query-string input.","tags":["Calendar"]},"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","include":"sunrise,muhurta","lang":"hi","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"panchang","charged":1,"currency":"USD","endpoint":"/v2/astrology/panchang","includes":["sunrise","muhurta"]},"data":{"coordinates":{"latitude":28.6139,"longitude":77.209},"datetime":"2026-03-23T12:00:00+05:30","disha_shool":{"direction":"east"},"karana":{"interpretation":{},"name":"Bava"},"language":"hi","masa":{"name":"Chaitra"},"muhurta":{"abhijit_muhurta":{"description":"...","duration_minutes":48,"end":"...","start":"..."},"auspicious_timings":[{"description":"...","end":"...","name":"Brahma Muhurta","start":"..."}],"inauspicious_periods":[{"description":"...","end":"...","name":"Rahu Kaal","start":"..."}],"rahu_kaal":{"description":"Inauspicious period ruled by Rahu","duration_minutes":90,"end":"2026-03-23T09:12:00.000Z","start":"2026-03-23T07:42:00.000Z"}},"nakshatra":{"interpretation":{},"name":"Krittika"},"ritu":{"name":"Vasanta"},"sunrise":{"moonrise":"2026-03-23T09:40:00+05:30","moonset":"2026-03-23T23:55:00+05:30","sunrise":"2026-03-23T06:12:00+05:30","sunset":"2026-03-23T18:34:00+05:30"},"timezone":"+05:30","tithi":{"interpretation":{"meaning":"..."},"name":"Panchami","paksha":{"id":1,"name":"Shukla"}},"vaara":{"interpretation":{},"name":"Somavara"},"yoga":{"interpretation":{},"name":"Saubhagya","quality":"Auspicious"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LANG_PARAM"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Complete Panchang for a supplied datetime and location via JSON body, with optional sunrise/muhurta/festival add-ons and localized language.","tags":["Calendar"]}},"/v2/astrology/panchang/today":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Latitude (-90..90). Aliases: lat. Defaults to Delhi 28.6139 if omitted.","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Longitude (-180..180). Aliases: lng, lon. Defaults to Delhi 77.2090 if omitted.","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"IANA name or UTC offset (e.g. Asia/Kolkata, +05:30). Defaults to Asia/Kolkata.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Comma list of add-on blocks: sunrise, muhurta, festivals, or all. Each add-on surcharges the price.","in":"query","name":"include","required":false,"schema":{"type":"string"}},{"description":"Localized interpretation language. Aliases: langcode. Supported: en, hi, ta, bn, mr, gu, kn, ml, pa, te, ur, or, as, sa, kok, mai. Default en.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"panchang","charged":1,"currency":"USD","endpoint":"/v2/astrology/panchang/today"},"data":{"coordinates":{"latitude":28.6139,"longitude":77.209},"datetime":"2026-06-14T12:00:00+05:30","disha_shool":{"direction":"west"},"guidance":{"activitiesToAvoid":["Conflicts"],"bestActivities":["Worship","Art"],"overallAuspiciousness":"Good","summary":"Today offers generally positive energies. ...","tips":["Observe Ekadashi vrat"]},"karana":{"id":3,"interpretation":{"avoid":["Nothing"],"bestFor":["Routine work"],"meaning":"Stable, supportive","nature":"Benefic","tip":"Steady progress"},"name":"Taitila"},"masa":{"interpretation":{"festivals":[],"significance":"..."},"name":"Jyeshtha"},"nakshatra":{"gana":"Rakshasa","id":14,"interpretation":{"avoid":["Conflicts"],"bestFor":["Art","Crafts"],"energy":"Active","meaning":"Star of creativity and design","tip":"Channel creative energy"},"name":"Chitra","pada":2},"ritu":{"name":"Grishma"},"timezone":"Asia/Kolkata","tithi":{"id":11,"interpretation":{"avoid":["Heavy meals"],"bestFor":["Fasting","Worship"],"energy":"Sattvic","meaning":"Day of spiritual discipline and fasting","tip":"Observe Ekadashi vrat"},"name":"Ekadashi","paksha":{"id":1,"name":"Shukla"}},"vaara":{"id":6,"interpretation":{"avoid":["Disputes"],"bestFor":["Love","Arts"],"energy":"Harmonious","gemstone":"Diamond","luckyColor":"White","meaning":"Day of Venus","tip":"Express affection"},"name":"Shukravara"},"yoga":{"id":7,"interpretation":{"effect":"Favorable","guidance":"Good for charitable acts","meaning":"Yoga of good deeds"},"name":"Sukarma","quality":"Auspicious"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LANG_PARAM"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Today's complete Hindu almanac (Panchang): tithi, nakshatra, yoga, karana, weekday, lunar month, season and daily auspiciousness guidance for any location.","tags":["Calendar"]}},"/v2/astrology/panchang/{date}":{"get":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Target date in YYYY-MM-DD format.","in":"path","name":"date","required":true,"schema":{"type":"string"}},{"description":"Latitude (alias lat). Defaults to Delhi.","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Longitude (alias lng/lon). Defaults to Delhi.","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"IANA name or UTC offset. Default Asia/Kolkata.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Add-on blocks: sunrise, muhurta, festivals, all. Each surcharges price.","in":"query","name":"include","required":false,"schema":{"type":"string"}},{"description":"Localized language (alias langcode). 16 Indic codes supported. Default en.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"panchang","charged":1,"currency":"USD","endpoint":"/v2/astrology/panchang/{date}"},"data":{"coordinates":{"latitude":28.6139,"longitude":77.209},"datetime":"2026-03-23T12:00:00+05:30","disha_shool":{"direction":"east"},"guidance":{"activitiesToAvoid":[],"bestActivities":[],"overallAuspiciousness":"Excellent","summary":"...","tips":[]},"karana":{"interpretation":{"meaning":"..."},"name":"Bava"},"masa":{"name":"Chaitra"},"nakshatra":{"id":3,"interpretation":{"meaning":"..."},"name":"Krittika"},"ritu":{"name":"Vasanta"},"timezone":"Asia/Kolkata","tithi":{"id":5,"interpretation":{"avoid":[],"bestFor":[],"energy":"...","meaning":"...","tip":"..."},"name":"Panchami","paksha":{"id":1,"name":"Shukla"}},"vaara":{"interpretation":{"gemstone":"Pearl","luckyColor":"White"},"name":"Somavara"},"yoga":{"interpretation":{"effect":"...","guidance":"...","meaning":"..."},"name":"Saubhagya","quality":"Auspicious"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LANG_PARAM"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Complete Panchang for a specific calendar date (YYYY-MM-DD) at any location, with optional sunrise, muhurta and upcoming-festival add-ons.","tags":["Calendar"]}},"/v2/astrology/panchottari-dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"dasha","charged":3,"currency":"USD","endpoint":"/v2/astrology/panchottari-dasha"},"data":{"birthData":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"},"birthNakshatra":"Pushya","currentAntarDasha":{"endDate":"2027-02-10","mahaDashaLord":"Mars","planet":"Venus","startDate":"2025-09-01","vedicName":"Shukra"},"currentMahaDasha":{"endDate":"2029-06-15","planet":"Mars","startDate":"2022-03-01","vedicName":"Mangala"},"dashaBalance":{"planet":"Saturn","years":4.2},"mahaDashas":[{"antarDashas":[{"endDate":"1991-01-10","planet":"Saturn","startDate":"1990-05-15"}],"endDate":"1994-07-20","planet":"Saturn","startDate":"1990-05-15","vedicName":"Shani"}],"nakshatraLord":"Saturn","system":"panchottari","totalCycleYears":105},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime format"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Generate the 105-year Panchottari dasha timeline with current Maha and Antar periods from birth details.","tags":["Vedic Astrology"]}},"/v2/astrology/pitra-dosha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"dosha","charged":3,"currency":"USD","endpoint":"/v2/astrology/pitra-dosha"},"data":{"has_dosha":true,"indicators":["Sun afflicted by Rahu in 9th house"],"interpretation":{"auspiciousTimes":["Pitru Paksha","Amavasya"],"chartIndicators":["Sun-Rahu/Ketu conjunction","Afflicted 9th house"],"currentStatus":{"description":"Moderate ancestral karmic influence present.","effects":["Periodic obstacles in progeny matters"],"guidance":"Perform annual Shraddha rituals.","severity":"Moderate"},"lifeIndicators":["Delays in childbirth","Recurring family obstacles"],"overview":"Pitru Dosha indicates unfulfilled ancestral obligations...","remedialMeasures":["Tarpan on Amavasya"]},"moon_house":4,"moon_sign":"Cancer","percentage":55,"remedies":["Perform Shraddha ceremony during Pitru Paksha","Donate food to Brahmins"],"severity":"Moderate","sun_house":9,"sun_sign":"Taurus"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime format"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Detect ancestral (Pitru/Pitra) dosha in a birth chart with severity, indicators, percentage and remedies.","tags":["Vedic Astrology"]}},"/v2/astrology/pitru-dosha":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2447,"balanceBefore":24.5,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/pitru-dosha"},"data":{"description":"Pitru dosha indicated; ancestral remedies advised.","hasPitruDosha":true,"indicators":["Sun afflicted by Rahu in the 9th house"],"remedies":["Perform Tarpan during Pitru Paksha"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Ancestral (Pitru) dosha check. Alias: /pitra-dosha","tags":["Vedic Astrology"]}},"/v2/astrology/planet-positions":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"ayanamsa":"lahiri","datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"chart","charged":2,"currency":"USD","endpoint":"/v2/astrology/planet-positions"},"data":{"ayanamsa":"lahiri","planets":[{"degree":0.93,"house":11,"longitude":30.93,"nakshatra":"Krittika","pada":2,"planet":"Sun","retrograde":false,"sign":"Taurus"},{"degree":18.4,"house":1,"longitude":108.4,"nakshatra":"Pushya","pada":3,"planet":"Moon","retrograde":false,"sign":"Cancer"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime format"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Return the sidereal positions of all nine planets at birth with sign, house, degree and nakshatra.","tags":["Vedic Astrology"]}},"/v2/astrology/planet-relationship":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"strength","charged":2,"currency":"USD","endpoint":"/v2/astrology/planet-relationship"},"data":{"compound_matrix":{},"guidance":{"for_enemies":"Balance both planets.","for_friends":"Strengthen both planets for maximum benefit.","for_neutrals":"Results depend on other factors."},"interpretation":{"summary":"Planetary relationships determine how planets influence each other in a chart...","types":{"compound":"Combination of natural and temporal","natural":"Based on inherent planetary nature - never changes","temporal":"Based on relative positions in birth chart"}},"natural_matrix":{},"planet_relationship":{"Sun":{"enemies":["Venus","Saturn"],"friends":["Moon","Mars","Jupiter"],"neutral":["Mercury"]}},"planets":{"Sun":{"color":"Red/Orange","day":"Sunday","element":"Fire","gemstone":"Ruby","nature":"Malefic (Krura)","signifies":["Soul","Father","Authority"]}},"summary":{"enemies":["Sun-Saturn"],"friends":["Sun-Moon"]},"temporal_matrix":{},"tips":["Moon has no enemies - it can work with all planets"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime format"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Compute Naisargika Maitri (natural, temporal and compound planetary friendship matrices) with interpretation.","tags":["Vedic Astrology"]}},"/v2/astrology/planet-transit":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"transit","charged":1,"currency":"USD","endpoint":"/v2/astrology/planet-transit"},"data":{"ayanamsa":{"id":1,"name":"Lahiri","value":24.18},"planets":[{"degree":12.18,"interpretation":{"challenging":["Ego"],"color":"Red","day":"Sunday","dignity":"neutral","dignityEffect":"Average results","dignityMeaning":"Neutral placement","gemstone":"Ruby","governs":["Self","Father","Authority"],"positive":["Leadership"],"significance":"The Sun represents the soul, ego, and vitality"},"longitude":342.18,"nakshatra":"Uttara Bhadrapada","name":"Sun","retrograde":false,"sign":"Pisces","signNumber":12},{"interpretation":{"dignity":"own","gemstone":"Pearl","governs":["Mind","Mother"],"significance":"The Moon represents mind and emotions"},"longitude":98.4,"nakshatra":"Pushya","name":"Moon","sign":"Cancer","signNumber":4}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (auto-refunded calculation failure)"}},"summary":"Current real-time planetary positions (transits) for a location, with each planet's sign, longitude, dignity and significance.","tags":["Calendar"]}},"/v2/astrology/planetary-positions":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/planetary-positions"},"data":{"planets":[{"degree":0.9,"house":11,"isRetrograde":false,"longitude":30.9,"nakshatra":"Krittika","nakshatraPada":2,"name":"Sun","sign":"Taurus"},{"isRetrograde":true,"longitude":283.1,"name":"Rahu","sign":"Capricorn"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Sidereal positions of all 9 grahas (degree, sign, nakshatra, retrograde). Alias: /planet-positions","tags":["Vedic Astrology"]}},"/v2/astrology/porutham":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-08-20T14:00:00","latitude":28.61,"longitude":77.21,"timezone":"+05:30"},"male":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"balanceBefore":50.0,"category":"matching","charged":4,"currency":"USD","endpoint":"/v2/astrology/porutham"},"data":{"critical_doshas":{"rajju_dosha":false,"vedha_dosha":false},"factors":{"dina":{"description":"Health and longevity compatibility.","max_score":1,"name":"Dina","passed":true,"score":1},"gana":{"description":"Temperament compatibility.","max_score":1,"name":"Gana","passed":true,"score":1},"rajju":{"description":"Marital longevity.","max_score":1,"name":"Rajju","passed":true,"score":1}},"max_points":10,"overall_match":"good","percentage":75,"recommendation":"Good match — recommended for marriage.","total_points":7.5},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid male/female birth details"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Run South Indian 10-factor Nakshatra Porutham marriage compatibility between two people, with critical doshas.","tags":["Vedic Astrology"]}},"/v2/astrology/prana-dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"antarDashaLord":"Sun","datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"mahaDashaLord":"Venus","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"dasha","charged":3,"currency":"USD","endpoint":"/v2/astrology/prana-dasha"},"data":{"antar_dasha":{"planet":"Sun","vedic_name":"Surya"},"maha_dasha":{"planet":"Venus","vedic_name":"Shukra"},"prana_dasha":[{"duration_minutes":192,"end_date":"2026-06-14T11:12:00.000Z","is_current":true,"planet":"Mars","start_date":"2026-06-14T08:00:00.000Z","vedic_name":"Mangala"},{"duration_minutes":348,"end_date":"2026-06-14T17:00:00.000Z","is_current":false,"planet":"Rahu","start_date":"2026-06-14T11:12:00.000Z","vedic_name":"Rahu"}],"pratyantar_dasha":{"planet":"Moon","vedic_name":"Chandra"},"sookshma_dasha":{"end_date":"2026-06-16","planet":"Mars","start_date":"2026-06-14","vedic_name":"Mangala"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime format"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Maha/Antar Dasha not found (auto-refunded)"}},"summary":"Return the level-5 Prana dasha sub-sub-sub-periods (minutes-level) for the current or a specified dasha ladder.","tags":["Vedic Astrology"]}},"/v2/astrology/prashna/analysis":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"latitude":19.07,"longitude":72.87,"question":"Will I get the job?","questionNumber":108,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"prashna","charged":1,"currency":"USD","endpoint":"/v2/astrology/prashna/analysis"},"data":{"answer":{"confidence":"moderate","reasoning":"Benefic ruling planets favour the querent.","verdict":"Yes"},"arudha":{"arudhaSign":"Aries","questionNumber":108,"significance":"Indicates new beginnings."},"chart":{"ascendant":{"degree":12.4,"sign":"Leo"},"moonNakshatra":"Hasta"},"question":"Will I get the job?","rulingPlanets":{"ascendantSignLord":"Sun","ascendantStarLord":"Venus","dayLord":"Sun","moonSignLord":"Mercury","moonStarLord":"Moon"},"timing":{"likelyPeriod":"Within 2 months"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 question is required (string)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Produce a full horary (Prashna) analysis for a question — chart, ruling planets, yes/no answer, arudha and timing — cast at the current moment.","tags":["Vedic Astrology"]}},"/v2/astrology/prashna/answer":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"latitude":19.07,"longitude":72.87,"question":"Will my endeavour succeed?","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"prashna","charged":1,"currency":"USD","endpoint":"/v2/astrology/prashna/answer"},"data":{"castAt":"2026-06-14T08:00:00.000Z","confidence":"high","question":"Will my endeavour succeed?","reasoning":"The ascendant lord is well placed and aspected by benefics, indicating success.","rulingPlanets":{"ascendantSignLord":"Mars","dayLord":"Jupiter","moonStarLord":"Saturn"},"verdict":"Yes"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 question is required (string)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Give a Yes/No horary answer with reasoning for a question, using a chart cast at the moment of asking.","tags":["Vedic Astrology"]}},"/v2/astrology/prashna/arudha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"latitude":19.07,"longitude":72.87,"questionNumber":108,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"prashna","charged":1,"currency":"USD","endpoint":"/v2/astrology/prashna/arudha"},"data":{"arudhaLord":"Moon","arudhaSign":"Cancer","nakshatra":"Pushya","questionNumber":108,"significance":"The matter is emotionally significant and tied to home and family.","subLord":"Saturn"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 questionNumber is required (1-249)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Derive the Arudha sign and its meaning from a horary question number (1-249) at the current moment.","tags":["Vedic Astrology"]}},"/v2/astrology/prashna/chart":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"prashna","charged":1,"currency":"USD","endpoint":"/v2/astrology/prashna/chart"},"data":{"ascendant":{"degree":12.4,"nakshatra":"Magha","sign":"Leo"},"castAt":"2026-06-14T08:00:00.000Z","houses":[{"cusp":12.4,"house":1,"sign":"Leo"}],"planets":[{"degree":29.1,"house":10,"nakshatra":"Krittika","planet":"Sun","sign":"Taurus"},{"degree":4.7,"house":2,"nakshatra":"Uttara Phalguni","planet":"Moon","sign":"Virgo"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Prashna requires location: latitude, longitude, and timezone"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Cast a Prashna (horary) chart for the current moment at a given location — ascendant, planets and houses.","tags":["Vedic Astrology"]}},"/v2/astrology/prashna/ruling-planets":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"prashna","charged":1,"currency":"USD","endpoint":"/v2/astrology/prashna/ruling-planets"},"data":{"ascendantSignLord":"Sun","ascendantStarLord":"Ketu","ascendantSubLord":"Venus","castAt":"2026-06-14T08:00:00.000Z","dayLord":"Sunday — Sun","moonSignLord":"Mercury","moonStarLord":"Moon","rulingPlanets":["Sun","Mercury","Moon","Venus"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Prashna requires location: latitude, longitude, and timezone"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Return the KP ruling planets (day lord, Moon sign/star lords, ascendant sign/star lords) for the current moment.","tags":["Vedic Astrology"]}},"/v2/astrology/pratyantardasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"dasha","charged":3,"currency":"USD","endpoint":"/v2/astrology/pratyantardasha"},"data":{"currentAntarDasha":{"endDate":"2025-07-30","planet":"Sun","startDate":"2024-08-01"},"currentMahaDasha":{"endDate":"2038-04-10","planet":"Venus","startDate":"2018-04-10"},"pratyantardasha":[{"endDate":"2024-09-10","isCurrentPeriod":false,"planet":"Sun","startDate":"2024-08-01","vedicName":"Surya"},{"endDate":"2024-11-15","isCurrentPeriod":true,"planet":"Moon","startDate":"2024-09-10","vedicName":"Chandra"}],"system":"vimshottari"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime format"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Return the level-3 Pratyantardasha sub-sub-periods within the Vimshottari dasha ladder from birth details.","tags":["Vedic Astrology"]}},"/v2/astrology/prediction/daily":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body param. Zodiac sign (English or Hindi name). Either rashi OR full birth details required","in":"query","name":"rashi","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"rashi":"aries"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/prediction/daily"},"data":{"luckyElements":{"luckyColor":"Red","luckyDay":"Tuesday","luckyDirection":"East","luckyNumber":7,"luckyTime":"..."},"overallScore":74,"period":"daily","periodEnd":"2026-06-14","periodStart":"2026-06-14","predictions":{"career":{"score":78,"sentiment":"positive","text":"...","tip":"..."},"finance":{"score":52,"sentiment":"neutral","text":"..."}},"quote":{"source":"...","text":"..."},"rashi":"aries","rashiLord":"Mars","remedies":["..."],"summary":"..."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Daily horoscope prediction by rashi (Moon sign) or birth details (career/finance/health/relationship + lucky elements). Periods: /weekly, /monthly, /quarterly, /yearly","tags":["Vedic Astrology"]}},"/v2/astrology/prediction/monthly":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"rashi":"aries"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"balanceBefore":50.0,"category":"prediction","charged":4,"currency":"USD","endpoint":"/v2/astrology/prediction/monthly"},"data":{"luckyElements":{"luckyColor":"Red","luckyDay":"Tuesday","luckyDirection":"South","luckyNumber":9},"overallScore":72,"period":"monthly","periodEnd":"2026-06-30","periodStart":"2026-06-01","predictions":{"career":{"score":78,"sentiment":"positive","text":"Professional momentum builds steadily this month...","tip":"Take initiative on stalled projects."},"finance":{"score":65,"sentiment":"neutral","text":"Income remains stable with scope for gains...","tip":"Avoid impulsive large purchases."},"health":{"score":74,"sentiment":"positive","text":"Energy levels are good; maintain routine...","tip":"Prioritise sleep."},"relationship":{"score":70,"sentiment":"positive","text":"Warmth returns to close bonds...","tip":"Express appreciation openly."}},"quote":"Courage is the first step to fortune.","rashi":"aries","rashiLord":"Mars","remedies":["Worship Mars on favorable days for enhanced planetary blessings.","Wear Red colored clothes, especially on Tuesday."],"summary":"This monthly period looks highly favorable for aries natives. Mars, your rashi lord, plays a key role."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Deliver a deterministic monthly horoscope by rashi (or birth details) across career, finance, health and relationships, with lucky elements and remedies.","tags":["Vedic Astrology"]}},"/v2/astrology/prediction/quarterly":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"rashi":"taurus"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4994,"balanceBefore":50.0,"category":"prediction","charged":6,"currency":"USD","endpoint":"/v2/astrology/prediction/quarterly"},"data":{"luckyElements":{"luckyColor":"White","luckyDay":"Friday","luckyDirection":"South-East","luckyNumber":6},"overallScore":68,"period":"quarterly","periodEnd":"2026-08-31","periodStart":"2026-06-01","predictions":{"career":{"score":71,"sentiment":"positive","text":"Steady progress with recognition arriving mid-quarter...","tip":"Build on long-term goals."},"finance":{"score":63,"sentiment":"neutral","text":"A balanced quarter for wealth...","tip":"Review investments."},"health":{"score":69,"sentiment":"positive","text":"Generally robust health...","tip":"Stay hydrated."},"relationship":{"score":70,"sentiment":"positive","text":"Harmony grows in partnerships...","tip":"Plan quality time."}},"quote":"Patience turns effort into reward.","rashi":"taurus","rashiLord":"Venus","remedies":["Worship Venus on favorable days for enhanced planetary blessings.","Wear White colored clothes, especially on Friday."],"summary":"A balanced quarterly period awaits taurus with mixed planetary influences. Venus, your rashi lord, plays a key role."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Deliver a deterministic 3-month (quarterly) horoscope by rashi (or birth details) with domain scores, lucky elements and remedies.","tags":["Vedic Astrology"]}},"/v2/astrology/prediction/weekly":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"rashi":"leo"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"prediction","charged":3,"currency":"USD","endpoint":"/v2/astrology/prediction/weekly"},"data":{"luckyElements":{"luckyColor":"Gold","luckyDay":"Sunday","luckyDirection":"East","luckyNumber":1},"overallScore":76,"period":"weekly","periodEnd":"2026-06-20","periodStart":"2026-06-14","predictions":{"career":{"score":80,"sentiment":"positive","text":"A strong week for visibility and leadership...","tip":"Step forward confidently."},"finance":{"score":72,"sentiment":"positive","text":"Favourable cash flow this week...","tip":"Save a portion of gains."},"health":{"score":75,"sentiment":"positive","text":"Vitality is high...","tip":"Channel energy into exercise."},"relationship":{"score":77,"sentiment":"positive","text":"Social warmth surrounds you...","tip":"Reach out to loved ones."}},"quote":"Shine, and others will follow your light.","rashi":"leo","rashiLord":"Sun","remedies":["Worship Sun on favorable days for enhanced planetary blessings.","Wear Gold colored clothes, especially on Sunday."],"summary":"This weekly period looks highly favorable for leo natives. Sun, your rashi lord, plays a key role."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Deliver a deterministic weekly horoscope by rashi (or birth details) across career, finance, health and relationships.","tags":["Vedic Astrology"]}},"/v2/astrology/prediction/yearly":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"rashi":"scorpio"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4991,"balanceBefore":50.0,"category":"prediction","charged":9,"currency":"USD","endpoint":"/v2/astrology/prediction/yearly"},"data":{"luckyElements":{"luckyColor":"Maroon","luckyDay":"Tuesday","luckyDirection":"North","luckyNumber":9},"overallScore":66,"period":"yearly","periodEnd":"2026-12-31","periodStart":"2026-01-01","predictions":{"career":{"score":70,"sentiment":"positive","text":"Transformative growth shapes your professional year...","tip":"Embrace strategic change."},"finance":{"score":60,"sentiment":"neutral","text":"Mixed financial currents through the year...","tip":"Build reserves early."},"health":{"score":64,"sentiment":"neutral","text":"Stable health with attention to stress...","tip":"Adopt a calming practice."},"relationship":{"score":71,"sentiment":"positive","text":"Deep bonds intensify...","tip":"Communicate openly."}},"quote":"From depth comes lasting strength.","rashi":"scorpio","rashiLord":"Mars","remedies":["Worship Mars on favorable days for enhanced planetary blessings.","Chant mantras related to Mars for spiritual protection and guidance.","Donate to charity for positive karma and to balance planetary energies."],"summary":"A balanced yearly period awaits scorpio with mixed planetary influences. Mars, your rashi lord, plays a key role."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Deliver a deterministic annual horoscope by rashi (or birth details) with domain scores, lucky elements and remedies.","tags":["Vedic Astrology"]}},"/v2/astrology/pricing":{"get":{"parameters":[],"responses":{"200":{"content":{"application/json":{"example":{"categories":{"chart":42,"dasha":18,"dosha":11,"numerology":32,"prashna":5,"prediction":5,"remedies":5},"endpoints":[{"category":"numerology","description":"Pinnacle Numbers","endpoint":"/v2/astrology/numerology/pinnacle","price":"$0.0200"},{"category":"prediction","description":"Monthly Prediction","endpoint":"/v2/astrology/prediction-monthly","price":"$0.0400"}],"success":true,"summary":{"priceRange":{"max":"$1.2000","min":"$0.0000"},"totalEndpoints":462}},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"}},"summary":"List the price, category and description of every V2 astrology endpoint (free, no API key required).","tags":["Vedic Astrology"]}},"/v2/astrology/pricing/{endpoint}":{"get":{"parameters":[{"description":"The endpoint slug to price, e.g. 'vimshottari-dasha' or 'numerology-pinnacle'.","in":"path","name":"endpoint","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"endpoint":"vimshottari-dasha","pricing":{"category":"dasha","description":"Vimshottari Dasha","price":"$0.0300"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"}},"summary":"Look up the price, category and description for one V2 astrology endpoint by its slug (free, no API key required).","tags":["Vedic Astrology"]}},"/v2/astrology/rahu-kaal":{"get":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Latitude (default Delhi)","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Longitude (default Delhi)","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"Offset or IANA zone (default +05:30)","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2449,"balanceBefore":24.5,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/rahu-kaal"},"data":{"date":"2026-06-14","day":"Sunday","rahuKaal":{"end":"18:33","start":"16:59"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (Calculation failed — check date/location)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Rahu Kaal inauspicious period for the day. Related GET muhurta: /hora, /gulika-kaal, /yamaghanta, /abhijit-muhurta, /brahma-muhurta, /durmuhurta","tags":["Vedic Astrology"]}},"/v2/astrology/remedies/charity":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"remedies","charged":1,"currency":"USD","endpoint":"/v2/astrology/remedies/charity"},"data":{"description":"Charity remedies for Saturn to reduce afflictions.","recommendations":[{"bestDay":"Saturday","bestTime":"Evening","donateToWhom":"The poor, laborers, the elderly","frequency":"Weekly on the designated day","items":["Black sesame seeds","Mustard oil","Iron items","Black cloth"],"planet":"Saturn"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime format"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Recommend Daan (charity) remedies — items, recipients and best days — for the afflicted planets in a birth chart.","tags":["Vedic Astrology"]}},"/v2/astrology/remedies/fasting":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"remedies","charged":1,"currency":"USD","endpoint":"/v2/astrology/remedies/fasting"},"data":{"description":"Fasting schedule for Saturn, Moon based on chart afflictions.","recommendations":[{"benefits":["Relief from Saturn afflictions","Patience and discipline"],"breakFastWith":"Black sesame and jaggery after sunset","day":"Saturday","deity":"Lord Shani / Lord Hanuman","duration":"Sunrise to sunset","fastingType":"Nirjala or fruit-only fast","planet":"Saturn"},{"benefits":["Emotional stability","Mental peace"],"breakFastWith":"Milk and white foods","day":"Monday","deity":"Lord Shiva","duration":"Sunrise to moonrise","fastingType":"Single satvik meal","planet":"Moon"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime format"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Build a Vrat (fasting) schedule — days, type, deity and how to break the fast — for the afflicted planets in a birth chart.","tags":["Vedic Astrology"]}},"/v2/astrology/remedies/gemstone":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"remedies","charged":1,"currency":"USD","endpoint":"/v2/astrology/remedies/gemstone"},"data":{"description":"1 gemstone(s) recommended for Saturn.","primaryGemstone":{"dayToWear":"Saturday","finger":"Middle finger","gemstone":"Blue Sapphire (Neelam)","metal":"Silver or Panchdhatu","planet":"Saturn"},"recommendations":[{"alternativeGemstone":"Amethyst","caution":"Test for 3 days before permanent wear; not for all ascendants.","dayToWear":"Saturday","finger":"Middle finger","gemstone":"Blue Sapphire (Neelam)","mantraForEnergizing":"Om Sham Shanaischaraya Namah","metal":"Silver or Panchdhatu","planet":"Saturn","planetStrength":"weak","weight":"5-7 carats"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime format"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Recommend gemstones — stone, weight, finger, metal, day to wear and energizing mantra — for the weak or afflicted planets in a birth chart.","tags":["Vedic Astrology"]}},"/v2/astrology/remedies/mantra":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"remedies","charged":1,"currency":"USD","endpoint":"/v2/astrology/remedies/mantra"},"data":{"description":"Mantra remedies for Saturn based on chart analysis.","recommendations":[{"beejMantra":"Om Pram Preem Praum Sah Shanaye Namah","bestTime":"Saturday, before sunrise","deity":"Shani Dev","direction":"West","duration":"Complete 23,000 repetitions over 40 days","japaCount":23000,"mantra":"Om Sham Shanaischaraya Namah","planet":"Saturn"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime, latitude, or longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Personalized planetary mantras to strengthen weak or afflicted planets in your birth chart","tags":["Vedic Astrology"]}},"/v2/astrology/remedies/temple":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"remedies","charged":1,"currency":"USD","endpoint":"/v2/astrology/remedies/temple"},"data":{"description":"Temple worship recommended for Jupiter, Saturn.","recommendations":[{"bestDay":"Thursday","deity":"Lord Vishnu / Brihaspati","famousTemples":["Tirupati Balaji","Guruvayur"],"offerItems":["yellow flowers","chana dal","turmeric"],"planet":"Jupiter","templeType":"Vishnu temple"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime, latitude, or longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Recommends temple worship, deities and offerings to remedy afflicted planets in your chart","tags":["Vedic Astrology"]}},"/v2/astrology/ritu":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"transit","charged":1,"currency":"USD","endpoint":"/v2/astrology/ritu"},"data":{"characteristics":["Pleasant","Renewal"],"description":"Spring season","interpretation":{"ayurvedic_advice":"Spring increases Kapha dosha. Wake up early, exercise.","dietary_recommendations":["Favor light, warm foods"],"health_guidance":["Kapha dosha predominates","Good time for detox"],"major_festivals":["Holi","Vasant Panchami"],"recommended_activities":["Ideal for new ventures"],"significance":"Vasanta (Spring) marks the beginning of the Hindu New Year..."},"months":["Chaitra","Vaishakha"],"next_ritu":{"days_remaining":42,"english_name":"Summer","id":2,"name":"Grishma"},"ritu":{"english_name":"Spring","id":1,"name":"Vasanta","vedic_name":"वसन्त"},"sun_sign":{"id":11,"longitude":342.18,"name":"Pisces"},"sun_signs_covered":["Pisces","Aries"],"tips":["You are currently in Vasanta (Spring) season","The Sun is at 342.18 in Pisces"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATETIME_FORMAT"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (auto-refunded calculation failure)"}},"summary":"Hindu season (Ritu) for a given date, with season significance, Ayurvedic health/diet guidance, festivals and the next upcoming season.","tags":["Calendar"]}},"/v2/astrology/sade-sati":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2447,"balanceBefore":24.5,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/sade-sati"},"data":{"currentPhase":"peak","endDate":"2027-06-01","isInSadeSati":true,"moonSign":"Libra","phases":[{"from":"2022-04-29","phase":"rising","to":"2024-11-01"}],"saturnSign":"Libra","startDate":"2024-11-01"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Saturn Sade Sati 7.5-year transit status relative to natal Moon. Alias: /transits","tags":["Vedic Astrology"]}},"/v2/astrology/sade-sati/advanced":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2446,"balanceBefore":24.5,"category":"astrology","charged":4,"currency":"USD","endpoint":"/v2/astrology/sade-sati/advanced"},"data":{"currentPhase":"peak","intensity":"high","isInSadeSati":true,"phases":[{"effects":"...","from":"2022-04-29","phase":"rising","to":"2024-11-01"}],"remedies":["Recite Shani Stotra on Saturdays"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Sade Sati with detailed phase breakdown and remedies","tags":["Vedic Astrology"]}},"/v2/astrology/saptamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/saptamsa"},"data":{"chartType":"Saptamsa (D-7)","description":"Children, progeny, and creative legacy","division":7,"interpretation":{"analysis":[],"keyPlanets":["Jupiter","5th lord"],"reveals":["children","fertility"],"significance":"The Saptamsa reveals progeny and creative potential","summary":"..."},"keywords":["children","creativity","fertility"],"lagnaDegree":8.2,"lagnaFormattedDegree":"8°12'","lagnaSign":3,"lagnaSignName":"Cancer","positions":[{"degree":12.4,"formattedDegree":"12°24'","house":5,"planet":"Sun","sign":8,"signName":"Sagittarius"}],"remedies":[],"tips":[],"vargottamaPlanets":["Moon"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth details missing timezone"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Saptamsa (D-7) divisional chart revealing children, progeny and creative potential","tags":["Vedic Astrology"]}},"/v2/astrology/sarvashtakavarga":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2449,"balanceBefore":24.5,"category":"astrology","charged":1,"currency":"USD","endpoint":"/v2/astrology/sarvashtakavarga"},"data":{"meta":{"ascendantSign":3,"ayanamsa":"lahiri"},"sarvashtakavarga":{"houseStrength":[{"bindus":28,"sign":"Aries","signIndex":0,"strength":"strong"},{"bindus":24,"sign":"Taurus","signIndex":1,"strength":"weak"}],"total":337}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Sarvashtakavarga — total bindus per house combining all 7 planet charts","tags":["Vedic Astrology"]}},"/v2/astrology/shadbala":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/shadbala"},"data":{"planets":[{"chestaBala":30,"digBala":40,"drikBala":5,"isStrong":true,"kalaBala":85,"naisargikaBala":60,"name":"Sun","required":5,"sthanaBala":120,"totalRupas":5.6}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Shadbala six-fold planetary strength (Sthana, Dig, Kala, Chesta, Naisargika, Drik). Alias: /shadbala-strength","tags":["Vedic Astrology"]}},"/v2/astrology/shadbala-strength":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1198,"balanceBefore":12.0,"category":"strength","charged":2,"currency":"USD","endpoint":"/v2/astrology/shadbala-strength"},"data":{"note":"Shadbala scores are in Virupas (1 Rupa = 60 Virupas). A planet meeting its required minimum is considered adequately strong.","shadbala":[{"breakdown":{"chesta_bala":0,"dig_bala":41.0,"drik_bala":36.0,"kala_bala":110.3,"naisargika_bala":60,"sthana_bala":{"drekkana_bala":0,"kendra_bala":60,"saptavargaja_bala":83.1,"total":165.2,"uchcha_bala":22.1}},"is_strong":true,"normalized_score":6.88,"planet":"Sun","qualifier":"strong","required_minimum":390,"strength_ratio":1.06,"total_strength":412.5}],"summary":{"planets_above_required":5,"planets_below_required":2,"strongest_planet":"Jupiter","strongest_score":498.1,"total_planets_analyzed":7,"weakest_planet":"Mercury","weakest_score":301.7}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime, latitude, or longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Six-fold planetary strength (Shadbala) scoring each planet in Virupas with strongest/weakest summary","tags":["Vedic Astrology"]}},"/v2/astrology/shashtiamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/shashtiamsa"},"data":{"chartType":"Shashtiamsa (D-60)","description":"Past-life karma and overall destiny — finest division","division":60,"interpretation":{"analysis":[],"keyPlanets":[],"reveals":["karma","destiny"],"significance":"The Shashtiamsa reveals deep karmic patterns","summary":"..."},"keywords":["karma","destiny","past life"],"lagnaDegree":19.1,"lagnaFormattedDegree":"19°06'","lagnaSign":4,"lagnaSignName":"Leo","positions":[{"degree":4.7,"formattedDegree":"4°42'","house":11,"planet":"Moon","sign":2,"signName":"Gemini"}],"remedies":[],"tips":[],"vargottamaPlanets":null},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth details missing timezone"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Shashtiamsa (D-60) divisional chart, the finest division revealing past-life karma and overall destiny","tags":["Vedic Astrology"]}},"/v2/astrology/shodasamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/shodasamsa"},"data":{"chartType":"Shodasamsa (D-16)","description":"Vehicles, luxuries and material comforts","division":16,"interpretation":{"analysis":[],"keyPlanets":[],"reveals":["vehicles","luxuries"],"significance":"The Shodasamsa reveals comforts and conveyances","summary":"..."},"keywords":["vehicles","luxuries","comforts"],"lagnaDegree":3.5,"lagnaFormattedDegree":"3°30'","lagnaSign":9,"lagnaSignName":"Capricorn","positions":[{"degree":22.3,"formattedDegree":"22°18'","house":4,"planet":"Venus","sign":1,"signName":"Taurus"}],"remedies":[],"tips":[]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth details missing timezone"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Shodasamsa (D-16) divisional chart revealing vehicles, luxuries, comforts and material happiness","tags":["Vedic Astrology"]}},"/v2/astrology/shodasottari-dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1197,"balanceBefore":12.0,"category":"dasha","charged":3,"currency":"USD","endpoint":"/v2/astrology/shodasottari-dasha"},"data":{"birthData":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"},"birthNakshatra":"Pushya","currentAntarDasha":{"endDate":"2026-11-20","mahaDashaLord":"Mars","planet":"Saturn","startDate":"2025-08-01","vedicName":"Shani"},"currentMahaDasha":{"endDate":"2030-06-14","planet":"Mars","startDate":"2024-03-01","vedicName":"Mangala"},"dashaBalance":{"balanceYears":6.4,"planet":"Sun","vedicName":"Surya","years":11},"mahaDashas":[{"antarDashas":[{"endDate":"1991-01-10","isCurrentPeriod":false,"planet":"Sun","startDate":"1990-05-15","vedicName":"Surya"}],"endDate":"1996-09-22","isCurrentPeriod":false,"planet":"Sun","startDate":"1990-05-15","vedicName":"Surya","years":11}],"nakshatraLord":"Sun","system":"shodasottari","totalCycleYears":116},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime, latitude, or longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded; e.g. Moon position not found)"}},"summary":"Shodasottari (116-year) conditional dasha timeline with current Maha and Antar period","tags":["Vedic Astrology"]}},"/v2/astrology/shubh-muhurta":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-06-14T06:00:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1198,"balanceBefore":12.0,"category":"muhurta","charged":2,"currency":"USD","endpoint":"/v2/astrology/shubh-muhurta"},"data":{"abhijit_muhurta":{"end":"12:46 PM","is_muhurta":true,"start":"11:58 AM"},"auspicious_choghadiya":[{"choghadiya":{"element":"Moon","id":4,"lord":"Moon","meaning":"Nectar","name":"Amrit","vpiType":"good"},"duration":92,"end":"2026-06-14T07:34:00.000Z","id":1,"start":"2026-06-14T06:02:00.000Z"}],"brahma_muhurta":{"brahma_muhurta":{"duration_minutes":48,"end_time":"05:00 AM","start_time":"04:12 AM"},"date":"2026-06-14T06:00:00+05:30"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime, latitude, or longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Auspicious time windows for the day (Abhijit, Brahma muhurta and good Choghadiya periods)","tags":["Vedic Astrology"]}},"/v2/astrology/solar-return":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"varshaphal","charged":1,"currency":"USD","endpoint":"/v2/astrology/solar-return"},"data":{"interpretation":"Solar return chart for 2026 calculated from birth data.","planetPositions":{"planets":[]},"solarReturnChart":{"ascendant":{"degree":12.4,"sign":"Leo"},"planets":[]},"year":2026},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime, latitude, or longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Varshaphal calculation failed (auto-refunded)"}},"summary":"Solar return (Varshaphal) chart for the year the Sun returns to its natal position","tags":["Vedic Astrology"]}},"/v2/astrology/solstice":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"transit","charged":1,"currency":"USD","endpoint":"/v2/astrology/solstice"},"data":{"events":[{"date":"2026-03-20T17:46:00Z","id":1,"name":"March Equinox","type":"equinox"},{"date":"2026-06-21T08:24:00Z","id":2,"name":"June Solstice","type":"solstice"},{"date":"2026-09-23T03:05:00Z","id":3,"name":"September Equinox","type":"equinox"},{"date":"2026-12-21T20:50:00Z","id":4,"name":"December Solstice","type":"solstice"}],"year":2026},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (auto-refunded calculation failure)"}},"summary":"Equinox and solstice dates for a given year (the four seasonal turning points of the solar calendar).","tags":["Calendar"]}},"/v2/astrology/sookshma-dasha":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body param; optional lord to target. Also antarDashaLord, pratyantarDashaLord","in":"query","name":"mahaDashaLord","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"antarDashaLord":"Saturn","datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"mahaDashaLord":"Jupiter","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2447,"balanceBefore":24.5,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/sookshma-dasha"},"data":{"context":{"antar":"Saturn","maha":"Jupiter","pratyantar":"Mercury"},"sookshmaDashas":[{"endDate":"2024-04-12","lord":"Jupiter","startDate":"2024-03-01"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Sookshma (level-4) dasha sub-periods; targets specific lords or current running period","tags":["Vedic Astrology"]}},"/v2/astrology/sudarshana-chakra":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"advanced","charged":1,"currency":"USD","endpoint":"/v2/astrology/sudarshana-chakra"},"data":{"analysis":[{"combinedPlanets":["Saturn"],"house":10,"lagnaSign":"Taurus","moonSign":"Pisces","signification":"Career and public standing","strength":"strong","sunSign":"Aquarius"}],"lagnaWheel":[{"house":1,"lord":"Sun","planets":["Sun"],"reference":"Lagna","sign":"Leo","signIndex":4}],"moonWheel":[{"house":1,"lord":"Mercury","planets":["Moon"],"reference":"Moon","sign":"Gemini","signIndex":2}],"sunWheel":[{"house":1,"lord":"Venus","planets":["Venus"],"reference":"Sun","sign":"Taurus","signIndex":1}],"system":"sudarshana"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime, latitude, or longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Sudarshana Chakra: three superimposed wheels from Lagna, Sun and Moon for a 360-degree life reading","tags":["Vedic Astrology"]}},"/v2/astrology/tajaka/dina-pravesh":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","day":14,"latitude":19.07,"longitude":72.87,"month":6,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"tajaka","charged":1,"currency":"USD","endpoint":"/v2/astrology/tajaka/dina-pravesh"},"data":{"dinaPravesh":{"date":"2026-06-14","dayLord":"Venus","themes":"Daily chart ruled by Venus — relationships, comfort and harmony"},"system":"tajaka"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculator error (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Daily solar-return (Dina Pravesh) chart and day-lord theme for a specific date in the annual cycle","tags":["Vedic Astrology"]}},"/v2/astrology/tajaka/full-report":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"tajaka","charged":1,"currency":"USD","endpoint":"/v2/astrology/tajaka/full-report"},"data":{"age":36,"muddaDasha":[{"durationDays":59,"endDate":"2026-07-12","planet":"Saturn","startDate":"2026-05-15","themes":"..."}],"muntha":{"house":6,"interpretation":"Health challenges, debts, or legal matters may arise","lord":"Mars","sign":"Scorpio","signIndex":7},"panchaVargiyaBala":[{"drekkanaBala":20,"haddaBala":15,"kshetraBala":20,"navamsaBala":15,"planet":"Sun","strength":"very_strong","totalBala":84,"ucchaBala":14}],"sahams":[{"house":1,"isDayBirth":true,"longitude":145.3,"name":"Punya","sign":"Leo","signIndex":4,"signification":"Merit and fortune"}],"system":"tajaka","triPataki":[],"varsha":{"ascendant":{"degree":12.1,"sign":4},"planets":[]},"varshapravesha":"2026-05-15T18:42:00.000Z","varsheshvara":{"candidates":[],"isDayBirth":true,"munthaSign":5,"selectedByAspect":true,"yearLord":"Saturn","yearLordRole":"muntha-lord"},"year":2026,"yearLord":"Saturn","yogas":[{"condition":"Faster planet applying to slower","effect":"Matters fructify","formed":true,"isPositive":true,"name":"Ithasala","planets":["Mars","Saturn"],"transliteration":"Ithasala"}],"yoginiDasha":[{"durationDays":1,"endDate":"2026-05-16","startDate":"2026-05-15","themes":"...","yogini":"Mangala"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculator error (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Complete annual Tajaka report: year lord, Muntha, 16 yogas, sahams, Mudda and Yogini dasha in one call","tags":["Vedic Astrology"]}},"/v2/astrology/tajaka/masa-pravesh":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"month":3,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"tajaka","charged":1,"currency":"USD","endpoint":"/v2/astrology/tajaka/masa-pravesh"},"data":{"masaPravesh":{"chart":{"ascendant":{"sign":6},"planets":[]},"datetime":"2026-07-14T09:21:00.000Z","iterations":4,"masaName":"Jyeshtha","monthIndex":2,"monthLord":"Mercury","sunDelta":0.0002,"sunSign":2,"sunSignName":"Gemini"},"system":"tajaka"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculator error (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Monthly solar-return (Masa Pravesh) chart and month-lord for each of the 12 solar months of the year","tags":["Vedic Astrology"]}},"/v2/astrology/tajaka/mudda-dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"tajaka","charged":1,"currency":"USD","endpoint":"/v2/astrology/tajaka/mudda-dasha"},"data":{"muddaDasha":[{"durationDays":59,"endDate":"2026-07-12","planet":"Saturn","startDate":"2026-05-15","themes":"Discipline, responsibility, slow but lasting gains"},{"durationDays":41,"endDate":"2026-08-22","planet":"Mercury","startDate":"2026-07-12","themes":"Communication, study, commerce"}],"system":"tajaka","varshapravesha":"2026-05-15T18:42:00.000Z","varsheshvara":{"candidates":[],"isDayBirth":true,"munthaSign":5,"selectedByAspect":true,"yearLord":"Saturn","yearLordRole":"muntha-lord"},"year":2026,"yearLord":"Saturn"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculator error (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Mudda Dasha: the annual chart's planetary sub-periods spanning one solar-return year with date ranges","tags":["Vedic Astrology"]}},"/v2/astrology/tajaka/muntha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"tajaka","charged":1,"currency":"USD","endpoint":"/v2/astrology/tajaka/muntha"},"data":{"age":36,"muntha":{"house":6,"interpretation":"Health challenges, debts, or legal matters may arise","lord":"Mars","sign":"Scorpio","signIndex":7},"system":"tajaka","year":2026},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculator error (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Muntha (annual progressed ascendant) sign, house and predictive meaning for the chosen year","tags":["Vedic Astrology"]}},"/v2/astrology/tajaka/pancha-vargiya":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"tajaka","charged":1,"currency":"USD","endpoint":"/v2/astrology/tajaka/pancha-vargiya"},"data":{"panchaVargiyaBala":[{"drekkanaBala":20,"haddaBala":15,"kshetraBala":20,"navamsaBala":15,"planet":"Sun","strength":"very_strong","totalBala":84,"ucchaBala":14},{"drekkanaBala":15,"haddaBala":10,"kshetraBala":10,"navamsaBala":10,"planet":"Moon","strength":"moderate","totalBala":53,"ucchaBala":8}],"system":"tajaka"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculator error (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Pancha Vargiya Bala: five-fold divisional strength score per planet in the annual chart","tags":["Vedic Astrology"]}},"/v2/astrology/tajaka/sahams":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"tajaka","charged":1,"currency":"USD","endpoint":"/v2/astrology/tajaka/sahams"},"data":{"sahams":[{"house":1,"isDayBirth":true,"longitude":145.32,"name":"Punya","sign":"Leo","signIndex":4,"signification":"Merit, virtue and fortune"},{"house":4,"isDayBirth":true,"longitude":212.7,"name":"Vivaha","sign":"Scorpio","signIndex":7,"signification":"Marriage and partnerships"}],"system":"tajaka","year":2026},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculator error (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Sixteen Tajaka Sahams (sensitive points like Punya, Yasas, Vivaha) with sign, house and significations","tags":["Vedic Astrology"]}},"/v2/astrology/tajaka/tri-pataki":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"tajaka","charged":1,"currency":"USD","endpoint":"/v2/astrology/tajaka/tri-pataki"},"data":{"system":"tajaka","triPataki":[{"air":false,"earth":false,"fire":true,"patakiValue":3,"sign":"Aries","signIndex":0},{"air":false,"earth":true,"fire":false,"patakiValue":1,"sign":"Taurus","signIndex":1}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculator error (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Tri-Pataki Chakra: per-sign elemental (fire/earth/air) pataki values for annual transit analysis","tags":["Vedic Astrology"]}},"/v2/astrology/tajaka/yogas":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"tajaka","charged":1,"currency":"USD","endpoint":"/v2/astrology/tajaka/yogas"},"data":{"system":"tajaka","varsheshvara":{"candidates":[],"isDayBirth":true,"munthaSign":5,"selectedByAspect":true,"yearLord":"Saturn","yearLordRole":"muntha-lord"},"year":2026,"yearLord":"Saturn","yogas":[{"condition":"Faster planet applying to slower within orb","effect":"Matters under consideration fructify","formed":true,"isPositive":true,"name":"Ithasala","planets":["Mars","Saturn"],"transliteration":"Ithasala"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculator error (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Sixteen Tajaka yogas (Ithasala, Ishrafa, Nakta and others) evaluated against the annual chart","tags":["Vedic Astrology"]}},"/v2/astrology/tajaka/yogini-dasha":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"tajaka","charged":1,"currency":"USD","endpoint":"/v2/astrology/tajaka/yogini-dasha"},"data":{"system":"tajaka","year":2026,"yoginiDasha":[{"durationDays":1,"endDate":"2026-05-16","startDate":"2026-05-15","themes":"Auspicious beginnings","yogini":"Mangala"},{"durationDays":2,"endDate":"2026-05-18","startDate":"2026-05-16","themes":"Effort and obstacles","yogini":"Pingala"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculator error (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Tajaka Yogini Dasha: the eight Yogini sub-periods mapped across one solar-return year","tags":["Vedic Astrology"]}},"/v2/astrology/tara-bala":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1198,"balanceBefore":12.0,"category":"strength","charged":2,"currency":"USD","endpoint":"/v2/astrology/tara-bala"},"data":{"count_from_natal":2,"natal_nakshatra":{"id":7,"name":"Pushya"},"tara":{"id":2,"meaning":"Wealth and prosperity","name":"Sampat","type":"good"},"tara_bala":{"is_auspicious":true,"max_score":9,"score":7},"transit_nakshatra":{"id":9,"name":"Magha"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime, latitude, or longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Tara Bala: today's Moon nakshatra Tara strength relative to your birth star with auspiciousness score","tags":["Vedic Astrology"]}},"/v2/astrology/thirumana-porutham":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-08-21T14:10:00","latitude":13.08,"longitude":80.27,"timezone":"+05:30"},"male":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1196,"balanceBefore":12.0,"category":"matching","charged":4,"currency":"USD","endpoint":"/v2/astrology/thirumana-porutham"},"data":{"critical_doshas":{"rajju_dosha":false,"vedha_dosha":false},"factors":{"dina":{"description":"Health and longevity favorable","max_score":3,"name":"Dina","passed":true,"score":3},"rajju":{"description":"Different Rajju group — no Rajju dosha","max_score":0,"name":"Rajju","passed":true,"score":0}},"max_points":10,"overall_match":"good","percentage":75,"recommendation":"Good match — compatibility is strong","total_points":7.5},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid male/female birth details (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Tamil marriage compatibility (10-factor Nakshatra Porutham) for a prospective bride and groom","tags":["Vedic Astrology"]}},"/v2/astrology/tithi":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Retry-safe dedup key.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"panchang","charged":1,"currency":"USD","endpoint":"/v2/astrology/tithi"},"data":{"coordinates":{"latitude":28.6139,"longitude":77.209},"datetime":"2026-03-23T12:00:00+05:30","disha_shool":{"direction":"east"},"guidance":{"activitiesToAvoid":[],"bestActivities":[],"overallAuspiciousness":"Good","tips":[]},"karana":{"interpretation":{},"name":"Bava"},"masa":{"name":"Chaitra"},"nakshatra":{"interpretation":{},"name":"Krittika"},"ritu":{"name":"Vasanta"},"timezone":"+05:30","tithi":{"id":5,"interpretation":{"avoid":["Conflicts"],"bestFor":["Education","New skills"],"energy":"Active","meaning":"Day of vitality and learning","tip":"Begin studies"},"name":"Panchami","paksha":{"id":1,"name":"Shukla"}},"vaara":{"interpretation":{},"name":"Somavara"},"yoga":{"interpretation":{},"name":"Saubhagya","quality":"Auspicious"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LATITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Lunar day (Tithi) for a given datetime and location, with its paksha, meaning and recommended/avoided activities.","tags":["Calendar"]}},"/v2/astrology/transit/eclipse":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"transit","charged":1,"currency":"USD","endpoint":"/v2/astrology/transit/eclipse"},"data":{"description":"2 eclipse(s) predicted in the next 12 months. Dates are approximate; use an ephemeris for exact timing.","events":[{"date":"2026-08-12","degree":20.04,"eclipseType":"total","natalImpact":["Conjunct natal Sun (orb 1.8°) — significant effects"],"sign":"Leo","type":"solar"},{"date":"2026-08-28","degree":5.12,"eclipseType":"partial","natalImpact":[],"sign":"Pisces","type":"lunar"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime, latitude, or longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Upcoming solar and lunar eclipses with how each contacts your natal planets","tags":["Vedic Astrology"]}},"/v2/astrology/transit/ingress":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"months":12,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1199,"balanceBefore":12.0,"category":"transit","charged":1,"currency":"USD","endpoint":"/v2/astrology/transit/ingress"},"data":{"description":"24 planetary ingress events in the next 12 months.","events":[{"date":"2026-07-16","degreesAtIngress":0.12,"fromSign":"Gemini","planet":"Sun","toSign":"Cancer"},{"date":"2026-08-09","degreesAtIngress":0.04,"fromSign":"Leo","planet":"Mars","toSign":"Virgo"}],"period":{"from":"2026-06-14","to":"2027-06-09"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details (missing/invalid datetime, latitude, or longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Upcoming planetary ingress dates (when each planet changes signs) for the months ahead","tags":["Vedic Astrology"]}},"/v2/astrology/transit/planetary-war":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"months":12,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"transit","charged":1,"currency":"USD","endpoint":"/v2/astrology/transit/planetary-war"},"data":{"description":"1 planetary war (Graha Yuddha) event(s) detected in the next 12 months.","events":[{"date":"2026-08-12","loser":"Mercury","planet1":"Mercury","planet2":"Venus","separation":0.732,"sign":"Cancer","winner":"Venus"}],"period":{"from":"1990-05-15","to":"1991-05-10"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / Birth date is required / Invalid datetime"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Find upcoming Graha Yuddha (planetary war) events when two planets come within one degree of each other, with the winner and loser of each war.","tags":["Vedic Astrology"]}},"/v2/astrology/transit/retrograde":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"months":12,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"transit","charged":1,"currency":"USD","endpoint":"/v2/astrology/transit/retrograde"},"data":{"description":"1 retrograde periods detected in the next 12 months.","events":[{"durationDays":22,"planet":"Mercury","retrogradeEnd":"2026-09-24","retrogradeStart":"2026-09-02","signAtDirect":"Leo","signAtRetro":"Virgo","stationDirectDate":"2026-09-24","stationRetroDate":"2026-09-02"}],"period":{"from":"1990-05-15","to":"1991-05-10"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / Birth date is required / Invalid datetime"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Get upcoming retrograde periods for each planet, including station-retrograde and station-direct dates, the sign at each station, and the duration in days.","tags":["Vedic Astrology"]}},"/v2/astrology/transit/stations":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"months":12,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"transit","charged":1,"currency":"USD","endpoint":"/v2/astrology/transit/stations"},"data":{"description":"2 planetary stations in the next 12 months.","events":[{"date":"2026-09-02","degree":0,"planet":"Mercury","sign":"Virgo","type":"retrograde"},{"date":"2026-09-24","degree":0,"planet":"Mercury","sign":"Leo","type":"direct"}],"period":{"from":"1990-05-15","to":"1991-05-10"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / Birth date is required / Invalid datetime"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Get the exact dates when planets turn retrograde or direct (their stations) over the coming months, with the sign of each station.","tags":["Vedic Astrology"]}},"/v2/astrology/transits":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"transit","charged":3,"currency":"USD","endpoint":"/v2/astrology/transits"},"data":{"currentPeriodEnd":"2027-09-15","currentPeriodStart":"2025-06-01","effects":["Increased responsibilities and karmic lessons","Possible delays in major undertakings"],"intensity":"high","isActive":true,"moonSign":"Cancer","moonSignIndex":3,"phase":"peak","phaseDescription":"Saturn transits over your Moon sign — the most intense phase of Sade Sati.","phaseName":"Peak Phase (Madhya)","remedies":["Recite Hanuman Chalisa on Saturdays","Donate black sesame and mustard oil"],"saturnSign":"Cancer","saturnSignIndex":3},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / Birth date is required / Invalid datetime"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Get the current Saturn transit status relative to the Moon sign (Sade Sati), including the active phase, intensity, effects, and remedies.","tags":["Vedic Astrology"]}},"/v2/astrology/trimsamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"ayanamsa":"lahiri","datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"divisional","charged":1,"currency":"USD","endpoint":"/v2/astrology/trimsamsa"},"data":{"chartType":"Trimsamsa (D-30)","description":"Evils, misfortunes, enemies, obstacles","division":30,"interpretation":{"analysis":["Malefics in bad houses increase danger","Saturn shows karmic debts"],"keyPlanets":["Saturn (Karma)","Mars (Accidents)","Rahu (Hidden dangers)","6th/8th/12th Lords"],"reveals":["Potential misfortunes and dangers","Hidden enemies and obstacles","Health dangers"],"significance":"The Trimsamsa (D-30) chart reveals evils, misfortunes, and negative tendencies. It shows potential dangers and areas requiring caution and protection.","summary":"Your Trimsamsa chart highlights areas of life requiring caution and protective remedies."},"keywords":["evil","misfortune","enemies","obstacles","troubles"],"lagnaFormattedDegree":"12°4'","lagnaSign":9,"lagnaSignName":"Capricorn","positions":[{"degree":0,"formattedDegree":"0°0'","house":6,"planet":"Sun","sign":7,"signName":"Scorpio"}],"remedies":["Recite Hanuman Chalisa for protection","Donate on Saturdays to reduce karma"],"tips":["Identify weak areas for protection","Be cautious during afflicted periods"],"vargottamaPlanets":["Jupiter"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime / Birth details missing timezone"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Compute the Trimsamsa (D-30) divisional chart that reveals evils, misfortunes, hidden enemies and areas requiring caution, with planet placements and interpretation.","tags":["Vedic Astrology"]}},"/v2/astrology/upagraha-position":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"strength","charged":2,"currency":"USD","endpoint":"/v2/astrology/upagraha-position"},"data":{"gulika":{"degree":5,"id":0,"minute":25,"name":"Gulika","position_display":"5°25' Scorpio","sign":{"id":7,"name":"Scorpio"}},"interpretation":{"general_guidance":["Avoid starting important work during Gulika Kaal (Gulika time)","Houses containing Gulika/Mandi require extra care"],"gulika_significance":"Gulika in Scorpio indicates Chronic ailments, accidents in this area of life.","significance":"While less prominent than main planets, Upagrahas reveal hidden influences, karmic debts, and timing for events. Gulika is most important.","summary":"Upagrahas are mathematical points derived from planetary positions. They indicate subtle karmic influences and areas requiring special attention."},"mandi":{"degree":18,"id":1,"minute":3,"name":"Mandi","position_display":"18°3' Gemini","sign":{"id":2,"name":"Gemini"}},"moon_longitude":102.77,"sun_longitude":54.31,"upagraha_position":[{"degree":5,"id":0,"interpretation":{"effects":["Causes delays and obstacles","Indicates hidden enemies"],"house_effect":"Legal issues, hidden enemies","nature":"Highly malefic","remedies":["Worship Lord Shiva","Chant Om Namah Shivaya 108 times"],"significance":"Gulika is the son of Saturn and the most important Upagraha. It represents accumulated karma, delays, obstacles, and hidden dangers."},"longitude":215.42,"minute":25,"name":"Gulika","position_display":"5°25' Scorpio","sign":{"id":7,"name":"Scorpio"}}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid birth details / Birth date is required / Invalid datetime"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Calculate the positions of the Upagrahas (shadow sub-planets such as Gulika and Mandi) with their signs, degrees and interpretive significance for hidden karmic influences.","tags":["Vedic Astrology"]}},"/v2/astrology/varshaphal":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* / vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"varshaphal","charged":1,"currency":"USD","endpoint":"/v2/astrology/varshaphal"},"data":{"muddaDasha":[{"durationDays":85,"endDate":"2026-07-08","planet":"Jupiter","startDate":"2026-05-15","themes":"Wisdom, expansion, spiritual growth"}],"muntha":{"house":10,"interpretation":"Muntha in the 10th brings focus on career and status this year.","lord":"Venus","sign":"Taurus","signIndex":1},"tajakaYogas":[{"condition":"faster planet applying to slower within deeptamsa","effect":"Promised result fructifies","formed":true,"isPositive":true,"name":"Ithasala","planets":["Jupiter","Moon"],"transliteration":"Ithasala"}],"varshaphalChart":{"ascendant":{"degree":14.2,"lord":"Sun","sign":"Leo"},"planets":[]},"varshaphalInfo":{"age":36,"solarReturnDate":"2026-05-15","year":2026,"yearEnd":"2027-05-15T10:30:00","yearStart":"2026-05-15T10:30:00"},"varshapravesha":"2026-05-15T08:42:11+05:30","yearLord":{"candidates":[{"bala":64.2,"planet":"Jupiter"},{"bala":51.8,"planet":"Venus"}],"interpretation":"Jupiter is the Varsheshvara (Year Lord) for this annual chart.","planet":"Jupiter","role":"Varsheshvara","selectedByAspect":true,"strength":"strong"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Varshaphal calculation failed (auto-refunded)"}},"summary":"Generate the annual (Varshaphal / solar-return) horoscope for a given year: the Year Lord (Varsheshvara), Muntha, Tajaka yogas and the Mudda Dasha sub-periods.","tags":["Vedic Astrology"]}},"/v2/astrology/vastu/ar/anchor-recommendations":{"post":{"operationId":"postV2AstrologyVastuArAnchorRecommendations","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"bearingDeg":0,"planToWorld":{"origin":[0,0,0],"units":"metres","xAxis":[1,0,0],"yAxis":[0,0,-1]},"plotPolygon":[[0,0],[9,0],[9,9],[0,9]]},"schema":{"$ref":"#/components/schemas/VastuArAnchorRecommendationsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArAnchorRecommendationsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Inside-plot marker coordinates in an explicit world frame","tags":["Vastu"]}},"/v2/astrology/vastu/ar/attestation/challenge":{"post":{"description":"Issues a single-use device-attestation challenge for a native app. Unbilled: it computes and sells nothing; the ar/room-capture, ar/scan-quality or scans/save call that spends it is billed as before. The challenge expires after 5 minutes, is bound to your account and platform, and is spent by the first verification attempt, successful or not. Until this deployment is configured for a platform the call returns 200 with challenge null and deviceAttestation.status not_configured, and stores nothing. 503 ATTESTATION_UNAVAILABLE means attestation is configured but its store is unreachable. The browser cannot attest; this is for iOS App Attest and Android Play Integrity only.","operationId":"postV2AstrologyVastuArAttestationChallenge","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArAttestationChallengeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArAttestationChallengeResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"ATTESTATION_UNAVAILABLE: attestation is configured but its challenge store is unreachable. Nothing is stored or charged.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Device attestation: challenge","tags":["Vastu"]}},"/v2/astrology/vastu/ar/capture-merge":{"post":{"description":"Explicit rigid registration per floor, with two or more corresponding controls or shared door endpoints per link. Payloads use the existing strict roomCapture schema. Floors declare physical elevations and the true-north transform of each floor reference capture. A disconnected graph, degenerate controls, pair RMS/max residual or control cycle over tolerance returns 400 before billing. No scale fitting, inferred origins or silent merge. Price: $0.01, (bounded CPU allowance $0.0005 + request infrastructure $0.002) × 4; errors are uncharged.","operationId":"postV2AstrologyVastuArCaptureMerge","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"captures":[{"floorIndex":0,"id":"a","payload":{"attestation":"caller-reported","captureId":"fx-room-3x4-yaw0","capturedAtEpoch":1789000000,"device":{"depth":"none","method":"webxr-hit","platform":"web"},"frame":{"axes":"+X east,+Y true north","north":{"compassConfidence":0.939,"declinationDeg":1.2,"declinationProvenance":"fixture","headingSource":"deviceorientationabsolute","referenceFrame":"true","yawSamples":17,"yawSpreadDeg":1.22},"planToWorld":{"origin":[0.7,-1.4,2.3],"units":"metres","xAxis":[1,0,-5.12e-7],"yAxis":[-5.12e-7,0,-1]},"units":"metres"},"outline":{"polygon":[[0,0],[9,0],[9,12],[0,12]],"source":"traced"},"quality":{"closureGapM":0,"coveragePercent":null,"expectedRoomCount":1,"gpsConfidence":null,"pointCloudDensity":null,"pointCloudDensityBasis":"none","polygonClosure":true,"roomCount":1,"roomsTagged":1,"scanDurationSec":160,"scannedAreaM2":108},"rooms":[{"areaM2":12,"floorIndex":0,"heightM":2.8,"id":"r1","label":"kitchen","labelSource":"user","openings":[{"centerXY":[9,1],"confidence":"high","heightM":2.1,"kind":"door","widthM":0.9}],"polygon":[[6,0],[9,0],[9,4],[6,4]]}],"schema":"vedika.roomCapture/1"}},{"floorIndex":0,"id":"b","payload":{"attestation":"caller-reported","captureId":"fx-room-3x4-yaw0","capturedAtEpoch":1789000000,"device":{"depth":"none","method":"webxr-hit","platform":"web"},"frame":{"axes":"+X east,+Y true north","north":{"compassConfidence":0.939,"declinationDeg":1.2,"declinationProvenance":"fixture","headingSource":"deviceorientationabsolute","referenceFrame":"true","yawSamples":17,"yawSpreadDeg":1.22},"planToWorld":{"origin":[0.7,-1.4,2.3],"units":"metres","xAxis":[1,0,-5.12e-7],"yAxis":[-5.12e-7,0,-1]},"units":"metres"},"outline":{"polygon":[[0,0],[9,0],[9,12],[0,12]],"source":"traced"},"quality":{"closureGapM":0,"coveragePercent":null,"expectedRoomCount":1,"gpsConfidence":null,"pointCloudDensity":null,"pointCloudDensityBasis":"none","polygonClosure":true,"roomCount":1,"roomsTagged":1,"scanDurationSec":160,"scannedAreaM2":108},"rooms":[{"areaM2":12,"floorIndex":0,"heightM":2.8,"id":"r1","label":"kitchen","labelSource":"user","openings":[{"centerXY":[9,1],"confidence":"high","heightM":2.1,"kind":"door","widthM":0.9}],"polygon":[[6,0],[9,0],[9,4],[6,4]]}],"schema":"vedika.roomCapture/1"}}],"floors":[{"bearingDeg":0,"elevationM":0,"floorIndex":0,"originXY":[0,0]}],"links":[{"controlPoints":[{"fromXY":[0,0],"toXY":[5,0]},{"fromXY":[3,0],"toXY":[8,0]},{"fromXY":[0,4],"toXY":[5,4]}],"fromCaptureId":"b","toCaptureId":"a"}],"toleranceM":0.02},"schema":{"$ref":"#/components/schemas/VastuArCaptureMergeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArCaptureMergeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute meter or billing unavailable; paid data withheld."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Capture merge","tags":["Vastu"]}},"/v2/astrology/vastu/ar/deity-icons":{"post":{"operationId":"postV2AstrologyVastuArDeityIcons","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArDeityIconsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArDeityIconsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Zone and devata nameplates in SVG and PNG","tags":["Vastu"]}},"/v2/astrology/vastu/ar/heatmap-raster":{"post":{"operationId":"postV2AstrologyVastuArHeatmapRaster","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"rooms":[{"roomType":"toilet","zone":"NE"}]},"schema":{"$ref":"#/components/schemas/VastuArHeatmapRasterRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArHeatmapRasterResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Nine-zone PNG disturbance mask from supplied rooms","tags":["Vastu"]}},"/v2/astrology/vastu/ar/room-capture":{"post":{"description":"A caller-reported device room capture (vedika.roomCapture/1). The server validates it, converts it into the plan/analyze, audit/floor-plan-detailed and ar/scan-quality requests, and runs them. The outline must be traced, at least one room must be labelled, and every room must stay inside the outline. Meshes are never uploaded; the body is limited to 256 KiB and 4096 corner points. A refused capture is not charged.Optional deviceAttestation (see ar/attestation/challenge) is verified before compute and billing: 400 ATTESTATION_INVALID or 503 ATTESTATION_UNAVAILABLE charge nothing. The response reports deviceAttestation.status; only a verified scan gains scanQuality deviceAttested=true, and scores never change.","operationId":"postV2AstrologyVastuArRoomCapture","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"capture":{"attestation":"caller-reported","captureId":"sample-capture-0001","capturedAtEpoch":1789000000,"device":{"depth":"none","method":"arkit-raycast","platform":"ios"},"frame":{"axes":"+X east,+Y true north","north":{"compassConfidence":0.939,"declinationDeg":1.2,"declinationProvenance":"fixture","headingSource":"CLHeading.magneticHeading","referenceFrame":"true","yawSamples":17,"yawSpreadDeg":1.22},"planToWorld":{"origin":[0.7,-1.4,2.3],"units":"metres","xAxis":[-0.601814614,0,0.798635818],"yAxis":[0.798635818,0,0.601814614]},"units":"metres"},"outline":{"polygon":[[0,0],[9,0],[9,12],[0,12]],"source":"traced"},"quality":{"closureGapM":0,"coveragePercent":null,"expectedRoomCount":1,"gpsConfidence":0.9,"pointCloudDensity":900,"pointCloudDensityBasis":"feature-points","polygonClosure":true,"roomCount":1,"roomsTagged":1,"scanDurationSec":160,"scannedAreaM2":108},"rooms":[{"areaM2":12,"floorIndex":0,"heightM":2.8,"id":"r1","label":"kitchen","labelSource":"user","openings":[{"centerXY":[9,1],"confidence":"high","heightM":2.1,"kind":"door","widthM":0.9}],"polygon":[[6,0],[9,0],[9,4],[6,4]]}],"schema":"vedika.roomCapture/1"}},"schema":{"$ref":"#/components/schemas/VastuArRoomCaptureRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArRoomCaptureResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"ATTESTATION_UNAVAILABLE: device attestation is configured but cannot be checked. Nothing is charged."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Device room capture to plan analysis, audit and scan quality","tags":["Vastu"]}},"/v2/astrology/vastu/ar/scan-quality":{"post":{"description":"Checks caller-reported scan telemetry against declared product gates. Grade and acceptForAudit do not attest sensor capture, measured north or whole-building physical coverage.Optional deviceAttestation (see ar/attestation/challenge) is verified before compute and billing: 400 ATTESTATION_INVALID or 503 ATTESTATION_UNAVAILABLE charge nothing. The response reports deviceAttestation.status; only a verified scan gains scanQuality deviceAttested=true, and scores never change.","operationId":"postV2AstrologyVastuArScanQuality","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArScanQualityRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArScanQualityResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"ATTESTATION_UNAVAILABLE: device attestation is configured but cannot be checked. Nothing is charged."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: ar/scan-quality.","tags":["Vastu"]}},"/v2/astrology/vastu/ar/true-north-calibrate":{"post":{"description":"Computes a solar alignment offset and checks caller-reported heading accuracy and sample age. Reliability does not independently verify device alignment or current calibration.","operationId":"postV2AstrologyVastuArTrueNorthCalibrate","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-09-07T09:00:00+05:30","deviceHeadingAccuracyDeg":3,"deviceHeadingAtSunDeg":150,"headingSampleAgeMs":0,"lat":28.6139,"lon":77.209},"schema":{"$ref":"#/components/schemas/VastuArTrueNorthCalibrateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArTrueNorthCalibrateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: ar/true-north-calibrate.","tags":["Vastu"]}},"/v2/astrology/vastu/ar/yantra-meshes":{"post":{"operationId":"postV2AstrologyVastuArYantraMeshes","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArYantraMeshesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArYantraMeshesResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Modern nine-zone diagram in glTF or USDZ","tags":["Vastu"]}},"/v2/astrology/vastu/ar/zone-textures":{"post":{"operationId":"postV2AstrologyVastuArZoneTextures","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArZoneTexturesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArZoneTexturesResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Nine-zone texture atlas and UV coordinates","tags":["Vastu"]}},"/v2/astrology/vastu/archive/delete":{"post":{"description":"Free owner-only physical erasure of active property rows, membership/comments/reviews/activity and linked scan/archive objects including all versions and delete markers. First call fences writes and can return 202 pending with retryAfterEpoch. Retry after the 210-second request drain. A 200 completed response contains a canonical SHA-256 receipt listing removals. Denied or incomplete purges never report completion. Encrypted recovery backups expire within 35 days; restore requires replay of erasure fences. Minimal pseudonymous fences/receipt remain to block recreation. Replays return the same receipt.","operationId":"postV2AstrologyVastuArchiveDelete","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveDeleteResponse"}}},"description":"Success"},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveDeleteResponse"}}},"description":"Erasure pending; retry at retryAfterEpoch. No charge."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"archive delete","tags":["Vastu"]}},"/v2/astrology/vastu/archive/export":{"post":{"description":"Write a real ZIP containing property data and linked IDs; return a download link valid for one hour. The export object expires after one day; upload or signing failure refunds the charge. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2AstrologyVastuArchiveExport","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveExportRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveExportResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"archive export","tags":["Vastu"]}},"/v2/astrology/vastu/archive/summary":{"post":{"description":"Read archive retention metadata for free. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2AstrologyVastuArchiveSummary","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveSummaryRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveSummaryResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"archive summary","tags":["Vastu"]}},"/v2/astrology/vastu/archive/tier":{"post":{"description":"Explicit paid retention extension. preview=true quotes only without charge or mutation. Meter uses measured stored bytes and index copies; caller storageGb is refused. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2AstrologyVastuArchiveTier","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveTierRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveTierResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"archive tier","tags":["Vastu"]}},"/v2/astrology/vastu/assessments":{"post":{"operationId":"postV2AstrologyVastuAssessments","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAssessmentsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAssessmentsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"properties":{"billing":{"properties":{"charged":{"enum":[0],"type":"number"}},"type":"object"},"code":{"example":"RECEIPT_SIGNING_UNAVAILABLE","type":"string"},"error":{"type":"string"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Receipt signing key unavailable; no charge."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: assessments.","tags":["Vastu"]}},"/v2/astrology/vastu/assessments/batch":{"post":{"description":"Synchronous batch of 1 to 20 properties; serialized JSON at most 512 KiB. Retain the required Idempotency-Key header for retries. Item IDs are unique; reordering does not change a child charge identity. Each item uses the existing assessment price with no batch fee.","operationId":"postV2AstrologyVastuAssessmentsBatch","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"Required. Stable key of 1 to 200 characters; retain it for retries of the same request. A new key is a new request.","in":"header","name":"Idempotency-Key","required":true,"schema":{"example":"batch-example-0001","maxLength":200,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"items":[{"assessment":{"inputSource":"seller-supplied","rooms":[{"roomType":"kitchen","zone":"SE"},{"roomType":"bedroom","zone":"SW"},{"roomType":"pooja","zone":"NE"}]},"id":"property-1"}]},"schema":{"$ref":"#/components/schemas/VastuAssessmentsBatchRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAssessmentsBatchResponse"}}},"description":"Batch executed. Inspect every item status; a 200 batch can contain per-item failures. An insufficient_data item is successful and unbilled."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Assess 1 to 20 named properties with per-item outcomes and charges.","tags":["Vastu"]}},"/v2/astrology/vastu/audit/floor-plan":{"post":{"operationId":"postV2AstrologyVastuAuditFloorPlan","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"Optional retained ID for one logical request. Reuse the same ID, path and body on retries; use a new ID for a new audit. X-Request-Id takes precedence over X-Idempotency-Key, then Idempotency-Key. This is not a permanent result cache.","in":"header","name":"X-Request-Id","required":false,"schema":{"type":"string"}},{"description":"Optional retained ID for one logical request. Reuse the same ID, path and body on retries; use a new ID for a new audit. X-Request-Id takes precedence over X-Idempotency-Key, then Idempotency-Key. This is not a permanent result cache.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}},{"description":"Optional retained ID for one logical request. Reuse the same ID, path and body on retries; use a new ID for a new audit. X-Request-Id takes precedence over X-Idempotency-Key, then Idempotency-Key. This is not a permanent result cache.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditFloorPlanRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditFloorPlanResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"429":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"error":{"type":"string"},"message":{"type":"string"},"retryAfter":{"description":"Optional delay in seconds before retrying.","minimum":0,"type":"integer"}},"type":"object"}}},"description":"Rate or daily usage limit exceeded. Honor Retry-After when present, or the JSON retryAfter delay. Retry with the retained request ID.","headers":{"Retry-After":{"description":"Optional delay in seconds before retrying. Some rate-limit responses provide only JSON retryAfter.","schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: audit/floor-plan.","tags":["Vastu"]}},"/v2/astrology/vastu/audit/floor-plan-detailed":{"post":{"operationId":"postV2AstrologyVastuAuditFloorPlanDetailed","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditFloorPlanDetailedRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditFloorPlanDetailedResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: audit/floor-plan-detailed.","tags":["Vastu"]}},"/v2/astrology/vastu/audit/single-room":{"post":{"operationId":"postV2AstrologyVastuAuditSingleRoom","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditSingleRoomRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditSingleRoomResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: audit/single-room.","tags":["Vastu"]}},"/v2/astrology/vastu/compare/before-after-remedy":{"post":{"description":"Compares computed scores from supplied inputs. A score change is not measured evidence that a remedy worked.","operationId":"postV2AstrologyVastuCompareBeforeAfterRemedy","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"remedies":[{"room":"kitchen","toZone":"southeast"}],"rooms":[{"roomType":"kitchen","zone":"northwest"},{"roomType":"bedroom","zone":"southwest"}]},"schema":{"$ref":"#/components/schemas/VastuCompareBeforeAfterRemedyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuCompareBeforeAfterRemedyResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: compare/before-after-remedy.","tags":["Vastu"]}},"/v2/astrology/vastu/compound/wall-analysis":{"post":{"operationId":"postV2AstrologyVastuCompoundWallAnalysis","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuCompoundWallAnalysisRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuCompoundWallAnalysisResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: compound/wall-analysis.","tags":["Vastu"]}},"/v2/astrology/vastu/direction/auspicious-facing":{"post":{"operationId":"postV2AstrologyVastuDirectionAuspiciousFacing","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"occupant":"family","purpose":"entrance"},"schema":{"$ref":"#/components/schemas/VastuDirectionAuspiciousFacingRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionAuspiciousFacingResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/auspicious-facing.","tags":["Vastu"]}},"/v2/astrology/vastu/direction/correct":{"post":{"description":"Converts a magnetic compass direction into a true-north zone using WMM2025 declination (valid 2025.0 up to 2030.0). When no declination is published for the date or place, trueBearingDeg is null and correctedZone is the magnetic zone (correctedZoneIsMagnetic true).","operationId":"postV2AstrologyVastuDirectionCorrect","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionCorrectRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionCorrectResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/correct.","tags":["Vastu"]}},"/v2/astrology/vastu/direction/declination":{"get":{"description":"Magnetic declination at a location and date, computed from the NOAA/BGS World Magnetic Model WMM2025 (degree-12 spherical-harmonic model, valid 2025.0 up to 2030.0) at sea level. Vastu is laid out to true north: true bearing = magnetic bearing + declinationDeg. Outside the validity window, at a geographic pole or in the magnetic-pole blackout zone the response is 200 with declinationDeg null and declinationCoverage naming the reason.","operationId":"getV2AstrologyVastuDirectionDeclination","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"example":28.6139,"in":"query","name":"lat","required":true,"schema":{"maximum":90,"minimum":-90,"type":"number"}},{"example":77.209,"in":"query","name":"lon","required":true,"schema":{"maximum":180,"minimum":-180,"type":"number"}},{"description":"Optional ISO date or datetime. Omit to use the current UTC date and time. A date without a time means midnight UTC; a datetime without an offset is UTC. Invalid explicit values return 400. Declination is published for dates from 2025.0 up to 2030.0, the WMM2025 validity window; other dates return declinationDeg null with declinationCoverage outside-model-window.","example":"2026-07-13","in":"query","name":"date","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionDeclinationResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/declination.","tags":["Vastu"]},"post":{"description":"Magnetic declination at a location and date, computed from the NOAA/BGS World Magnetic Model WMM2025 (degree-12 spherical-harmonic model, valid 2025.0 up to 2030.0) at sea level. Vastu is laid out to true north: true bearing = magnetic bearing + declinationDeg. Outside the validity window, at a geographic pole or in the magnetic-pole blackout zone the response is 200 with declinationDeg null and declinationCoverage naming the reason.","operationId":"postV2AstrologyVastuDirectionDeclination","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"date":"2026-07-13","lat":28.6139,"lon":77.209},"schema":{"$ref":"#/components/schemas/VastuDirectionDeclinationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionDeclinationResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/declination.","tags":["Vastu"]}},"/v2/astrology/vastu/direction/sun-path":{"post":{"operationId":"postV2AstrologyVastuDirectionSunPath","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionSunPathRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionSunPathResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/sun-path.","tags":["Vastu"]}},"/v2/astrology/vastu/direction/zone-from-bearing":{"post":{"operationId":"postV2AstrologyVastuDirectionZoneFromBearing","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionZoneFromBearingRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionZoneFromBearingResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/zone-from-bearing.","tags":["Vastu"]}},"/v2/astrology/vastu/elements/balance-suggest":{"post":{"operationId":"postV2AstrologyVastuElementsBalanceSuggest","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuElementsBalanceSuggestRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuElementsBalanceSuggestResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: elements/balance-suggest.","tags":["Vastu"]}},"/v2/astrology/vastu/elements/distribution":{"post":{"operationId":"postV2AstrologyVastuElementsDistribution","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuElementsDistributionRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuElementsDistributionResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: elements/distribution.","tags":["Vastu"]}},"/v2/astrology/vastu/entrance/obstruction-check":{"post":{"operationId":"postV2AstrologyVastuEntranceObstructionCheck","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"distanceMeters":5,"feature":"tree","houseHeightMeters":6},"schema":{"$ref":"#/components/schemas/VastuEntranceObstructionCheckRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuEntranceObstructionCheckResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: entrance/obstruction-check.","tags":["Vastu"]}},"/v2/astrology/vastu/entrance/pada":{"post":{"operationId":"postV2AstrologyVastuEntrancePada","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuEntrancePadaRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuEntrancePadaResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: entrance/pada.","tags":["Vastu"]}},"/v2/astrology/vastu/entrance/recommend":{"post":{"operationId":"postV2AstrologyVastuEntranceRecommend","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuEntranceRecommendRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuEntranceRecommendResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: entrance/recommend.","tags":["Vastu"]}},"/v2/astrology/vastu/feed/listings":{"post":{"description":"Ingest at most 1000 listing rows: send exactly one of csv or rows. Only changed accepted rows are charged; unchanged duplicates and dryRun are free. Each failed write is refunded. Plan URLs are validated metadata and are not fetched. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge. The example sets dryRun to true, which parses and checks the rows without writing or charging; remove it to ingest. Each row needs externalId, revision, project, building, unit, floor and title (letters, digits, '_', '-', '/' and '.' only).","operationId":"postV2AstrologyVastuFeedListings","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"example":"feed-example-0001","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dryRun":true,"rows":[{"building":"tower-a","externalId":"listing-0001","floor":"1","project":"example-project","revision":"v1","title":"Example 2BHK flat","unit":"101"}]},"schema":{"$ref":"#/components/schemas/VastuFeedListingsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuFeedListingsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"feed listings","tags":["Vastu"]}},"/v2/astrology/vastu/floor/level-analysis":{"post":{"operationId":"postV2AstrologyVastuFloorLevelAnalysis","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuFloorLevelAnalysisRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuFloorLevelAnalysisResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: floor/level-analysis.","tags":["Vastu"]}},"/v2/astrology/vastu/fusion/chart":{"post":{"operationId":"postV2AstrologyVastuFusionChart","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuFusionChartRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuFusionChartResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: fusion/chart.","tags":["Vastu"]}},"/v2/astrology/vastu/jobs":{"post":{"description":"Queue 1 to 1,000 assessment, plan-analyze or plan-report inputs and return 202 at once. Serialized body at most 5 MiB; each item input at most 128 KiB. The Idempotency-Key header is required: the same key and body return the same jobId; the same key with a different body returns 409. Nothing is held at submit: the wallet must cover maxCharge (the selected single-item operation price times the item count), and each item is charged that price only after it computes successfully, with a per-item retry identity so a worker rerun can never charge twice. If the wallet runs out mid-job the remaining items fail with INSUFFICIENT_BALANCE and the job ends partial; a revoked key fails the remaining items uncharged. At most 5 queued or running jobs per account. Jobs are readable for 30 days; item results for 7 days. Webhooks: pass webhookId from POST /api/enterprise/webhooks/create to receive one `vastu.job.completed`, `vastu.job.partial` or `vastu.job.failed` event when the job ends. Each delivery carries `Vedika-Signature: t=<unix>,v1=<hex HMAC-SHA256(secret, \"{t}.{raw body}\")>`, `Vedika-Event` and `Vedika-Delivery-Id`; verify over the raw body and reject t more than 5 minutes from your clock. During the 24 hours after a secret rotation the header carries one v1 per valid secret. Payloads carry only ids, counts and a results URL. Failed deliveries retry after 1m, 5m, 15m, 1h, 6h, 12h and 24h; answering 410 disables the webhook; redirects are never followed.","operationId":"postV2AstrologyVastuJobs","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"Required. Stable key of 1 to 200 characters; retain it for retries of the same request. A new key is a new request.","in":"header","name":"Idempotency-Key","required":true,"schema":{"example":"jobs-example-0001","maxLength":200,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"items":[{"id":"flat-101","input":{"inputSource":"seller-supplied","rooms":[{"roomType":"kitchen","zone":"SE"},{"roomType":"bedroom","zone":"SW"},{"roomType":"pooja","zone":"NE"}]}},{"id":"flat-102","input":{"inputSource":"seller-supplied","rooms":[{"roomType":"kitchen","zone":"NE"},{"roomType":"bedroom","zone":"SW"}]}}],"operation":"assessments"},"schema":{"$ref":"#/components/schemas/VastuJobsRequest"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuJobsResponse"}}},"description":"Job queued (or, for a retry with the same key and body, the original job)."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid job body, Idempotency-Key, webhookId, or an API key type that cannot run jobs (API_KEY_NOT_SUPPORTED_FOR_JOBS)."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"INSUFFICIENT_BALANCE: the wallet does not cover maxCharge. Nothing is held or charged."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"IDEMPOTENCY_KEY_REUSED: this key was already used with a different body."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"TOO_MANY_ACTIVE_JOBS: the account already has 5 queued or running jobs."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"VASTU_JOBS_DISABLED when async jobs are not enabled on this deployment; VASTU_JOBS_UNAVAILABLE when job storage is briefly unavailable (retry with the same Idempotency-Key)."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Queue 1 to 1,000 property assessments and get a jobId (202).","tags":["Vastu"]}},"/v2/astrology/vastu/jobs/{id}":{"get":{"description":"Owner-checked and free. counts.pending falls to 0 when the job ends; billing.charged is the sum actually debited.","operationId":"getV2AstrologyVastuJobsId","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"The jobId returned by POST /v2/vastu/jobs.","in":"path","name":"id","required":true,"schema":{"pattern":"^vjob_[0-9a-f]{32}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuJobsIdResponse"}}},"description":"Job status. Free."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JOB_NOT_FOUND. Another account's job, an unknown id and a job past its 30-day window all answer 404."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"VASTU_JOBS_DISABLED when async jobs are not enabled on this deployment; VASTU_JOBS_UNAVAILABLE when job storage is briefly unavailable (retry with the same Idempotency-Key)."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Read a job's status, counts and charges so far.","tags":["Vastu"]}},"/v2/astrology/vastu/jobs/{id}/cancel":{"post":{"description":"Owner-checked and free. Items already charged stay charged; no unstarted item is ever computed or charged.","operationId":"postV2AstrologyVastuJobsIdCancel","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"The jobId returned by POST /v2/vastu/jobs.","in":"path","name":"id","required":true,"schema":{"pattern":"^vjob_[0-9a-f]{32}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuJobsIdCancelResponse"}}},"description":"A queued job is cancelled at once; a running job stops before its next items (cancelRequested true until it does). A finished job is returned unchanged."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JOB_NOT_FOUND. Another account's job, an unknown id and a job past its 30-day window all answer 404."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"VASTU_JOBS_DISABLED when async jobs are not enabled on this deployment; VASTU_JOBS_UNAVAILABLE when job storage is briefly unavailable (retry with the same Idempotency-Key)."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Cancel a job; items not yet started are never charged.","tags":["Vastu"]}},"/v2/astrology/vastu/jobs/{id}/results":{"get":{"description":"Owner-checked and free. Each result carries the exact single-item response, including its billing block.","operationId":"getV2AstrologyVastuJobsIdResults","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"The jobId returned by POST /v2/vastu/jobs.","in":"path","name":"id","required":true,"schema":{"pattern":"^vjob_[0-9a-f]{32}$","type":"string"}},{"description":"nextCursor from the previous page. Cursor pagination only; there is no offset.","in":"query","name":"cursor","required":false,"schema":{"maxLength":32,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuJobsIdResultsResponse"}}},"description":"Up to 50 finished items in item order. Items still running are not listed yet."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"INVALID_CURSOR"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JOB_NOT_FOUND. Another account's job, an unknown id and a job past its 30-day window all answer 404."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"RESULTS_EXPIRED: item results are kept 7 days after each item finishes."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"VASTU_JOBS_DISABLED when async jobs are not enabled on this deployment; VASTU_JOBS_UNAVAILABLE when job storage is briefly unavailable (retry with the same Idempotency-Key)."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Page through per-item results, 50 at a time.","tags":["Vastu"]}},"/v2/astrology/vastu/mandala/project/81-pada":{"post":{"description":"Projects the 81-square plan of Brihat Samhita 53.43-48 onto the plot. Each cell carries verseSquare (the verse's square number, 1-81). Where the verse seats a devata on that square, the cell carries devata, devataClass (main, corner, boundary or centre), placementClassification classical, placementSource and classicalSource. The verse names no devata on 28 squares; those cells carry nulls. Fitting the grid to the plot outline is a computational convention, so the result is verified:false.","operationId":"postV2AstrologyVastuMandalaProject81Pada","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProject81PadaRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProject81PadaResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: mandala/project/81-pada.","tags":["Vastu"]}},"/v2/astrology/vastu/mandala/project/9-zone":{"post":{"description":"Computes nine-zone cell polygons in supplied plot coordinates. Placement and element associations carry their own provenance; output does not verify physical device registration.","operationId":"postV2AstrologyVastuMandalaProject9Zone","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProject9ZoneRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProject9ZoneResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: mandala/project/9-zone.","tags":["Vastu"]}},"/v2/astrology/vastu/mandala/project/brahmasthan":{"post":{"operationId":"postV2AstrologyVastuMandalaProjectBrahmasthan","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProjectBrahmasthanRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProjectBrahmasthanResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: mandala/project/brahmasthan.","tags":["Vastu"]}},"/v2/astrology/vastu/merchant/catalog/delete":{"post":{"description":"Free owner-scoped deletion. confirmId must equal id. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuMerchantCatalogDeleteAstrologyAlias","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogDeleteResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"merchant catalog delete","tags":["Vastu"]}},"/v2/astrology/vastu/merchant/catalog/get":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuMerchantCatalogGetAstrologyAlias","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogGetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogGetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"merchant catalog get","tags":["Vastu"]}},"/v2/astrology/vastu/merchant/catalog/upload":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim. Use expectedRevision 0 for a new catalog, and a fresh mutationId for each changed request. Every remedyKey must come from GET /v2/astrology/vastu/reference/remedies/catalog.","operationId":"postV2VastuMerchantCatalogUploadAstrologyAlias","parameters":[],"requestBody":{"content":{"application/json":{"example":{"catalogId":"example-catalog","content":"remedyKey,itemId,kind,label,availability\nvastu.remedy.defect.NE_KITCHEN,sku-0001,sku,Example remedy item,in_stock\n","expectedRevision":0,"format":"csv","mutationId":"example-mutation-0001"},"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogUploadRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogUploadResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"merchant catalog upload","tags":["Vastu"]}},"/v2/astrology/vastu/merchant/remedies":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuMerchantRemediesAstrologyAlias","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantRemediesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantRemediesResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"merchant remedies","tags":["Vastu"]}},"/v2/astrology/vastu/multi-storey/floor-rules":{"post":{"operationId":"postV2AstrologyVastuMultiStoreyFloorRules","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMultiStoreyFloorRulesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMultiStoreyFloorRulesResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: multi-storey/floor-rules.","tags":["Vastu"]}},"/v2/astrology/vastu/placement/balcony":{"post":{"operationId":"postV2AstrologyVastuPlacementBalcony","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementBalconyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementBalconyResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/balcony.","tags":["Vastu"]}},"/v2/astrology/vastu/placement/borewell":{"post":{"operationId":"postV2AstrologyVastuPlacementBorewell","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementBorewellRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementBorewellResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/borewell.","tags":["Vastu"]}},"/v2/astrology/vastu/placement/garden":{"post":{"operationId":"postV2AstrologyVastuPlacementGarden","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementGardenRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementGardenResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/garden.","tags":["Vastu"]}},"/v2/astrology/vastu/placement/generator-electrical":{"post":{"operationId":"postV2AstrologyVastuPlacementGeneratorElectrical","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementGeneratorElectricalRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementGeneratorElectricalResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/generator-electrical.","tags":["Vastu"]}},"/v2/astrology/vastu/placement/main-gate":{"post":{"operationId":"postV2AstrologyVastuPlacementMainGate","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementMainGateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementMainGateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/main-gate.","tags":["Vastu"]}},"/v2/astrology/vastu/placement/overhead-tank":{"post":{"operationId":"postV2AstrologyVastuPlacementOverheadTank","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementOverheadTankRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementOverheadTankResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/overhead-tank.","tags":["Vastu"]}},"/v2/astrology/vastu/placement/septic-tank":{"post":{"operationId":"postV2AstrologyVastuPlacementSepticTank","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementSepticTankRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementSepticTankResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/septic-tank.","tags":["Vastu"]}},"/v2/astrology/vastu/placement/tree":{"post":{"operationId":"postV2AstrologyVastuPlacementTree","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementTreeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementTreeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/tree.","tags":["Vastu"]}},"/v2/astrology/vastu/placement/well":{"post":{"operationId":"postV2AstrologyVastuPlacementWell","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementWellRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementWellResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/well.","tags":["Vastu"]}},"/v2/astrology/vastu/placement/window":{"post":{"operationId":"postV2AstrologyVastuPlacementWindow","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementWindowRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementWindowResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/window.","tags":["Vastu"]}},"/v2/astrology/vastu/plan/analyze":{"post":{"operationId":"postV2AstrologyVastuPlanAnalyze","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanAnalyzeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanAnalyzeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"properties":{"billing":{"properties":{"charged":{"enum":[0],"type":"number"}},"type":"object"},"code":{"example":"RECEIPT_SIGNING_UNAVAILABLE","type":"string"},"error":{"type":"string"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Receipt signing key unavailable; no charge."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/analyze.","tags":["Vastu"]}},"/v2/astrology/vastu/plan/compare-versions":{"post":{"description":"Compare two retained room-placement rule snapshots with per-rule reasons Price: $0.01; errors charge $0.","operationId":"postV2AstrologyVastuPlanCompareVersions","requestBody":{"content":{"application/json":{"example":{"fromVersion":"vastu-rules-2026-09-23","input":{"rooms":[{"name":"kitchen","zone":"SE"},{"name":"master bedroom","zone":"SW"},{"name":"pooja","zone":"NE"},{"name":"toilet","zone":"NE"}]},"toVersion":"vastu-rules-2026-10-04"},"schema":{"$ref":"#/components/schemas/VastuCompareVersionsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuCompareVersionsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Signing or verification key is unavailable; charged $0."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Compare two retained room-placement rule snapshots with per-rule reasons","tags":["Vastu"]}},"/v2/astrology/vastu/plan/convert-units":{"post":{"description":"Free deterministic conversion among m, ft, mm and in. Coordinates and unsuffixed lengths scale linearly; areas scale quadratically. Bearings, identifiers and metric-suffixed fields are preserved. No wallet deduction.","operationId":"postV2AstrologyVastuPlanConvertUnits","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"inputUnits":"m","outputUnits":"ft","plan":{"plot":{"holes":[[[4,4],[8,4],[8,8],[4,8]]],"polygon":[[0,0],[12,0],[12,12],[0,12]]},"rooms":[{"id":"living","name":"living","polygon":[[0,0],[12,0],[12,4],[0,4]]}],"units":"m"}},"schema":{"$ref":"#/components/schemas/VastuPlanConvertUnitsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanConvertUnitsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Use application/json. DWG is unsupported: convert DWG to DXF first."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute metering or billing temporarily unavailable; no computed value served."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Convert structured plan units (free)","tags":["Vastu"]}},"/v2/astrology/vastu/plan/export-dxf":{"post":{"description":"Paid operation: USD 0.01. File text is submitted inside application/json. Geometry is canonical metres; source units, ids and mapping are retained. Unsupported or omitted entities are listed for review; a file without computed geometry is rejected without charge.","operationId":"postV2AstrologyVastuPlanExportDxf","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"plan":{"plot":{"length":8,"polygon":[[0,0],[10,0],[10,8],[0,8]],"width":10},"rooms":[{"id":"room-1","name":"Study","polygon":[[0,0],[4,0],[4,3],[0,3]]}],"trueNorthDeg":0,"units":"metres"},"zones":16},"schema":{"$ref":"#/components/schemas/VastuPlanExportDxfRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanExportDxfResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Use application/json. DWG is unsupported: convert DWG to DXF first."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute metering or billing temporarily unavailable; no computed value served."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Export a dimensioned R2013 DXF","tags":["Vastu"]}},"/v2/astrology/vastu/plan/export-ifc":{"post":{"description":"Exports deterministic IFC4 arbitrary space profiles, interior voids and separate components. Uses measured attributable CPU plus response delivery cost x4, settled to cents with a positive $0.01 minimum. Invalid input costs $0.00.","operationId":"postV2AstrologyVastuPlanExportIfc","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"maxChargeUsd":"0.02","outputUnits":"mm","plan":{"plot":{"holes":[[[4,4],[8,4],[8,8],[4,8]]],"polygon":[[0,0],[12,0],[12,12],[0,12]]},"rooms":[{"id":"living","name":"living","polygon":[[0,0],[12,0],[12,4],[0,4]]}],"units":"m"}},"schema":{"$ref":"#/components/schemas/VastuPlanExportIfcRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanExportIfcResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Use application/json. DWG is unsupported: convert DWG to DXF first."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute metering or billing temporarily unavailable; no computed value served."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Export IFC4 spaces with voids and multiple wings","tags":["Vastu"]}},"/v2/astrology/vastu/plan/from-requirements":{"post":{"operationId":"postV2AstrologyVastuPlanFromRequirements","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"plot":{"facing":"east","length":60,"width":40},"requirements":{"bedrooms":2,"floors":1,"hasDining":true,"hasGuest":false,"hasKitchen":true,"hasLiving":true,"hasPooja":true,"hasStaircase":false,"hasStore":false,"hasStudy":true,"toilets":2}},"schema":{"$ref":"#/components/schemas/VastuPlanFromRequirementsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanFromRequirementsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/from-requirements.","tags":["Vastu"]}},"/v2/astrology/vastu/plan/generate":{"post":{"operationId":"postV2AstrologyVastuPlanGenerate","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanGenerateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanGenerateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/generate.","tags":["Vastu"]}},"/v2/astrology/vastu/plan/import-dxf":{"post":{"description":"Paid operation: USD 0.01. File text is submitted inside application/json. Geometry is canonical metres; source units, ids and mapping are retained. Unsupported or omitted entities are listed for review; a file without computed geometry is rejected without charge.","operationId":"postV2AstrologyVastuPlanImportDxf","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dxf":"0\nSECTION\n2\nHEADER\n9\n$INSUNITS\n70\n6\n0\nENDSEC\n0\nSECTION\n2\nENTITIES\n0\nLWPOLYLINE\n8\nROOM\n90\n4\n70\n1\n10\n0\n20\n0\n10\n6\n20\n0\n10\n6\n20\n5\n10\n0\n20\n5\n0\nTEXT\n8\n0\n10\n3\n20\n2.5\n40\n0.5\n1\nBedroom\n0\nLWPOLYLINE\n8\nROOM\n90\n4\n70\n1\n10\n8\n20\n10\n10\n12\n20\n10\n10\n12\n20\n15\n10\n8\n20\n15\n0\nTEXT\n8\n0\n10\n10\n20\n12.5\n40\n0.5\n1\nKitchen\n0\nLWPOLYLINE\n8\nROOM\n90\n4\n70\n1\n10\n8\n20\n0\n10\n12\n20\n0\n10\n12\n20\n4\n10\n8\n20\n4\n0\nTEXT\n8\n0\n10\n10\n20\n2\n40\n0.5\n1\nPooja\n0\nENDSEC\n0\nEOF\n","trueNorthDeg":0},"schema":{"$ref":"#/components/schemas/VastuPlanImportDxfRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanImportDxfResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Use application/json. DWG is unsupported: convert DWG to DXF first."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute metering or billing temporarily unavailable; no computed value served."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Import DXF rooms and openings","tags":["Vastu"]}},"/v2/astrology/vastu/plan/import-ifc":{"post":{"description":"Paid operation: USD 0.01. File text is submitted inside application/json. Geometry is canonical metres; source units, ids and mapping are retained. Unsupported or omitted entities are listed for review; a file without computed geometry is rejected without charge.","operationId":"postV2AstrologyVastuPlanImportIfc","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"ifc":"ISO-10303-21;\nHEADER;\nFILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');\nFILE_NAME('','2026-10-03T14:26:44',(''),(''),'IfcOpenShell 0.8.5-1c5b825','IfcOpenShell 0.8.5-1c5b825','');\nFILE_SCHEMA(('IFC4'));\nENDSEC;\nDATA;\n#1=IFCPERSON($,$,'Fixture Author',$,$,$,$,$);\n#2=IFCORGANIZATION($,'Synthetic Fixture',$,$,$);\n#3=IFCPERSONANDORGANIZATION(#1,#2,$);\n#4=IFCAPPLICATION(#2,'1','Synthetic fixture generator','cad-fixture');\n#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,$,$,1780488000);\n#6=IFCCARTESIANPOINT((0.,0.,0.));\n#7=IFCDIRECTION((0.,0.,1.));\n#8=IFCDIRECTION((1.,0.,0.));\n#9=IFCAXIS2PLACEMENT3D(#6,#7,#8);\n#10=IFCDIRECTION((0.5,0.8660254037844386));\n#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,9.9999999999999995E-07,#9,#10);\n#12=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);\n#13=IFCUNITASSIGNMENT((#12));\n#14=IFCPROJECT('0vRCnVgCDOs803GCmhtxI6',#5,'Synthetic CAD BIM',$,$,$,$,(#11),#13);\n#15=IFCCARTESIANPOINT((0.,0.,0.));\n#16=IFCDIRECTION((0.,0.,1.));\n#17=IFCDIRECTION((1.,0.,0.));\n#18=IFCAXIS2PLACEMENT3D(#15,#16,#17);\n#19=IFCLOCALPLACEMENT($,#18);\n#20=IFCSITE('0hYWgzRqvNwQ6H81osPsSD',#5,'Synthetic site',$,$,#19,$,$,.ELEMENT.,$,$,$,$,$);\n#21=IFCCARTESIANPOINT((100000.,200000.,0.));\n#22=IFCDIRECTION((0.,0.,1.));\n#23=IFCDIRECTION((0.96592582628906831,0.25881904510252074,0.));\n#24=IFCAXIS2PLACEMENT3D(#21,#22,#23);\n#25=IFCLOCALPLACEMENT(#19,#24);\n#26=IFCBUILDING('0zzCnj091OxeRykeq9epQV',#5,'Building A',$,$,#25,$,$,.ELEMENT.,$,$,$);\n#27=IFCRELAGGREGATES('0Zwmrm9FLUugUmgSfUPBVj',#5,$,$,#14,(#20));\n#28=IFCRELAGGREGATES('3WSTqxjqbUWuqnSWX$cbUJ',#5,$,$,#20,(#26));\n#29=IFCCARTESIANPOINT((0.,0.,0.));\n#30=IFCDIRECTION((0.,0.,1.));\n#31=IFCDIRECTION((1.,0.,0.));\n#32=IFCAXIS2PLACEMENT3D(#29,#30,#31);\n#33=IFCLOCALPLACEMENT(#25,#32);\n#34=IFCBUILDINGSTOREY('1p$CTDhB9UXfwDeNU7yv_V',#5,'Ground',$,$,#33,$,$,.ELEMENT.,0.);\n#35=IFCCARTESIANPOINT((0.,0.,3500.));\n#36=IFCDIRECTION((0.,0.,1.));\n#37=IFCDIRECTION((1.,0.,0.));\n#38=IFCAXIS2PLACEMENT3D(#35,#36,#37);\n#39=IFCLOCALPLACEMENT(#25,#38);\n#40=IFCBUILDINGSTOREY('0yZ2EoBzrQIuYp6dCq$ObS',#5,'First',$,$,#39,$,$,.ELEMENT.,3500.);\n#41=IFCRELAGGREGATES('39L8jSzY5VhhoAm0SG2qjb',#5,$,$,#26,(#34,#40));\n#42=IFCCARTESIANPOINT((0.,0.,0.));\n#43=IFCDIRECTION((0.,0.,1.));\n#44=IFCDIRECTION((1.,0.,0.));\n#45=IFCAXIS2PLACEMENT3D(#42,#43,#44);\n#46=IFCLOCALPLACEMENT(#33,#45);\n#47=IFCCARTESIANPOINT((0.,0.,0.));\n#48=IFCCARTESIANPOINT((4000.,0.,0.));\n#49=IFCCARTESIANPOINT((4000.,3000.,0.));\n#50=IFCCARTESIANPOINT((0.,3000.,0.));\n#51=IFCCARTESIANPOINT((0.,0.,0.));\n#52=IFCPOLYLINE((#47,#48,#49,#50,#51));\n#53=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#52);\n#54=IFCCARTESIANPOINT((0.,0.,0.));\n#55=IFCDIRECTION((0.,0.,1.));\n#56=IFCDIRECTION((1.,0.,0.));\n#57=IFCAXIS2PLACEMENT3D(#54,#55,#56);\n#58=IFCDIRECTION((0.,0.,1.));\n#59=IFCEXTRUDEDAREASOLID(#53,#57,#58,2700.);\n#60=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#59));\n#61=IFCPRODUCTDEFINITIONSHAPE($,$,(#60));\n#62=IFCSPACE('3JPSwLngDQVOsEMPdN4lPn',#5,'101',$,$,#46,#61,'Kitchen',.ELEMENT.,.INTERNAL.,$);\n#63=IFCRELAGGREGATES('3rOsxATuXTnQe9zbu8IDu2',#5,$,$,#34,(#62));\n#64=IFCCARTESIANPOINT((5000.,0.,0.));\n#65=IFCDIRECTION((0.,0.,1.));\n#66=IFCDIRECTION((1.,0.,0.));\n#67=IFCAXIS2PLACEMENT3D(#64,#65,#66);\n#68=IFCLOCALPLACEMENT(#33,#67);\n#69=IFCSPACE('3lQrZroabVtxFHH$J4FBiO',#5,'102',$,$,#68,$,'Study',.ELEMENT.,.INTERNAL.,$);\n#70=IFCRELAGGREGATES('30oyaeJHPMNv4c6be1bS5n',#5,$,$,#34,(#69));\n#71=IFCCARTESIANPOINT((0.,0.,0.));\n#72=IFCDIRECTION((0.,0.,1.));\n#73=IFCDIRECTION((1.,0.,0.));\n#74=IFCAXIS2PLACEMENT3D(#71,#72,#73);\n#75=IFCPLANE(#74);\n#76=IFCCARTESIANPOINT((0.,0.));\n#77=IFCCARTESIANPOINT((3000.,0.));\n#78=IFCCARTESIANPOINT((3000.,3000.));\n#79=IFCCARTESIANPOINT((0.,3000.));\n#80=IFCCARTESIANPOINT((0.,0.));\n#81=IFCPOLYLINE((#76,#77,#78,#79,#80));\n#82=IFCCURVEBOUNDEDPLANE(#75,#81,());\n#83=IFCCONNECTIONSURFACEGEOMETRY(#82,$);\n#84=IFCVIRTUALELEMENT('1VDJ88gSjL6gKbNof1HD4S',#5,'Virtual space boundary',$,$,$,$,$);\n#85=IFCRELSPACEBOUNDARY('1sABLuwrvRavJlkXeIvBYs',#5,$,$,#69,#84,#83,.VIRTUAL.,.INTERNAL.);\n#86=IFCCARTESIANPOINT((0.,0.,0.));\n#87=IFCDIRECTION((0.,0.,1.));\n#88=IFCDIRECTION((1.,0.,0.));\n#89=IFCAXIS2PLACEMENT3D(#86,#87,#88);\n#90=IFCLOCALPLACEMENT(#39,#89);\n#91=IFCCARTESIANPOINTLIST2D(((0.,0.),(5000.,0.),(5000.,4000.),(0.,4000.),(0.,0.)));\n#92=IFCINDEXEDPOLYCURVE(#91,$,.F.);\n#93=IFCSHAPEREPRESENTATION(#11,'FootPrint','Curve2D',(#92));\n#94=IFCPRODUCTDEFINITIONSHAPE($,$,(#93));\n#95=IFCSPACE('07hjwdQIHGyxcHnBbkIb6j',#5,'203',$,$,#90,#94,'Bedroom',.ELEMENT.,.INTERNAL.,$);\n#96=IFCRELAGGREGATES('3vuUT8c3LKhulxwkML0Qrb',#5,$,$,#40,(#95));\n#97=IFCCARTESIANPOINT((1000.,0.,0.));\n#98=IFCDIRECTION((0.,0.,1.));\n#99=IFCDIRECTION((1.,0.,0.));\n#100=IFCAXIS2PLACEMENT3D(#97,#98,#99);\n#101=IFCLOCALPLACEMENT(#33,#100);\n#102=IFCDOOR('2y7rxYC01LMg_Ugfcog_Tr',#5,'Door D1',$,$,#101,$,$,2100.,900.,$,$,$);\n#103=IFCCARTESIANPOINT((0.,1000.,900.));\n#104=IFCDIRECTION((0.,0.,1.));\n#105=IFCDIRECTION((6.123233995736766E-17,1.,0.));\n#106=IFCAXIS2PLACEMENT3D(#103,#104,#105);\n#107=IFCLOCALPLACEMENT(#39,#106);\n#108=IFCWINDOW('3OwCeSUdXINgnzMRYoqM8n',#5,'Window W1',$,$,#107,$,$,1200.,1000.,$,$,$);\n#109=IFCRELCONTAINEDINSPATIALSTRUCTURE('2IstcEZEjRmh9Jdfaemc1P',#5,$,$,(#102),#34);\n#110=IFCRELCONTAINEDINSPATIALSTRUCTURE('1jTWkbEZfI1BHNtJxaVuiu',#5,$,$,(#108),#40);\nENDSEC;\nEND-ISO-10303-21;\n"},"schema":{"$ref":"#/components/schemas/VastuPlanImportIfcRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanImportIfcResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Use application/json. DWG is unsupported: convert DWG to DXF first."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute metering or billing temporarily unavailable; no computed value served."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Import IFC2X3/IFC4 spaces per storey","tags":["Vastu"]}},"/v2/astrology/vastu/plan/import-image":{"post":{"description":"Paid at four times measured attributable extraction cost, rounded to wallet cents (minimum positive charge USD 0.01). Invalid inputs and responses with no computed value are uncharged. North and scale require legible drawing evidence or explicit caller confirmation. Original files are processed transiently; report-chat upload IDs are not plan inputs. PDF paths and text are parsed deterministically; scanned pages use bounded local OCR with no model calls. Raster images use vision with same-request regional fallback on provider capacity failures. source.method is vector, ocr, or vision. North is measured from directional evidence and applied exactly once. The example fileBase64 is a placeholder: replace it with the base64 of your own PNG, JPEG or WebP floor plan (up to 5 MiB, no data: prefix).","operationId":"postV2AstrologyVastuPlanImportImage","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"fileBase64":"REPLACE_WITH_BASE64_OF_A_PNG_JPEG_OR_WEBP_FLOOR_PLAN","units":"m"},"schema":{"$ref":"#/components/schemas/VastuPlanImportImageRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanImportImageResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"File or request exceeds its limit; uncharged"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No safe computed plan; uncharged"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Extraction or billing unavailable; uncharged"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Import a PNG/JPEG/WebP floor plan","tags":["Vastu"]}},"/v2/astrology/vastu/plan/import-pdf":{"post":{"description":"Paid at four times measured attributable extraction cost, rounded to wallet cents (minimum positive charge USD 0.01). Invalid inputs and responses with no computed value are uncharged. North and scale require legible drawing evidence or explicit caller confirmation. Original files are processed transiently; report-chat upload IDs are not plan inputs. PDF paths and text are parsed deterministically; scanned pages use bounded local OCR with no model calls. Raster images use vision with same-request regional fallback on provider capacity failures. source.method is vector, ocr, or vision. North is measured from directional evidence and applied exactly once. The example fileBase64 is a placeholder: replace it with the base64 of your own PDF (up to 5 MiB, no data: prefix). page selects one page, numbered from 1.","operationId":"postV2AstrologyVastuPlanImportPdf","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"fileBase64":"REPLACE_WITH_BASE64_OF_A_PDF_FLOOR_PLAN","page":1,"units":"m"},"schema":{"$ref":"#/components/schemas/VastuPlanImportPdfRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanImportPdfResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"File or request exceeds its limit; uncharged"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No safe computed plan; uncharged"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Extraction or billing unavailable; uncharged"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Import one PDF floor-plan page, vector-first","tags":["Vastu"]}},"/v2/astrology/vastu/plan/optimize":{"post":{"operationId":"postV2AstrologyVastuPlanOptimize","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanOptimizeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanOptimizeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/optimize.","tags":["Vastu"]}},"/v2/astrology/vastu/plan/report":{"post":{"operationId":"postV2AstrologyVastuPlanReport","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanReportRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanReportResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/report.","tags":["Vastu"]}},"/v2/astrology/vastu/plan/upload":{"post":{"operationId":"postV2AstrologyVastuPlanUpload","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanUploadRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanUploadResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/upload.","tags":["Vastu"]}},"/v2/astrology/vastu/plot/extensions-cuts":{"post":{"description":"Computes extensions and cuts from the supplied geometry. Their Vastu grades are traditional convention, not verified Brihat Samhita verse claims.","operationId":"postV2AstrologyVastuPlotExtensionsCuts","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotExtensionsCutsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotExtensionsCutsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/extensions-cuts.","tags":["Vastu"]}},"/v2/astrology/vastu/plot/from-survey":{"post":{"description":"Explicit EPSG code and units; no inference. EPSG:4326 XY is [longitude,latitude] in degrees. Projected XY is [easting,northing], in metres or international feet. WGS84 UTM 42N-46N and WGS84 India NSF LCC / Andhra Pradesh grids use published parameters. Result is local WGS84 topocentric east/north with geographic origin and per-point grid convergence. Boundary/control points must be within 20 km of origin and inside the CRS area of use. Historical datums are refused without a declared transformation. Price: $0.01, (bounded CPU allowance $0.0005 + request infrastructure $0.002) × 4; errors are uncharged.","operationId":"postV2AstrologyVastuPlotFromSurvey","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"boundary":[[500000,0],[500020,0],[500020,30],[500000,30]],"crs":"EPSG:32643","units":"m"},"schema":{"$ref":"#/components/schemas/VastuPlotFromSurveyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotFromSurveyResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute meter or billing unavailable; paid data withheld."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Plot from survey","tags":["Vastu"]}},"/v2/astrology/vastu/plot/orientation":{"post":{"operationId":"postV2AstrologyVastuPlotOrientation","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotOrientationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotOrientationResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/orientation.","tags":["Vastu"]}},"/v2/astrology/vastu/plot/ratio":{"post":{"description":"Computes the length-to-width ratio and applies a traditional 2:1 convention. The numeric cutoff has no verified verse basis in the governed corpus.","operationId":"postV2AstrologyVastuPlotRatio","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotRatioRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotRatioResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/ratio.","tags":["Vastu"]}},"/v2/astrology/vastu/plot/road-orientation":{"post":{"operationId":"postV2AstrologyVastuPlotRoadOrientation","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotRoadOrientationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotRoadOrientationResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/road-orientation.","tags":["Vastu"]}},"/v2/astrology/vastu/plot/shape":{"post":{"description":"Computes polygon geometry and a traditional Vastu convention grade. Shape grades have no verified verse basis in the governed corpus.","operationId":"postV2AstrologyVastuPlotShape","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotShapeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotShapeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/shape.","tags":["Vastu"]}},"/v2/astrology/vastu/plot/slope":{"post":{"operationId":"postV2AstrologyVastuPlotSlope","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotSlopeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotSlopeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/slope.","tags":["Vastu"]}},"/v2/astrology/vastu/portfolio/analytics":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2AstrologyVastuPortfolioAnalytics","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioAnalyticsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioAnalyticsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio analytics","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/astrology/vastu/portfolio/budgets/get":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2AstrologyVastuPortfolioBudgetsGet","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioBudgetsGetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioBudgetsGetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio budgets/get","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/astrology/vastu/portfolio/budgets/set":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge. Send exactly one scope, propertyId or tenantRef, and capUsd as a decimal string (or null to clear the cap).","operationId":"postV2AstrologyVastuPortfolioBudgetsSet","requestBody":{"content":{"application/json":{"example":{"capUsd":"10.00","tenantRef":"example-project"},"schema":{"$ref":"#/components/schemas/VastuPortfolioBudgetsSetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioBudgetsSetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio budgets/set","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/astrology/vastu/portfolio/compare":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2AstrologyVastuPortfolioCompare","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioCompareRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioCompareResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio compare","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/astrology/vastu/portfolio/search":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2AstrologyVastuPortfolioSearch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioSearchRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioSearchResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio search","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/astrology/vastu/portfolio/usage":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2AstrologyVastuPortfolioUsage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioUsageRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioUsageResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio usage","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/astrology/vastu/portfolio/usage/export":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2AstrologyVastuPortfolioUsageExport","parameters":[{"description":"Default JSON contains the CSV. Accept: text/csv downloads the CSV directly.","in":"header","name":"Accept","schema":{"enum":["application/json","text/csv"],"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioUsageExportRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioUsageExportResponse"}},"text/csv":{"schema":{"type":"string"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio usage/export","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/astrology/vastu/properties/activity/export":{"post":{"description":"Free authorized append-only activity export. Records actor, revision, action, time and a hash chain. Cursor is the last sequence; request pages until nextCursor is null. JSONL export pages carry complete events. Audit reads themselves are recorded. Export before property erasure; erasure removes activity rows.","operationId":"postV2PropertiesActivityExportAlias","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesActivityExportRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesActivityExportResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property activity export","tags":["Vastu"]}},"/v2/astrology/vastu/properties/activity/list":{"post":{"description":"Free authorized append-only activity list. Records actor, revision, action, time and a hash chain. Cursor is the last sequence; request pages until nextCursor is null. JSONL export pages carry complete events. Audit reads themselves are recorded. Export before property erasure; erasure removes activity rows.","operationId":"postV2PropertiesActivityListAlias","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesActivityListRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesActivityListResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property activity list","tags":["Vastu"]}},"/v2/astrology/vastu/properties/collaboration/comment":{"post":{"description":"Owner/editor/reviewer comment on a linked assessment. Current revision and hash are mandatory. Prior-revision comments remain identified as prior revision. Membership/control operations are free unless explicitly priced. At most 100 members, 100 comments and 100 review decisions per property.","operationId":"postV2PropertiesCollaborationCommentAlias","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationCommentRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationCommentResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration comment","tags":["Vastu"]}},"/v2/astrology/vastu/properties/collaboration/get":{"post":{"description":"Read an invited property. ownerId selects the owner account; the authenticated actor must be owner or a current member. Membership/control operations are free unless explicitly priced. At most 100 members, 100 comments and 100 review decisions per property.","operationId":"postV2PropertiesCollaborationGetAlias","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationGetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationGetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration get","tags":["Vastu"]}},"/v2/astrology/vastu/properties/collaboration/invite":{"post":{"description":"Owner creates an unbilled pending invitation by exactly one of email/accountId. Every valid target returns 202 with an opaque invitationId and pending status, regardless of account existence. No account lookup or email delivery occurs. Only hashes of pending recipient identities are stored. Recipient repeats the request with ownerId and accept:true to bind an invitation using their own accountId or current verified email; the stored invited role is used. Acceptance returns 200 with accepted status. Members and activity reveal no pending recipient accountId/email. Limit: 20 requests per caller per UTC hour; 429 and failures are unbilled. Pending invites inherit property retention and erasure. At most 100 pending invitations and 100 accepted members per property. Send exactly one of email or accountId. The propertyId is the id returned by POST /v2/astrology/vastu/properties/create; the example value is a placeholder, replace it before sending.","operationId":"postV2PropertiesCollaborationInviteAlias","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"example":"invite-example-0001","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"email":"colleague@example.com","propertyId":"REPLACE_WITH_PROPERTY_ID","role":"viewer"},"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationInviteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationInviteResponse"}}},"description":"Recipient explicitly accepted an existing invitation"},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationInviteResponse"}}},"description":"Pending invitation; identical response shape for existing and unknown targets"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Caller invitation limit reached; no charge and no recipient identity"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration invite","tags":["Vastu"]}},"/v2/astrology/vastu/properties/collaboration/members":{"post":{"description":"Owner-only member roster. Membership/control operations are free unless explicitly priced. At most 100 members, 100 comments and 100 review decisions per property.","operationId":"postV2PropertiesCollaborationMembersAlias","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationMembersRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationMembersResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration members","tags":["Vastu"]}},"/v2/astrology/vastu/properties/collaboration/review":{"post":{"description":"Owner/reviewer decision for a linked assessment at the exact current revision and content hash. Stale hashes return 409 free. Membership/control operations are free unless explicitly priced. At most 100 members, 100 comments and 100 review decisions per property.","operationId":"postV2PropertiesCollaborationReviewAlias","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationReviewRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationReviewResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration review","tags":["Vastu"]}},"/v2/astrology/vastu/properties/collaboration/revoke":{"post":{"description":"Owner revokes an accepted accountId or cancels a pending invitationId (exactly one). Pending recipient identity is never returned. Unbilled. Send exactly one of accountId (an accepted collaborator) or invitationId (a pending invitation). The propertyId is the id returned by POST /v2/astrology/vastu/properties/create; the example value is a placeholder, replace it before sending.","operationId":"postV2PropertiesCollaborationRevokeAlias","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"example":"revoke-example-0001","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"accountId":"REPLACE_WITH_COLLABORATOR_ACCOUNT_ID","propertyId":"REPLACE_WITH_PROPERTY_ID"},"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationRevokeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationRevokeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration revoke","tags":["Vastu"]}},"/v2/astrology/vastu/properties/collaboration/update":{"post":{"description":"Owner/editor change to title and property data at a new revision. Uses a conditional write; billed $0.01 only for a delivered update, failed writes refunded. Existing linked IDs and retention are preserved. Membership/control operations are free unless explicitly priced. At most 100 members, 100 comments and 100 review decisions per property.","operationId":"postV2PropertiesCollaborationUpdateAlias","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationUpdateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration update","tags":["Vastu"]}},"/v2/astrology/vastu/properties/create":{"post":{"description":"Create an account-scoped property. Charged writes refund on failure. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge. The response returns the propertyId that the other property and collaboration calls take.","operationId":"postV2AstrologyVastuPropertiesCreate","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"example":"property-example-0001","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"data":{"note":"example"},"ids":{"building":"tower-a","floor":"1","project":"example-project","revision":"v1","unit":"101"},"retentionDays":30,"title":"Example flat 101"},"schema":{"$ref":"#/components/schemas/VastuPropertiesCreateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCreateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties create","tags":["Vastu"]}},"/v2/astrology/vastu/properties/delete":{"post":{"description":"Free owner-only physical erasure of active property rows, membership/comments/reviews/activity and linked scan/archive objects including all versions and delete markers. First call fences writes and can return 202 pending with retryAfterEpoch. Retry after the 210-second request drain. A 200 completed response contains a canonical SHA-256 receipt listing removals. Denied or incomplete purges never report completion. Encrypted recovery backups expire within 35 days; restore requires replay of erasure fences. Minimal pseudonymous fences/receipt remain to block recreation. Replays return the same receipt.","operationId":"postV2AstrologyVastuPropertiesDelete","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesDeleteResponse"}}},"description":"Success"},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesDeleteResponse"}}},"description":"Erasure pending; retry at retryAfterEpoch. No charge."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties delete","tags":["Vastu"]}},"/v2/astrology/vastu/properties/get":{"post":{"description":"Read an owned active property for free. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2AstrologyVastuPropertiesGet","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesGetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesGetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties get","tags":["Vastu"]}},"/v2/astrology/vastu/properties/link-scan":{"post":{"description":"Link existing scan and assessment IDs for free. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2AstrologyVastuPropertiesLinkScan","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesLinkScanRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesLinkScanResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties link scan","tags":["Vastu"]}},"/v2/astrology/vastu/properties/list":{"post":{"description":"List active properties for free. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2AstrologyVastuPropertiesList","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesListRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesListResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties list","tags":["Vastu"]}},"/v2/astrology/vastu/properties/update":{"post":{"description":"Update an existing property; missing properties are unbilled. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2AstrologyVastuPropertiesUpdate","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesUpdateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties update","tags":["Vastu"]}},"/v2/astrology/vastu/quote/calculate":{"post":{"description":"Quote workflow prices for free. Retention quotes use bytes supplied for estimation; a paid extension always measures its actual stored row. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2AstrologyVastuQuoteCalculate","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuQuoteCalculateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuQuoteCalculateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"quote calculate","tags":["Vastu"]}},"/v2/astrology/vastu/receipt/verify":{"post":{"description":"Verify an Ed25519 receipt and optionally match its assessment input; free Price: $0.00; errors charge $0.","operationId":"postV2AstrologyVastuReceiptVerify","requestBody":{"content":{"application/json":{"example":{"input":{"rooms":[{"name":"kitchen","zone":"SE"},{"name":"master bedroom","zone":"SW"},{"name":"pooja","zone":"NE"}]},"token":"eyJhbGciOiJFZERTQSIsImtpZCI6InJlY2VpcHQtMjAyNi0xMCIsInR5cCI6InZlZGlrYS12YXN0dS1yZWNlaXB0K2p3cyJ9.eyJhc3Nlc3NtZW50SWQiOiIyMTE1NGY1M2I1ZGY5NTY3OWFlOGU5MDg3ZTYxNjAxZDExY2Y3ZDBiMDIyYWZlZWU3ODE2NDk3OTc1OTk2NzgzIiwiaW5wdXRIYXNoIjoiMzg3YTA3NWU2MjIxZTdhMWJhNjYwODRmMjA1MTQ1OWU5OGUxODQ5ODU2ZWFkZTY3YTFmM2E3Y2Q1NmQxNzlmMSIsInJlc3VsdEhhc2giOiJjN2UxNGYwYWFkNDEwMjAzMWZmMTRhNjJhZDk2MTRiM2EyNjM4MjZmYzQ1NDJhNDIwZTQ1MmU1MTVlMjIxNGE5IiwicnVsZXNWZXJzaW9uIjoidmFzdHUtcnVsZXMtMjAyNi0xMC0wNCIsInNjb3JlIjoxMDAsImdyYWRlIjoiQSIsInNvdXJjZUxhYmVscyI6WyJCcmloYXQgU2FtaGl0YSA1My4xMTggKEl5ZXIgMTg4NCwgUEQpIiwiY2xhc3NpY2FsIiwiY2xhc3NpY2FsIChCcmloYXQgU2FtaGl0YSA1My4xMTgsIHZlcmlmaWVkIG1vZHVsZSkiLCJjb252ZW50aW9uIiwicHJvcHJpZXRhcnkgVmVkaWthIGluZGV4IG92ZXIgcGFuY2hhLWJodXRhIGNvbnZlbnRpb24iLCJ0cmFkaXRpb25hbCBWYXN0dSBjb252ZW50aW9uIiwidHJhZGl0aW9uYWwgVmFzdHUgY29udmVudGlvbiAobXVraGEgZ3JhZGluZyBpcyBub3QgYSBzcGVjaWZpYyBjbGFzc2ljYWwgdmVyc2UpIiwidHJhZGl0aW9uYWwgVmFzdHUgY29udmVudGlvbiAobm90IGEgc3BlY2lmaWMgY2xhc3NpY2FsIHZlcnNlKSIsInZlZGlrYS1lcGhlbWVyaXMiXSwidGltZXN0YW1wIjoxNzkxNDEwMDgxfQ.Zh1Y5Ele5IGXcDwqIw6TEQgj2PWOe09B0hqmFV86PQHuOqsVcbEryxrr5GEJbV_O70PdES82cCytrqq0I7ZYCw"},"schema":{"$ref":"#/components/schemas/VastuReceiptVerifyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReceiptVerifyResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Signing or verification key is unavailable; charged $0."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Verify an Ed25519 receipt and optionally match its assessment input; free","tags":["Vastu"]}},"/v2/astrology/vastu/reference/colors-by-zone":{"get":{"operationId":"getV2AstrologyVastuReferenceColorsByZone","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceColorsByZoneResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/colors-by-zone.","tags":["Vastu"]}},"/v2/astrology/vastu/reference/defects/catalog":{"get":{"operationId":"getV2AstrologyVastuReferenceDefectsCatalog","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceDefectsCatalogResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/defects/catalog.","tags":["Vastu"]}},"/v2/astrology/vastu/reference/directions/16":{"get":{"operationId":"getV2AstrologyVastuReferenceDirections16","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceDirections16Response"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/directions/16.","tags":["Vastu"]}},"/v2/astrology/vastu/reference/directions/32":{"get":{"operationId":"getV2AstrologyVastuReferenceDirections32","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceDirections32Response"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/directions/32.","tags":["Vastu"]}},"/v2/astrology/vastu/reference/directions/8":{"get":{"operationId":"getV2AstrologyVastuReferenceDirections8","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceDirections8Response"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/directions/8.","tags":["Vastu"]}},"/v2/astrology/vastu/reference/gate-obstructions":{"get":{"operationId":"getV2AstrologyVastuReferenceGateObstructions","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceGateObstructionsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/gate-obstructions.","tags":["Vastu"]}},"/v2/astrology/vastu/reference/mandala/45-devatas":{"get":{"description":"Returns the 45-devata roster with its Brihat Samhita 53.43-48 source classification. The roster citation does not verify per-cell coordinates or per-devata consequences.","operationId":"getV2AstrologyVastuReferenceMandala45Devatas","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceMandala45DevatasResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/mandala/45-devatas.","tags":["Vastu"]}},"/v2/astrology/vastu/reference/mandala/64-pada":{"get":{"operationId":"getV2AstrologyVastuReferenceMandala64Pada","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceMandala64PadaResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/mandala/64-pada.","tags":["Vastu"]}},"/v2/astrology/vastu/reference/mandala/9-zone":{"get":{"operationId":"getV2AstrologyVastuReferenceMandala9Zone","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceMandala9ZoneResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/mandala/9-zone.","tags":["Vastu"]}},"/v2/astrology/vastu/reference/materials-by-zone":{"get":{"operationId":"getV2AstrologyVastuReferenceMaterialsByZone","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceMaterialsByZoneResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/materials-by-zone.","tags":["Vastu"]}},"/v2/astrology/vastu/reference/remedies/catalog":{"get":{"description":"Returns modern Vastu remedial practice suggestions. These are not verified classical verse claims or measured evidence of remedy effectiveness.","operationId":"getV2AstrologyVastuReferenceRemediesCatalog","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceRemediesCatalogResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/remedies/catalog.","tags":["Vastu"]}},"/v2/astrology/vastu/remediation/reassess":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuRemediationReassessAstrologyAlias","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationReassessRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationReassessResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"remediation reassess","tags":["Vastu"]}},"/v2/astrology/vastu/remediation/tasks/delete":{"post":{"description":"Free owner-scoped deletion. confirmId must equal id. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuRemediationTasksDeleteAstrologyAlias","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksDeleteResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"remediation tasks delete","tags":["Vastu"]}},"/v2/astrology/vastu/remediation/tasks/list":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuRemediationTasksListAstrologyAlias","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksListRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksListResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"remediation tasks list","tags":["Vastu"]}},"/v2/astrology/vastu/remediation/tasks/upsert":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuRemediationTasksUpsertAstrologyAlias","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksUpsertRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksUpsertResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"remediation tasks upsert","tags":["Vastu"]}},"/v2/astrology/vastu/report/drawing-sheet":{"post":{"description":"Architectural drawing sheet at a fixed print scale: A3/A2 landscape, dimensions in metres, true-north arrow, scale bar, title block and at most six embedded PNG/JPEG field-evidence slots. No scale-to-fit. Normalized plan.units is m or metres; plot and room polygons use [x,y] coordinates. Oversize plans fail before billing. HTML/PDF output costs $0.01 after successful output; renderer failure is unbilled. The plan needs units, trueNorthDeg (0 up to 360), a plot polygon and 1 to 100 rooms inside the plot; titleBlock needs project and architect.","operationId":"vastuDrawingSheetAlias","requestBody":{"content":{"application/json":{"example":{"format":"html","paperSize":"A3","plan":{"plot":{"polygon":[[0,0],[12,0],[12,12],[0,12]]},"rooms":[{"id":"living","name":"Living","polygon":[[0,0],[12,0],[12,4],[0,4]]}],"trueNorthDeg":0,"units":"m"},"scaleDenominator":100,"titleBlock":{"architect":"Example architect","project":"Example project"}},"schema":{"$ref":"#/components/schemas/VastuDrawingSheetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDrawingSheetResponse"}}},"description":"Successful output"},"400":{"description":"Invalid input; zero charge"},"401":{"description":"Valid API key required"},"402":{"description":"Insufficient funds; no charge and no output delivered"},"403":{"description":"Wrong key class"},"404":{"description":"Owner-scoped record not found"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"description":"Retry conflict or workspace capacity"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Storage or rendering unavailable; zero charge"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Architectural drawing sheet at a fixed print scale: A3/A2 landscape, dimensions in metres, true-north arrow, scale bar, title block and at most six embedded PNG/JPEG field-evidence slots. No scale-to-fit. Normalized plan.units is m or metres; plot and room polygons use [x,y] coordinates. Oversize plans fail before billing. HTML/PDF output costs $0.01 after successful output; renderer failure is unbilled.","tags":["Vastu"],"x-price-usd":"0.01"}},"/v2/astrology/vastu/room/bedroom":{"post":{"operationId":"postV2AstrologyVastuRoomBedroom","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomBedroomRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomBedroomResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/bedroom.","tags":["Vastu"]}},"/v2/astrology/vastu/room/dining":{"post":{"operationId":"postV2AstrologyVastuRoomDining","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomDiningRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomDiningResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/dining.","tags":["Vastu"]}},"/v2/astrology/vastu/room/kitchen":{"post":{"operationId":"postV2AstrologyVastuRoomKitchen","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomKitchenRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomKitchenResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/kitchen.","tags":["Vastu"]}},"/v2/astrology/vastu/room/living":{"post":{"operationId":"postV2AstrologyVastuRoomLiving","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomLivingRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomLivingResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/living.","tags":["Vastu"]}},"/v2/astrology/vastu/room/pooja":{"post":{"operationId":"postV2AstrologyVastuRoomPooja","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomPoojaRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomPoojaResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/pooja.","tags":["Vastu"]}},"/v2/astrology/vastu/room/staircase":{"post":{"operationId":"postV2AstrologyVastuRoomStaircase","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStaircaseRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStaircaseResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/staircase.","tags":["Vastu"]}},"/v2/astrology/vastu/room/store":{"post":{"operationId":"postV2AstrologyVastuRoomStore","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStoreRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStoreResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/store.","tags":["Vastu"]}},"/v2/astrology/vastu/room/study":{"post":{"operationId":"postV2AstrologyVastuRoomStudy","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStudyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStudyResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/study.","tags":["Vastu"]}},"/v2/astrology/vastu/room/toilet":{"post":{"operationId":"postV2AstrologyVastuRoomToilet","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomToiletRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomToiletResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/toilet.","tags":["Vastu"]}},"/v2/astrology/vastu/room/water-storage":{"post":{"operationId":"postV2AstrologyVastuRoomWaterStorage","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomWaterStorageRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomWaterStorageResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/water-storage.","tags":["Vastu"]}},"/v2/astrology/vastu/rules/versions":{"get":{"description":"Discover the current and two retained room-placement rule versions; free Price: $0.00; errors charge $0.","operationId":"getV2AstrologyVastuRulesVersions","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRuleVersionsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"503":{"description":"Signing or verification key is unavailable; charged $0."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Discover the current and two retained room-placement rule versions; free","tags":["Vastu"]}},"/v2/astrology/vastu/scans/delete":{"post":{"description":"Account storage is disabled until it is enabled for your account. Disabled calls return 503 SCAN_STORAGE_DISABLED before storage or billing. Keyless sandbox calls use synthetic examples only (persistence=preview-only); they never persist or delete account data. Unbilled access revocation. Missing or already deleted IDs return deleted=false. Deletion removes current snapshot content but is not an immediate physical-purge claim; older versions follow the configured lifecycle.","operationId":"postV2AstrologyVastuScansDelete","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansDeleteResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No active snapshot found for this account.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Scan ID content conflict or concurrent modification.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Snapshot expired or deleted.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JSON body exceeds 96 KiB.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Storage disabled or unavailable. Save activation may fail after debit; retry the same scanId.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Saved scan: delete","tags":["Vastu"]}},"/v2/astrology/vastu/scans/list":{"post":{"description":"Account storage is disabled until it is enabled for your account. Disabled calls return 503 SCAN_STORAGE_DISABLED before storage or billing. Keyless sandbox calls use synthetic examples only (persistence=preview-only); they never persist or delete account data. Use a new body requestId for each refresh or page and retain it on retries. Pages use scan-ID order, not chronological order. Expired or deleted entries are filtered; an empty page can still have nextCursor. Each call reads at most 50 storage records. Retry headers X-Request-Id, X-Idempotency-Key and Idempotency-Key are unsupported (422); use the documented body identity.","operationId":"postV2AstrologyVastuScansList","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":2,"requestId":"sample-request-001"},"schema":{"$ref":"#/components/schemas/VastuScansListRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansListResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No active snapshot found for this account.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Scan ID content conflict or concurrent modification.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Snapshot expired or deleted.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JSON body exceeds 96 KiB.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Retry headers are unsupported; use the documented body identity.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Storage disabled or unavailable. Save activation may fail after debit; retry the same scanId.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Saved scan: list","tags":["Vastu"]}},"/v2/astrology/vastu/scans/retrieve":{"post":{"description":"Account storage is disabled until it is enabled for your account. Disabled calls return 503 SCAN_STORAGE_DISABLED before storage or billing. Keyless sandbox calls use synthetic examples only (persistence=preview-only); they never persist or delete account data. Use a body requestId for each logical read and retain it on retries. Reads are limited to active snapshots owned by the authenticated account. Retry headers X-Request-Id, X-Idempotency-Key and Idempotency-Key are unsupported (422); use the documented body identity.","operationId":"postV2AstrologyVastuScansRetrieve","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansRetrieveRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansRetrieveResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No active snapshot found for this account.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Scan ID content conflict or concurrent modification.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Snapshot expired or deleted.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JSON body exceeds 96 KiB.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Retry headers are unsupported; use the documented body identity.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Storage disabled or unavailable. Save activation may fail after debit; retry the same scanId.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Saved scan: retrieve","tags":["Vastu"]}},"/v2/astrology/vastu/scans/save":{"post":{"description":"Account storage is disabled until it is enabled for your account. Disabled calls return 503 SCAN_STORAGE_DISABLED before storage or billing. Keyless sandbox calls use synthetic examples only (persistence=preview-only); they never persist or delete account data. Retain scanId and identical content across retries. A changed body for that ID returns 409. Data is prepared privately before billing and activated only after the debit receipt. A failed activation can return 503 after debit: retry the same scanId to finish without another charge. Access lasts 1-30 days from preparation. Existing expired or deleted records cannot be revived. Never reuse scan IDs: after physical purge a submitted save is a new storage attempt and may be charged. Unknown native billing history blocks debit and activation. Retry headers X-Request-Id, X-Idempotency-Key and Idempotency-Key are unsupported (422); use the documented body identity.","operationId":"postV2AstrologyVastuScansSave","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"propertyId":"sample-property-01","retentionDays":1,"scanId":"sample-scan-00001","snapshot":{"inputSource":"self-reported","rooms":[{"roomType":"kitchen","zone":"SE"},{"roomType":"toilet","zone":"NE"}]},"title":"Example room tags"},"schema":{"$ref":"#/components/schemas/VastuScansSaveRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansSaveResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No active snapshot found for this account.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Scan ID content conflict or concurrent modification.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Snapshot expired or deleted.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JSON body exceeds 96 KiB.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Retry headers are unsupported; use the documented body identity.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Storage disabled/unavailable or SCAN_BILLING_UNCONFIRMED. A charge may exist; retain the scanId for recovery. Unknown ledger state never permits another debit.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Saved scan: save","tags":["Vastu"]}},"/v2/astrology/vastu/scans/timelapse":{"post":{"description":"Account storage is disabled until it is enabled for your account. Disabled calls return 503 SCAN_STORAGE_DISABLED before storage or billing. Keyless sandbox calls use synthetic examples only (persistence=preview-only); they never persist or delete account data. Select 2-20 distinct active snapshots from the same caller-defined propertyId. Results use server creation time, then scan ID. This compares saved inputs, not physical change or remedy effectiveness. Use a body requestId for each logical read and retain it on retries. Retry headers X-Request-Id, X-Idempotency-Key and Idempotency-Key are unsupported (422); use the documented body identity.","operationId":"postV2AstrologyVastuScansTimelapse","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansTimelapseRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansTimelapseResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No active snapshot found for this account.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Scan ID content conflict or concurrent modification.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Snapshot expired or deleted.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JSON body exceeds 96 KiB.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Retry headers are unsupported; use the documented body identity.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Storage disabled or unavailable. Save activation may fail after debit; retry the same scanId.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Saved scan: timelapse","tags":["Vastu"]}},"/v2/astrology/vastu/score/compliance-index":{"post":{"operationId":"postV2AstrologyVastuScoreComplianceIndex","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreComplianceIndexRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreComplianceIndexResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"properties":{"billing":{"properties":{"charged":{"enum":[0],"type":"number"}},"type":"object"},"code":{"example":"RECEIPT_SIGNING_UNAVAILABLE","type":"string"},"error":{"type":"string"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Receipt signing key unavailable; no charge."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: score/compliance-index.","tags":["Vastu"]}},"/v2/astrology/vastu/score/overall":{"post":{"operationId":"postV2AstrologyVastuScoreOverall","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreOverallRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreOverallResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"properties":{"billing":{"properties":{"charged":{"enum":[0],"type":"number"}},"type":"object"},"code":{"example":"RECEIPT_SIGNING_UNAVAILABLE","type":"string"},"error":{"type":"string"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Receipt signing key unavailable; no charge."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: score/overall.","tags":["Vastu"]}},"/v2/astrology/vastu/score/zone-wise":{"post":{"operationId":"postV2AstrologyVastuScoreZoneWise","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreZoneWiseRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreZoneWiseResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"properties":{"billing":{"properties":{"charged":{"enum":[0],"type":"number"}},"type":"object"},"code":{"example":"RECEIPT_SIGNING_UNAVAILABLE","type":"string"},"error":{"type":"string"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Receipt signing key unavailable; no charge."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: score/zone-wise.","tags":["Vastu"]}},"/v2/astrology/vastu/specialized/commercial":{"post":{"operationId":"postV2AstrologyVastuSpecializedCommercial","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"facing":"east","rooms":[{"roomType":"owner cabin","zone":"southwest"},{"roomType":"cash counter","zone":"north"},{"roomType":"kitchen","zone":"southeast"},{"roomType":"toilet","zone":"northwest"}]},"schema":{"$ref":"#/components/schemas/VastuSpecializedCommercialRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedCommercialResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/commercial.","tags":["Vastu"]}},"/v2/astrology/vastu/specialized/educational":{"post":{"operationId":"postV2AstrologyVastuSpecializedEducational","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedEducationalRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedEducationalResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/educational.","tags":["Vastu"]}},"/v2/astrology/vastu/specialized/factory":{"post":{"operationId":"postV2AstrologyVastuSpecializedFactory","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"facing":"east","rooms":[{"roomType":"heavy machinery","zone":"southwest"},{"roomType":"furnace","zone":"southeast"},{"roomType":"toilet","zone":"northwest"},{"roomType":"water tank","zone":"northeast"}]},"schema":{"$ref":"#/components/schemas/VastuSpecializedFactoryRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedFactoryResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/factory.","tags":["Vastu"]}},"/v2/astrology/vastu/specialized/hospital":{"post":{"description":"Applies modern Vastu consultancy conventions to supplied hospital room zones. This is not verified classical authority or clinical guidance.","operationId":"postV2AstrologyVastuSpecializedHospital","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedHospitalRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedHospitalResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/hospital.","tags":["Vastu"]}},"/v2/astrology/vastu/specialized/residential":{"post":{"operationId":"postV2AstrologyVastuSpecializedResidential","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedResidentialRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedResidentialResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/residential.","tags":["Vastu"]}},"/v2/astrology/vastu/specialized/restaurant":{"post":{"operationId":"postV2AstrologyVastuSpecializedRestaurant","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedRestaurantRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedRestaurantResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/restaurant.","tags":["Vastu"]}},"/v2/astrology/vastu/specialized/temple":{"post":{"operationId":"postV2AstrologyVastuSpecializedTemple","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"facing":"east","rooms":[{"roomType":"garbhagriha","zone":"west"},{"roomType":"madapalli kitchen","zone":"southeast"},{"roomType":"store","zone":"southwest"},{"roomType":"main entrance","zone":"east"}]},"schema":{"$ref":"#/components/schemas/VastuSpecializedTempleRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedTempleResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/temple.","tags":["Vastu"]}},"/v2/astrology/vastu/timing/bhumi-pujan":{"post":{"operationId":"postV2AstrologyVastuTimingBhumiPujan","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingBhumiPujanRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingBhumiPujanResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: timing/bhumi-pujan.","tags":["Vastu"]}},"/v2/astrology/vastu/timing/construction-start":{"post":{"operationId":"postV2AstrologyVastuTimingConstructionStart","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingConstructionStartRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingConstructionStartResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: timing/construction-start.","tags":["Vastu"]}},"/v2/astrology/vastu/timing/grihapravesh":{"post":{"operationId":"postV2AstrologyVastuTimingGrihapravesh","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingGrihapraveshRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingGrihapraveshResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: timing/grihapravesh.","tags":["Vastu"]}},"/v2/astrology/vastu/timing/vastu-shanti":{"post":{"operationId":"postV2AstrologyVastuTimingVastuShanti","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingVastuShantiRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingVastuShantiResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: timing/vastu-shanti.","tags":["Vastu"]}},"/v2/astrology/vimsamsa":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Each call is billed to your wallet.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"ayanamsa":"lahiri","datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"misc","charged":1,"currency":"USD","endpoint":"/v2/astrology/vimsamsa"},"data":{"chartType":"Vimsamsa (D-20)","description":"Spiritual progress, worship, devotion","division":20,"interpretation":{"analysis":["Jupiter strong indicates spiritual wisdom","Ketu well-placed shows detachment and liberation","12th house strength indicates meditation abilities","9th lord shows connection with guru"],"keyPlanets":["Jupiter (Guru)","Ketu (Moksha)","12th Lord","9th Lord"],"reveals":["Spiritual progress and practices","Religious inclinations and deity worship","Meditation and yoga abilities","Moksha (liberation) potential","Guru and spiritual teacher connection"],"significance":"The Vimsamsa (D-20) chart reveals spiritual inclinations, religious practices, and the path to enlightenment. It shows how you connect with the divine.","summary":"Your D20 divisional chart provides specific insights into the life area it governs. Analyze the planet positions in conjunction with your Rasi chart."},"keywords":["spiritual","worship","devotion","mantra","meditation"],"lagnaDegree":4.5,"lagnaFormattedDegree":"4°30'","lagnaLongitude":244.5,"lagnaSign":8,"lagnaSignName":"Sagittarius","positions":[{"degree":12.4,"formattedDegree":"12°24'","house":5,"originalLongitude":30.62,"planet":"Sun","sign":6,"signName":"Libra"},{"degree":7.1,"formattedDegree":"7°06'","house":9,"originalLongitude":245.35,"planet":"Moon","sign":10,"signName":"Aquarius"}],"remedies":["Daily meditation and mantra chanting","Serve a spiritual guru or ashram","Visit pilgrimage places as indicated by planets"],"tips":["Strengthen Jupiter for spiritual growth","Ketu placement shows path to liberation","Check 12th house for meditation potential"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Birth date is required / Invalid datetime format / Invalid latitude / Invalid longitude (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Divisional chart calculation failed (auto-refunded)"}},"summary":"Get the Vimsamsa (D-20) divisional chart revealing spiritual progress, devotion and path to liberation.","tags":["Vedic Astrology"]}},"/v2/astrology/vimshottari-dasha":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body param. 1=Maha,2=+Antar,3=+Pratyantar (default),4=+Sookshma,5=+Prana","in":"query","name":"depth","required":false,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","depth":2,"latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2448,"balanceBefore":24.5,"category":"astrology","charged":2,"currency":"USD","endpoint":"/v2/astrology/vimshottari-dasha"},"data":{"balanceAtBirth":{"lord":"Rahu","years":11.3},"birthDashaLord":"Rahu","birthNakshatra":"Swati","currentMahaDasha":{"lord":"Jupiter"},"mahadashas":[{"antardashas":[{"endDate":"1993-01-26","lord":"Rahu","startDate":"1990-05-15"}],"endDate":"2001-08-20","lord":"Rahu","startDate":"1990-05-15","years":18}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Vimshottari (120-year) dasha ladder; depth 1-5 (Maha→Prana). Aliases: /dasha-periods, /dasha","tags":["Vedic Astrology"]}},"/v2/astrology/yamaghanta":{"get":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Each call is billed to your wallet.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Location latitude (-90 to 90). Defaults to 28.6139 (Delhi) when omitted.","in":"query","name":"latitude","required":false,"schema":{"type":"number"}},{"description":"Location longitude (-180 to 180). Defaults to 77.2090 (Delhi) when omitted.","in":"query","name":"longitude","required":false,"schema":{"type":"number"}},{"description":"UTC offset (e.g. +05:30) or IANA zone. Defaults to +05:30. The period is computed for the current date in this zone.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"muhurta","charged":1,"currency":"USD","endpoint":"/v2/astrology/yamaghanta"},"data":{"date":"2026-06-14T09:15:42+05:30","yamaghanta":{"end_time":"2026-06-14T15:09:00.000+05:30","is_active":false,"start_time":"2026-06-14T13:42:00.000+05:30"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed — please check the location (latitude -90..90, longitude -180..180) (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Your wallet has been refunded. (auto-refunded)"}},"summary":"Get today's Yamaghanta — the most inauspicious daily period to avoid for travel and important activities.","tags":["Vedic Astrology"]}},"/v2/astrology/yoga":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Retry-safe dedup key.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-03-23T12:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50,"category":"panchang","charged":1,"currency":"USD","endpoint":"/v2/astrology/yoga"},"data":{"coordinates":{"latitude":28.6139,"longitude":77.209},"datetime":"2026-03-23T12:00:00+05:30","disha_shool":{"direction":"east"},"guidance":{"activitiesToAvoid":[],"bestActivities":[],"overallAuspiciousness":"Good","tips":[]},"karana":{"interpretation":{},"name":"Bava"},"masa":{"name":"Chaitra"},"nakshatra":{"interpretation":{},"name":"Krittika"},"ritu":{"name":"Vasanta"},"timezone":"+05:30","tithi":{"interpretation":{},"name":"Panchami","paksha":{"id":1,"name":"Shukla"}},"vaara":{"interpretation":{},"name":"Somavara"},"yoga":{"id":4,"interpretation":{"effect":"Favorable","guidance":"Auspicious for new beginnings","meaning":"Yoga of good fortune"},"name":"Saubhagya","quality":"Auspicious"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Luni-solar Yoga (one of 27) for a given datetime and location, with its quality and guidance.","tags":["Calendar"]}},"/v2/astrology/yogini-dasha":{"post":{"parameters":[{"description":"API key","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"schema":{"$ref":"#/components/schemas/BirthDetails"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":2447,"balanceBefore":24.5,"category":"astrology","charged":3,"currency":"USD","endpoint":"/v2/astrology/yogini-dasha"},"data":{"birthYogini":"Mangala","currentYogini":"Bhramari","periods":[{"endDate":"1991-05-15","lord":"Moon","startDate":"1990-05-15","years":1,"yogini":"Mangala"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_DATE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Yogini dasha system (8 yoginis, 36-year cycle)","tags":["Vedic Astrology"]}},"/v2/biorhythm/best-days":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional response language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","daysAhead":30,"top":5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/biorhythm/best-days"},"data":{"bestDays":[{"date":"2026-06-18","overallScore":91,"recommendation":"Excellent day for important activities. All cycles are in positive territory.","values":{"emotional":0.9749,"intellectual":0.7557,"physical":0.9302}},{"date":"2026-06-25","overallScore":80,"recommendation":"Excellent day for important activities. All cycles are in positive territory.","values":{"emotional":0.7818,"intellectual":0.6549,"physical":0.7557}}],"dateOfBirth":"1990-05-15","system":"biorhythm"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALID_DATE_REQUIRED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED"}},"summary":"Find the top upcoming days (highest combined cycle score) with a recommendation for each.","tags":["Biorhythm"]}},"/v2/biorhythm/chart":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional response language code (31 supported, e.g. hi, ta)","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","days":30,"startDate":"2026-06-14"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/biorhythm/chart"},"data":{"chart":[{"date":"2026-06-14","daysSinceBirth":13179,"phases":{"emotional":"positive","intellectual":"negative","physical":"negative"},"values":{"emotional":0.9749,"intellectual":-0.7557,"physical":-0.2698}},{"date":"2026-06-15","daysSinceBirth":13180,"phases":{"emotional":"positive","intellectual":"negative","physical":"critical"},"values":{"emotional":0.9009,"intellectual":-0.6549,"physical":0}}],"dateOfBirth":"1990-05-15","days":30,"system":"biorhythm"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALID_DATE_REQUIRED (missing/unparseable dateOfBirth or startDate)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED"}},"summary":"Get a day-by-day biorhythm chart (physical, emotional, intellectual cycles) across a date range from a birth date.","tags":["Biorhythm"]}},"/v2/biorhythm/compatibility":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional response language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"person1":{"dateOfBirth":"1990-05-15"},"person2":{"dateOfBirth":"1988-11-23"},"targetDate":"2026-06-14"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/biorhythm/compatibility"},"data":{"compatibility":{"emotional":62,"intellectual":91,"overall":77,"physical":78},"person1":"1990-05-15","person2":"1988-11-23","system":"biorhythm"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALID_DATE_REQUIRED (either partner DOB missing/unparseable)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED"}},"summary":"Compare two people's biorhythm cycles on a target date and get per-cycle plus overall sync scores (0-100).","tags":["Biorhythm"]}},"/v2/biorhythm/critical-days":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional response language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","daysAhead":30}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/biorhythm/critical-days"},"data":{"criticalDays":[{"cycle":"physical","date":"2026-06-15","value":0,"warning":"Physical energy is at a critical transition point. Be cautious with strenuous activities and take extra care of your body."},{"cycle":"emotional","date":"2026-06-22","value":0,"warning":"Emotional sensitivity is heightened. Be mindful of reactions and practice self-care."}],"dateOfBirth":"1990-05-15","system":"biorhythm"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALID_DATE_REQUIRED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED"}},"summary":"List upcoming critical days (cycle zero-crossings) with cautionary guidance for each affected cycle.","tags":["Biorhythm"]}},"/v2/biorhythm/forecast":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional response language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","daysAhead":7}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/biorhythm/forecast"},"data":{"bestDays":[{"date":"2026-06-18","overallScore":91,"recommendation":"Excellent day for important activities. All cycles are in positive territory.","values":{"emotional":0.9749,"intellectual":0.7557,"physical":0.9302}}],"criticalDays":[{"cycle":"physical","date":"2026-06-15","value":0,"warning":"Physical energy is at a critical transition point. Be cautious with strenuous activities and take extra care of your body."}],"dateOfBirth":"1990-05-15","days":[{"date":"2026-06-14","daysSinceBirth":13179,"phases":{"emotional":"positive","intellectual":"negative","physical":"negative"},"values":{"emotional":0.9749,"intellectual":-0.7557,"physical":-0.2698}}],"summary":"Mixed energy ahead. Some great days balanced with challenging ones.","system":"biorhythm"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALID_DATE_REQUIRED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED"}},"summary":"Get a short-range biorhythm forecast: a daily breakdown plus a plain-language summary, critical days, and best days.","tags":["Biorhythm"]}},"/v2/biorhythm/today":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional response language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/biorhythm/today"},"data":{"date":"2026-06-14","daysSinceBirth":13179,"phases":{"emotional":"positive","intellectual":"negative","physical":"negative"},"system":"biorhythm","values":{"emotional":0.9749,"intellectual":-0.7557,"physical":-0.2698}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALID_DATE_REQUIRED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED"}},"summary":"Get today's biorhythm reading (physical, emotional, intellectual values and phases) for a birth date.","tags":["Biorhythm"]}},"/v2/calculators/flames/{name1}/{name2}":{"get":{"parameters":[{"description":"First person's name (URL-encoded). Non-letters are ignored by the algorithm.","in":"path","name":"name1","required":true,"schema":{"type":"string"}},{"description":"Second person's name (URL-encoded).","in":"path","name":"name2","required":true,"schema":{"type":"string"}},{"description":"API key as 'Bearer vk_live_...' (canonical). The deprecated 'x-api-key: <key>' header is also accepted (sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code (also accepted as 'langcode'/'language') to translate string fields; unsupported codes return 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Optional idempotency token (also accepted as 'Idempotency-Key' / 'X-Request-Id') to dedupe billing on retries.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/calculators/flames/{name1}/{name2}"},"data":{"name1":"Rahul","name2":"Priya","remainingLetters":5,"result":"Love"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed (handler-level, with auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive (subscription gate) / TEST_KEY_REJECTED (vk_test_* key)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (with auto-refund)"}},"summary":"Classic FLAMES relationship game — enter two names and get the playful relationship verdict (Friendship, Love, Affection, Marriage, Enemy, or Sibling).","tags":["Calculators"]}},"/v2/calculators/love-score/{name1}/{name2}":{"get":{"parameters":[{"description":"First person's name (URL-encoded).","in":"path","name":"name1","required":true,"schema":{"type":"string"}},{"description":"Second person's name (URL-encoded).","in":"path","name":"name2","required":true,"schema":{"type":"string"}},{"description":"API key as 'Bearer vk_live_...' (canonical). The deprecated 'x-api-key: <key>' header is also accepted (sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code (also 'langcode'/'language') to translate string fields; unsupported codes return 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Optional idempotency token (also 'Idempotency-Key' / 'X-Request-Id') to dedupe billing on retries.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/calculators/love-score/{name1}/{name2}"},"data":{"chemistry":"Hot","name1":"Rahul","name2":"Priya","score":87},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed (handler-level, with auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive / TEST_KEY_REJECTED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (with auto-refund)"}},"summary":"Fun name-compatibility love score (40-100) with a chemistry label (Building / Warm / Hot) for two names.","tags":["Calculators"]}},"/v2/calculators/moon-sign":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (canonical). The deprecated 'x-api-key: <key>' header is also accepted (sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code (also 'langcode'/'language') to translate string fields; unsupported codes return 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/calculators/moon-sign"},"data":{"moonDegree":0,"moonSign":"Unknown","nakshatra":"Unknown"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed (handler-level, with auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive / TEST_KEY_REJECTED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (e.g. invalid latitude/longitude out of range, with auto-refund)"}},"summary":"Find your Moon sign (Rashi) and the Moon's birth nakshatra from your birth date, time, and place.","tags":["Calculators"]}},"/v2/calculators/nakshatra-finder":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (canonical). The deprecated 'x-api-key: <key>' header is also accepted (sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code (also 'langcode'/'language') to translate string fields; unsupported codes return 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/calculators/nakshatra-finder"},"data":{"moonDegree":127.42,"moonSign":"Unknown","nakshatra":"Krittika","pada":2},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed (handler-level, with auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive / TEST_KEY_REJECTED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (e.g. invalid latitude/longitude out of range, with auto-refund)"}},"summary":"Find your birth nakshatra (one of 27 lunar mansions) and its pada (quarter) from your birth date, time, and place.","tags":["Calculators"]}},"/v2/calculators/sun-sign":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (canonical). The deprecated 'x-api-key: <key>' header is also accepted (sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code (also 'langcode'/'language') to translate string fields; unsupported codes return 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/calculators/sun-sign"},"data":{"sunDegree":0,"sunSign":"Unknown"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed (handler-level, with auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Missing or invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive / TEST_KEY_REJECTED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (e.g. invalid latitude/longitude out of range, with auto-refund)"}},"summary":"Find your Vedic (sidereal) Sun sign from your birth date, time, and place.","tags":["Calculators"]}},"/v2/career/finance/business-start":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*) — required on all /v2/* endpoints","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language); en default. Unknown code -> 400","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"date":"2026-07-01","days":45,"latitude":19.07,"limit":6,"longitude":72.87}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/career/finance/business-start"},"data":{"avoidDays":["Tuesday (Mars — aggressive)","Saturday (Saturn — delays)"],"bestDays":["Thursday (Jupiter — expansion)","Wednesday (Mercury — commerce)","Friday (Venus — luxury/services)"],"guidance":["Register the business during the Abhijit window shown — it overcomes most doshas.","Never sign during the Rahu Kaal window listed for that day.","Prefer Shukla Paksha (waxing Moon) and a non-retrograde Jupiter for expansion."],"location":{"latitude":19.07,"longitude":72.87},"scannedDays":45,"system":"finance-astrology","windows":[{"avoidRahuKaal":{"end":"2026-07-02T10:00:00.000Z","start":"2026-07-02T08:30:00.000Z"},"date":"2026-07-02","dayLord":"Jupiter — expansion","muhurta":"Abhijit Muhurta","rating":"Highly auspicious","score":96,"weekday":"Thursday","windowEnd":"2026-07-02T07:30:00.000Z","windowStart":"2026-07-02T06:42:00.000Z"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized (missing/invalid/revoked API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 Rate limit exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge refunded)"}},"summary":"Scans upcoming calendar days for the most auspicious electional windows (Abhijit Muhurta) to launch or register a new business, with Rahu Kaal periods to avoid.","tags":["Career & Finance"]}},"/v2/career/finance/investment":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*) — required on all /v2/* endpoints","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language); en default. Unknown code -> 400","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/career/finance/investment"},"data":{"advice":"5th lord Mercury favors investments in writing. Diversify across 3-4 sectors.","bestSectors":["Writing","Teaching","Accounting"],"favorableForInvestment":true,"riskLevel":"Moderate","system":"finance-astrology"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (calculation error; charge refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized (missing/invalid/revoked API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 Rate limit exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge refunded)"}},"summary":"Advises whether the current outlook favors investing, which sectors suit the person, and the indicated risk level.","tags":["Career & Finance"]}},"/v2/career/finance/property":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*) — required on all /v2/* endpoints","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language); en default. Unknown code -> 400","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/career/finance/property"},"data":{"advice":["4th lord Sun indicates property in Leo-type areas","Buy property during Shukla Paksha (waxing Moon)","Avoid eclipses and Mercury retrograde for property registration","Thursday and Friday are best for property dealings"],"favorablePeriods":["2026 — When Jupiter aspects the 4th house","2027 Q1 — Saturn stability supports long-term investment"],"fourthHouse":{"lord":"Sun","sign":"Leo"},"system":"finance-astrology"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (calculation error; charge refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized (missing/invalid/revoked API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 Rate limit exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge refunded)"}},"summary":"Analyzes the 4th house of property and identifies the periods and weekdays best suited for buying, selling, or registering real estate.","tags":["Career & Finance"]}},"/v2/career/finance/wealth-timing":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*) — required on all /v2/* endpoints","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language); en default. Unknown code -> 400","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/career/finance/wealth-timing"},"data":{"financialPeriods":[{"period":"2026 Jul-Sep","rating":7,"type":"Earning increase potential"},{"period":"2026 Oct-Dec","rating":6,"type":"Investment returns"},{"period":"2027 Jan-Mar","rating":8,"type":"New income source possible"}],"system":"finance-astrology","wealthHouses":[{"house":2,"indication":"Earning capacity, accumulated wealth, family business","lord":"Mercury","sign":"Gemini"},{"house":5,"indication":"Stock market, creative pursuits, speculative gains","lord":"Mercury","sign":"Virgo"},{"house":9,"indication":"International business, publishing, academia, luck in career","lord":"Saturn","sign":"Capricorn"},{"house":11,"indication":"Income from profession, professional networks, aspirations fulfilled","lord":"Jupiter","sign":"Pisces"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (calculation error; charge refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized (missing/invalid/revoked API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 Rate limit exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge refunded)"}},"summary":"Maps the wealth-giving houses of the chart and the upcoming periods most favorable for income and financial growth.","tags":["Career & Finance"]}},"/v2/career/promotion":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*) — required on all /v2/* endpoints","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language); en default. Unknown code -> 400","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/career/promotion"},"data":{"advice":["Present proposals on Thursdays for maximum impact","Avoid making career demands during Mercury retrograde","Network actively during Jupiter transit through 11th house"],"bestMonths":["2026-03 (Jupiter aspect)","2026-09 (Sun in dignity)","2027-01 (New cycle)"],"favorableDays":["Thursday (Jupiter day)","Sunday (Sun — authority)"],"system":"career-astrology"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (calculation error; charge refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized (missing/invalid/revoked API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 Rate limit exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge refunded)"}},"summary":"Identifies the best months, weekdays, and tactics to seek a promotion or pitch career advancement.","tags":["Career & Finance"]}},"/v2/career/suitable":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*) — required on all /v2/* endpoints","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language); en default, 31 supported. Unknown code -> 400","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/career/suitable"},"data":{"houseAnalysis":[{"area":"Wealth & Speech","house":2,"impact":"Earning capacity, accumulated wealth, family business"},{"area":"Service & Routine","house":6,"impact":"Daily work environment, competitors, health at work"},{"area":"Partnerships","house":7,"impact":"Business partnerships, client relationships, contracts"},{"area":"Career & Status","house":10,"impact":"Primary career house — profession, public image, achievements"},{"area":"Gains & Networks","house":11,"impact":"Income from profession, professional networks, aspirations fulfilled"}],"lagnaSign":"Taurus","primaryCareers":["Mining","Agriculture","Construction","IT infrastructure","Research","Labour management"],"secondaryCareers":["Technology","Social work","Innovation","Aerospace","NGO"],"system":"career-astrology","tenthHouseSign":"Aquarius","tenthLord":"Saturn","workStyle":"Structured — excels in long-term, disciplined work"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (calculation error; charge refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized (missing/invalid/revoked API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 Rate limit exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge refunded)"}},"summary":"Reveals the professions and work styles best suited to a person, derived from their 10th house, its ruling planet, and ascendant.","tags":["Career & Finance"]}},"/v2/career/timing":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*) — required on all /v2/* endpoints","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language); en default. Unknown code -> 400","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/career/timing"},"data":{"currentPeriod":{"advice":"Saturn as 10th lord suggests focus on discipline skills","status":"Active growth phase"},"system":"career-astrology","upcomingPeriods":[{"influence":"Jupiter transit favoring career expansion","period":"2026 Q3","rating":8},{"influence":"Saturn stability — consolidation phase","period":"2026 Q4","rating":6},{"influence":"New opportunities through networking","period":"2027 Q1","rating":7},{"influence":"Potential leadership role or promotion","period":"2027 Q2","rating":9}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (calculation error; charge refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized (missing/invalid/revoked API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 Rate limit exceeded"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge refunded)"}},"summary":"Forecasts the favorable upcoming periods for career growth, with a rated quarter-by-quarter outlook and present-phase advice.","tags":["Career & Finance"]}},"/v2/chinese/bazi/analysis":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/bazi/analysis"},"data":{"animal":"Horse","chart":{"dayMaster":{"element":"Water","name":"Gui","polarity":"Yin"},"dayPillar":{"branch":{"animal":"Rooster","element":"Metal","name":"You","polarity":"Yin"},"label":"Gui You","stem":{"element":"Water","name":"Gui","polarity":"Yin"}},"dominantElement":"Fire","elementBalance":{"Earth":0,"Fire":4,"Metal":3,"Water":1,"Wood":0},"hourPillar":{"branch":{"animal":"Snake","element":"Fire","name":"Si","polarity":"Yin"},"label":"Ding Si","stem":{"element":"Fire","name":"Ding","polarity":"Yin"}},"monthPillar":{"branch":{"animal":"Snake","element":"Fire","name":"Si","polarity":"Yin"},"label":"Xin Si","stem":{"element":"Metal","name":"Xin","polarity":"Yin"}},"yearPillar":{"branch":{"animal":"Horse","chinese":"午","element":"Fire","name":"Wu","polarity":"Yang"},"label":"Geng Wu","stem":{"chinese":"庚","element":"Metal","name":"Geng","polarity":"Yang"}}},"element":"Metal","lucky":{"animal":"Horse","element":"Metal","luckyColors":["Yellow","Green","Red"],"luckyDirections":["South","Southwest","Northwest"],"luckyFlowers":["Calla Lily","Jasmine"],"luckyNumbers":[2,3,7]},"polarity":"Yang","system":"chinese"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 datetime must be a valid ISO 8601 date (e.g. 1990-05-15T10:30:00+05:30)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"BaZi Four Pillars chart enriched with zodiac animal, ruling element and lucky attributes","tags":["Chinese Astrology"]}},"/v2/chinese/bazi/chart":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/bazi/chart"},"data":{"chart":{"dayMaster":{"chinese":"癸","element":"Water","name":"Gui","polarity":"Yin"},"dayPillar":{"branch":{"animal":"Rooster","chinese":"酉","element":"Metal","name":"You","polarity":"Yin"},"label":"Gui You","stem":{"chinese":"癸","element":"Water","name":"Gui","polarity":"Yin"}},"dominantElement":"Fire","elementBalance":{"Earth":0,"Fire":4,"Metal":3,"Water":1,"Wood":0},"hourPillar":{"branch":{"animal":"Snake","chinese":"巳","element":"Fire","name":"Si","polarity":"Yin"},"label":"Ding Si","stem":{"chinese":"丁","element":"Fire","name":"Ding","polarity":"Yin"}},"monthPillar":{"branch":{"animal":"Snake","chinese":"巳","element":"Fire","name":"Si","polarity":"Yin"},"label":"Xin Si","stem":{"chinese":"辛","element":"Metal","name":"Xin","polarity":"Yin"}},"yearPillar":{"branch":{"animal":"Horse","chinese":"午","element":"Fire","name":"Wu","polarity":"Yang"},"label":"Geng Wu","stem":{"chinese":"庚","element":"Metal","name":"Geng","polarity":"Yang"}}},"system":"chinese"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 datetime must be a valid ISO 8601 date (e.g. 1990-05-15T10:30:00+05:30)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Compute the BaZi (Four Pillars of Destiny) chart with Day Master and Five-Element balance","tags":["Chinese Astrology"]}},"/v2/chinese/calendar":{"get":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Gregorian date YYYY-MM-DD; defaults to today","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/calendar"},"data":{"animal":"Horse","earthlyBranch":"Wu","element":"Fire","gregorianDate":"2026-06-14","heavenlyStem":"Bing","isLeapMonth":false,"lunarDay":28,"lunarMonth":4,"lunarYear":2026,"system":"chinese"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 date must be a valid date (YYYY-MM-DD)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Convert a Gregorian date to its Chinese lunar date with zodiac animal, element, stem and branch","tags":["Chinese Astrology"]}},"/v2/chinese/compatibility":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"animal1":"Rat","animal2":"Horse"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/compatibility"},"data":{"animal1":"Rat","animal2":"Horse","description":"Opposing energies; strong friction likely without conscious effort.","relationship":"Clash","score":15,"system":"chinese"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid animal2 \"X\". Must be one of: ..."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Score relationship compatibility between two Chinese zodiac animals (harmony/clash)","tags":["Chinese Astrology"]}},"/v2/chinese/daily":{"get":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Zodiac animal (one of 12); defaults to Rat if omitted","in":"query","name":"animal","required":false,"schema":{"type":"string"}},{"description":"Date YYYY-MM-DD; defaults to today","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/daily"},"data":{"advice":"An auspicious day; seize opportunities with confidence.","animal":"Horse","compatibility":{"animal1":"Horse","animal2":"Dog","description":"Natural allies sharing the same elemental trinity.","relationship":"Three Harmony","score":85},"date":"2026-06-14","dayAnimal":"Dog","luckyHour":"3:00-5:00","period":"daily","system":"chinese"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 date must be a valid date (YYYY-MM-DD)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Daily luck reading for a zodiac animal — day animal, compatibility, lucky hour and advice","tags":["Chinese Astrology"]}},"/v2/chinese/element":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"year":1990}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/element"},"data":{"element":"Metal","polarity":"Yang","system":"chinese","year":1990},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 year must be a valid integer (e.g. 1990)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Get the ruling Five-Element (Wu Xing) and yin/yang polarity for a birth year","tags":["Chinese Astrology"]}},"/v2/chinese/feng-shui/directions":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"kuaNumber":7}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/feng-shui/directions"},"data":{"auspicious":[{"direction":"Northwest","meaning":"Sheng Qi (Prosperity)","type":"auspicious"},{"direction":"Southwest","meaning":"Tian Yi (Health)","type":"auspicious"},{"direction":"Northeast","meaning":"Yan Nian (Longevity)","type":"auspicious"},{"direction":"West","meaning":"Fu Wei (Stability)","type":"auspicious"}],"group":"West","inauspicious":[{"direction":"East","meaning":"Ho Hai (Bad Luck)","type":"inauspicious"},{"direction":"Southeast","meaning":"Wu Gui (Five Ghosts)","type":"inauspicious"},{"direction":"North","meaning":"Liu Sha (Six Killings)","type":"inauspicious"},{"direction":"South","meaning":"Jue Ming (Total Loss)","type":"inauspicious"}],"kuaNumber":7,"system":"chinese"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid kuaNumber \"X\". Must be one of: 1, 2, 3, 4, 6, 7, 8, 9."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Look up the 4 auspicious and 4 inauspicious Feng Shui directions for a known Kua number","tags":["Chinese Astrology"]}},"/v2/chinese/feng-shui/flying-stars":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/feng-shui/flying-stars"},"data":{"periodStar":1,"stars":[{"element":"Water","meaning":"Career and wealth prosperity","position":"Center","star":1},{"element":"Earth","meaning":"Illness and health challenges","position":"Northwest","star":2},{"element":"Wood","meaning":"Arguments and legal disputes","position":"West","star":3},{"element":"Wood","meaning":"Academic success and romance","position":"Northeast","star":4},{"element":"Earth","meaning":"Misfortune and obstacles","position":"South","star":5},{"element":"Metal","meaning":"Authority and windfall luck","position":"North","star":6},{"element":"Metal","meaning":"Robbery and deception","position":"Southwest","star":7},{"element":"Earth","meaning":"Wealth and prosperity","position":"East","star":8},{"element":"Fire","meaning":"Future prosperity and celebrations","position":"Southeast","star":9}],"system":"chinese","year":2026},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 year must be a valid integer (e.g. 2026)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Annual Feng Shui Flying Stars chart — 9 compass sectors with star number, element and meaning","tags":["Chinese Astrology"]}},"/v2/chinese/feng-shui/kua-number":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthYear":1990,"gender":"male"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/feng-shui/kua-number"},"data":{"auspicious":[{"direction":"Northwest","meaning":"Sheng Qi (Prosperity)","type":"auspicious"},{"direction":"Southwest","meaning":"Tian Yi (Health)","type":"auspicious"},{"direction":"Northeast","meaning":"Yan Nian (Longevity)","type":"auspicious"},{"direction":"West","meaning":"Fu Wei (Stability)","type":"auspicious"}],"birthYear":1990,"gender":"male","group":"West","inauspicious":[{"direction":"East","meaning":"Ho Hai (Bad Luck)","type":"inauspicious"},{"direction":"Southeast","meaning":"Wu Gui (Five Ghosts)","type":"inauspicious"},{"direction":"North","meaning":"Liu Sha (Six Killings)","type":"inauspicious"},{"direction":"South","meaning":"Jue Ming (Total Loss)","type":"inauspicious"}],"kuaNumber":7,"system":"chinese"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid gender \"X\". Must be \"male\" or \"female\"."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Personal Kua number and East/West group with auspicious and inauspicious directions","tags":["Chinese Astrology"]}},"/v2/chinese/lucky":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"animal":"Horse","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/lucky"},"data":{"animal":"Horse","element":"Fire","luckyColors":["Yellow","Green","Red"],"luckyDirections":["South","Southwest","Northwest"],"luckyFlowers":["Calla Lily","Jasmine"],"luckyNumbers":[2,3,7],"system":"chinese"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 year must be a valid integer (e.g. 2026)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Lucky numbers, colors, directions and flowers for a zodiac animal (by year's ruling element)","tags":["Chinese Astrology"]}},"/v2/chinese/monthly":{"get":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Zodiac animal (one of 12); defaults to Rat if omitted","in":"query","name":"animal","required":false,"schema":{"type":"string"}},{"description":"Target year; defaults to current year","in":"query","name":"year","required":false,"schema":{"type":"integer"}},{"description":"Target month 1-12; defaults to current month","in":"query","name":"month","required":false,"schema":{"type":"integer"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/monthly"},"data":{"animal":"Horse","compatibility":{"animal1":"Horse","animal2":"Goat","description":"Highly compatible; deep mutual understanding and support.","relationship":"Six Harmony","score":95},"month":6,"monthAnimal":"Goat","outlook":"Favorable month ahead.","period":"monthly","system":"chinese","year":2026},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid animal \"X\". Must be one of: Rat, Ox, Tiger, Rabbit, Dragon, Snake, Horse, Goat, Monkey, Rooster, Dog, Pig."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Monthly outlook for a zodiac animal — blends compatibility with the month's branch animal","tags":["Chinese Astrology"]}},"/v2/chinese/year-prediction":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"animal":"Horse","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/year-prediction"},"data":{"animal":"Horse","areas":{"career":"Advancement opportunities likely; take initiative.","health":"Generally good; maintain routines.","love":"Romantic prospects are bright; existing bonds deepen.","wealth":"Financial gains possible through effort."},"compatibility":{"animal1":"Horse","animal2":"Horse","description":"Same-sign pairs share traits but may amplify weaknesses.","relationship":"Same Sign","score":70},"outlook":"Generally favorable year; stay open to collaborations.","system":"chinese","year":2026,"yearAnimal":"Horse","yearElement":"Fire"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 year must be a valid integer (e.g. 2026)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Annual forecast for a zodiac animal in a target year, with career/love/health/wealth outlook","tags":["Chinese Astrology"]}},"/v2/chinese/yearly":{"get":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Zodiac animal (one of 12); defaults to Rat if omitted","in":"query","name":"animal","required":false,"schema":{"type":"string"}},{"description":"Target year; defaults to current year","in":"query","name":"year","required":false,"schema":{"type":"integer"}},{"description":"Optional response language","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/yearly"},"data":{"animal":"Horse","areas":{"career":"Advancement opportunities likely; take initiative.","health":"Generally good; maintain routines.","love":"Romantic prospects are bright; existing bonds deepen.","wealth":"Financial gains possible through effort."},"compatibility":{"animal1":"Horse","animal2":"Horse","description":"Same-sign pairs share traits but may amplify weaknesses.","relationship":"Same Sign","score":70},"outlook":"Generally favorable year; stay open to collaborations.","period":"yearly","system":"chinese","year":2026,"yearAnimal":"Horse","yearElement":"Fire"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid animal \"X\". Must be one of: Rat, Ox, Tiger, Rabbit, Dragon, Snake, Horse, Goat, Monkey, Rooster, Dog, Pig."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Yearly forecast for a zodiac animal with career/love/health/wealth area guidance","tags":["Chinese Astrology"]}},"/v2/chinese/zi-wei":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":5000,"charged":0,"endpoint":"/v2/chinese/zi-wei","refunded":true},"error":"Zi Wei Dou Shu (Purple Star Astrology) is not yet available — it is a distinct system from BaZi/Four Pillars and requires its own engine.","success":false},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Zi Wei Dou Shu (Purple Star Astrology) is not yet available — it is a distinct system from BaZi/Four Pillars and requires its own engine. (auto-refunded, never charged)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Zi Wei Dou Shu (Purple Star) chart — currently returns an honest not-yet-available notice (no charge)","tags":["Chinese Astrology"]}},"/v2/chinese/zodiac-animal":{"post":{"parameters":[{"description":"API key as 'Bearer vk_live_...' (or legacy 'x-api-key' header)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language (31 supported, cache-only translation)","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"year":1990}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/chinese/zodiac-animal"},"data":{"animal":"Horse","element":"Metal","polarity":"Yang","system":"chinese","year":1990},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 year must be a valid integer (e.g. 1990)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Get the Chinese zodiac animal, element and yin/yang polarity for a birth year","tags":["Chinese Astrology"]}},"/v2/crystals/birth-crystal":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for response translation. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/crystals/birth-crystal"},"data":{"primary":{"chakras":["heart"],"color":"pink","description":"Stone of unconditional love and infinite peace","element":"water","hardness":7,"healingProperties":["love","compassion","emotional-healing","self-worth"],"name":"Rose Quartz","planets":["venus"],"zodiacSigns":["taurus","libra"]},"rulingPlanet":"venus","secondary":{"chakras":["solar-plexus","sacral"],"color":"yellow","description":"Merchant stone of wealth and prosperity","element":"fire","hardness":7,"healingProperties":["abundance","confidence","creativity","motivation"],"name":"Citrine","planets":["sun","jupiter"],"zodiacSigns":["aries","gemini","leo","libra"]},"system":"crystals","zodiacSign":"taurus"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Valid date_of_birth (YYYY-MM-DD) is required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again."}},"summary":"Determine a person's primary and secondary birth crystals from their date of birth, with the underlying zodiac sign and ruling planet.","tags":["Crystals"]}},"/v2/crystals/by-chakra/{chakra}":{"get":{"parameters":[{"description":"Chakra, one of: root, sacral, solar-plexus, heart, throat, third-eye, crown (case-insensitive).","in":"path","name":"chakra","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for response translation. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/crystals/by-chakra/{chakra}"},"data":{"chakra":"heart","crystals":[{"chakras":["heart"],"color":"pink","description":"Stone of unconditional love and infinite peace","element":"water","hardness":7,"healingProperties":["love","compassion","emotional-healing","self-worth"],"name":"Rose Quartz","planets":["venus"],"zodiacSigns":["taurus","libra"]}],"system":"crystals"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again."}},"summary":"List the crystals and gemstones that resonate with a given chakra.","tags":["Crystals"]}},"/v2/crystals/by-planet/{planet}":{"get":{"parameters":[{"description":"Planet, e.g. sun, moon, mars, mercury, jupiter, venus, saturn, rahu, ketu (case-insensitive).","in":"path","name":"planet","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for response translation. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/crystals/by-planet/{planet}"},"data":{"crystals":[{"chakras":["heart"],"color":"pink","description":"Stone of unconditional love and infinite peace","element":"water","hardness":7,"healingProperties":["love","compassion","emotional-healing","self-worth"],"name":"Rose Quartz","planets":["venus"],"zodiacSigns":["taurus","libra"]}],"planet":"venus","system":"crystals"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again."}},"summary":"List the crystals and gemstones ruled by a given planet.","tags":["Crystals"]}},"/v2/crystals/by-zodiac/{sign}":{"get":{"parameters":[{"description":"Zodiac sign, e.g. aries, taurus, gemini, cancer, leo, virgo, libra, scorpio, sagittarius, capricorn, aquarius, pisces (case-insensitive).","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for response translation (e.g. hi, ta). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/crystals/by-zodiac/{sign}"},"data":{"crystals":[{"chakras":["solar-plexus","sacral"],"color":"yellow","description":"Merchant stone of wealth and prosperity","element":"fire","hardness":7,"healingProperties":["abundance","confidence","creativity","motivation"],"name":"Citrine","planets":["sun","jupiter"],"zodiacSigns":["aries","gemini","leo","libra"]},{"chakras":["crown"],"color":"clear","description":"Master healer and energy amplifier","element":"fire","hardness":7,"healingProperties":["clarity","amplification","healing","energy"],"name":"Clear Quartz","planets":["sun"],"zodiacSigns":["aries","leo"]}],"sign":"aries","system":"crystals"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again."}},"summary":"List the healing crystals and gemstones aligned to a given zodiac sign.","tags":["Crystals"]}},"/v2/crystals/catalog":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for response translation. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/crystals/catalog"},"data":{"crystals":[{"chakras":["third-eye","crown"],"color":"purple","description":"Stone of spiritual awareness and inner peace","element":"air","hardness":7,"healingProperties":["calming","intuition","sobriety","sleep"],"name":"Amethyst","planets":["jupiter","saturn"],"zodiacSigns":["pisces","aquarius"]},{"chakras":["heart"],"color":"pink","description":"Stone of unconditional love and infinite peace","element":"water","hardness":7,"healingProperties":["love","compassion","emotional-healing","self-worth"],"name":"Rose Quartz","planets":["venus"],"zodiacSigns":["taurus","libra"]}],"system":"crystals","total":52},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again."}},"summary":"Return the full crystal catalog with every stone's complete profile and the total count.","tags":["Crystals"]}},"/v2/crystals/cleansing":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for response translation. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/crystals/cleansing"},"data":{"methods":[{"description":"Place under full moonlight overnight","duration":"6-12 hours","method":"Moonlight","suitableFor":"all crystals"},{"description":"Hold under natural running water for a few minutes","duration":"1-3 minutes","method":"Running Water","suitableFor":"hard stones (Mohs 6+)"},{"description":"Pass through sage, palo santo, or incense smoke","duration":"30-60 seconds per stone","method":"Smudging","suitableFor":"all crystals"}],"system":"crystals"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again."}},"summary":"Get the recommended methods for cleansing and recharging crystals, with suitability and duration for each.","tags":["Crystals"]}},"/v2/crystals/compatibility":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for response translation. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"crystal1":"Rose Quartz","crystal2":"Amethyst"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/crystals/compatibility"},"data":{"compatibility":{"compatible":false,"crystal1":"Rose Quartz","crystal2":"Amethyst","reason":"no strong affinities found","score":50},"system":"crystals"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again."}},"summary":"Score how well two crystals work Vedika AI based on shared zodiac, planets, chakras, element and healing properties.","tags":["Crystals"]}},"/v2/crystals/healing":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for response translation. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"property":"protection"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/crystals/healing"},"data":{"crystals":[{"chakras":["root"],"color":"black","description":"Powerful grounding and protective stone","element":"earth","hardness":7.5,"healingProperties":["protection","grounding","EMF-shield","negativity-removal"],"name":"Black Tourmaline","planets":["saturn"],"zodiacSigns":["capricorn","scorpio"]},{"chakras":["solar-plexus","sacral"],"color":"golden-brown","description":"Stone of courage and personal power","element":"fire","hardness":7,"healingProperties":["courage","willpower","focus","protection"],"name":"Tiger Eye","planets":["sun","mars"],"zodiacSigns":["leo","capricorn"]}],"property":"protection","system":"crystals"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again."}},"summary":"Find the crystals that support a desired healing intention (e.g. love, protection, abundance).","tags":["Crystals"]}},"/v2/crystals/meditation":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for response translation. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"crystal":"Amethyst"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/crystals/meditation"},"data":{"meditation":{"chakra":"third-eye","crystal":"Amethyst","element":"air","guidance":"Place the crystal between your eyebrows. Visualize indigo light activating your intuition. Trust the visions and insights that arise.","healingFocus":["calming","intuition","sobriety","sleep"]},"system":"crystals"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Crystal not found: {name} (refunds the charge)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again."}},"summary":"Get crystal-specific meditation guidance, including the primary chakra to work with and the healing focus.","tags":["Crystals"]}},"/v2/crystals/properties/{name}":{"get":{"parameters":[{"description":"Crystal name, URL-encoded (e.g. Amethyst, Rose%20Quartz, Lapis%20Lazuli). Matched case-insensitively.","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for response translation. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/crystals/properties/{name}"},"data":{"crystal":{"chakras":["third-eye","crown"],"color":"purple","description":"Stone of spiritual awareness and inner peace","element":"air","hardness":7,"healingProperties":["calming","intuition","sobriety","sleep"],"name":"Amethyst","planets":["jupiter","saturn"],"zodiacSigns":["pisces","aquarius"]},"system":"crystals"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Crystal not found: {name} (refunds the charge)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again."}},"summary":"Get the full profile of a single crystal: zodiac, planets, chakras, healing properties, element, color and hardness.","tags":["Crystals"]}},"/v2/daily/angel-number":{"get":{"parameters":[{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/angel-number"},"data":{"date":"2026-05-15","message":"Angels are surrounding you","number":"444"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily angel number — a repeating number (111, 222, …) with its spiritual meaning for the day.","tags":["Daily Horoscope"]}},"/v2/daily/bundle":{"get":{"parameters":[{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/bundle"},"data":{"angelNumber":{"date":"2026-05-15","message":"Angels are surrounding you","number":"444"},"crystal":{"crystal":"Amethyst","date":"2026-05-15","usage":"Carry Amethyst today for its resonant energy."},"date":"2026-05-15","iching":{"date":"2026-05-15","hexagramNumber":29,"message":"Today's hexagram: #29. Refer to /v2/iching/hexagram/29 for full interpretation."},"mantra":{"date":"2026-05-15","instruction":"Chant Om Namah Shivaya 108 times during morning meditation.","mantra":"Om Namah Shivaya","repetitions":108},"moonPhase":{"date":"2026-05-15","dayInCycle":11,"illumination":"84%","phase":"Waxing Gibbous"},"rune":{"date":"2026-05-15","message":"Today's rune: Sowilo. Meditate on its meaning.","rune":"Sowilo"},"tarot":{"card":"The Star","date":"2026-05-15","message":"Today's card: The Star (Upright)","position":"Upright","reversed":false}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily content bundle — tarot, angel number, crystal, mantra, moon phase, rune and I Ching for the day in one call.","tags":["Daily Horoscope"]}},"/v2/daily/crystal":{"get":{"parameters":[{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/crystal"},"data":{"crystal":"Amethyst","date":"2026-05-15","usage":"Carry Amethyst today for its resonant energy."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily crystal recommendation — a healing crystal to carry with usage guidance for the day.","tags":["Daily Horoscope"]}},"/v2/daily/feed/{format}":{"get":{"parameters":[{"description":"Output format: 'json' (default JSON bundle) or 'rss'/'xml' (RSS feed with application/rss+xml content type).","in":"path","name":"format","required":true,"schema":{"type":"string"}},{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"angelNumber":{"date":"2026-05-15","message":"Angels are surrounding you","number":"444"},"crystal":{"crystal":"Amethyst","date":"2026-05-15","usage":"Carry Amethyst today for its resonant energy."},"date":"2026-05-15","iching":{"date":"2026-05-15","hexagramNumber":29,"message":"Today's hexagram: #29. Refer to /v2/iching/hexagram/29 for full interpretation."},"mantra":{"date":"2026-05-15","instruction":"Chant Om Namah Shivaya 108 times during morning meditation.","mantra":"Om Namah Shivaya","repetitions":108},"moonPhase":{"date":"2026-05-15","dayInCycle":11,"illumination":"84%","phase":"Waxing Gibbous"},"rune":{"date":"2026-05-15","message":"Today's rune: Sowilo. Meditate on its meaning.","rune":"Sowilo"},"tarot":{"card":"The Star","date":"2026-05-15","message":"Today's card: The Star (Upright)","position":"Upright","reversed":false}},"meta":{"generatedAt":"2026-05-15T06:30:00.000Z","source":"vedika-ephemeris","system":"bundle"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Feed generation failed (auto-refunded)"}},"summary":"White-label daily content feed — the full daily bundle rendered as JSON or as an RSS/XML feed for syndication.","tags":["Daily Horoscope"]}},"/v2/daily/horoscope/{sign}":{"get":{"parameters":[{"description":"Zodiac sign (lowercase). One of: aries, taurus, gemini, cancer, leo, virgo, libra, scorpio, sagittarius, capricorn, aquarius, pisces.","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/horoscope/{sign}"},"data":{"compatibleSign":"sagittarius","date":"2026-05-15","luckyColor":"Gold","luckyNumber":7,"prediction":"Today's focus is on career. Energy rating: 4/5. Lucky color: Gold, lucky number: 7. Compatible sign: sagittarius.","rating":4,"sign":"leo","theme":"career"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid zodiac sign (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily horoscope for a zodiac sign — theme, energy rating, lucky number/color and compatible sign for the day.","tags":["Daily Horoscope"]}},"/v2/daily/iching":{"get":{"parameters":[{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/iching"},"data":{"date":"2026-05-15","hexagramNumber":29,"message":"Today's hexagram: #29. Refer to /v2/iching/hexagram/29 for full interpretation."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily I Ching hexagram — the hexagram number (1-64) of the day with a pointer to its full interpretation.","tags":["Daily Horoscope"]}},"/v2/daily/mantra":{"get":{"parameters":[{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/mantra"},"data":{"date":"2026-05-15","instruction":"Chant Om Namah Shivaya 108 times during morning meditation.","mantra":"Om Namah Shivaya","repetitions":108},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily mantra — a sacred chant for the day with recommended repetitions and chanting guidance.","tags":["Daily Horoscope"]}},"/v2/daily/moon-phase":{"get":{"parameters":[{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/moon-phase"},"data":{"date":"2026-05-15","dayInCycle":11,"illumination":"84%","phase":"Waxing Gibbous"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily moon phase — the current lunar phase, day in the lunar cycle and illumination percentage for the date.","tags":["Daily Horoscope"]}},"/v2/daily/muhurta":{"get":{"parameters":[{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/muhurta"},"data":{"date":"2026-05-15","note":"For precise muhurta windows, use /v2/astrology/choghadiya with lat/lon.","tip":"Brahma Muhurta (96 min before sunrise) is universally auspicious."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily muhurta tip — auspicious timing guidance for the day. For precise location-based windows use /v2/astrology/choghadiya.","tags":["Daily Horoscope"]}},"/v2/daily/panchang":{"get":{"parameters":[{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/panchang"},"data":{"date":"2026-05-15","note":"For precise panchang data, use /v2/astrology/panchang with lat/lon.","tithi":"Ekadashi"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily panchang snapshot — the tithi (lunar day) for the date. For precise location-based panchang use /v2/astrology/panchang.","tags":["Daily Horoscope"]}},"/v2/daily/rune":{"get":{"parameters":[{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/rune"},"data":{"date":"2026-05-15","message":"Today's rune: Sowilo. Meditate on its meaning.","rune":"Sowilo"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily rune draw — a single Elder Futhark rune with a short meditation prompt for the day.","tags":["Daily Horoscope"]}},"/v2/daily/tarot":{"get":{"parameters":[{"description":"Target date in YYYY-MM-DD. Defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/daily/tarot"},"data":{"card":"The Star","date":"2026-05-15","message":"Today's card: The Star (Upright)","position":"Upright","reversed":false},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402/403 Subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (auto-refunded)"}},"summary":"Daily tarot card draw — a single Major Arcana card with upright/reversed position for the day.","tags":["Daily Horoscope"]}},"/v2/dreams/catalog":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* routes.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for translated output (31 supported). Also accepts ?langcode= / ?language=. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/dreams/catalog"},"data":{"symbols":[{"category":"animals","luckyNumbers":[7,14,21],"meaning":"Transformation, hidden fears, or healing. Shedding old skin for renewal.","relatedSymbols":["serpent","venom","shedding"],"sentiment":"mixed","symbol":"snake"},{"category":"water","luckyNumbers":[7,20,30],"meaning":"The vastness of emotions and the unconscious. Depth of feeling.","relatedSymbols":["sea","waves","beach"],"sentiment":"mixed","symbol":"ocean"}],"system":"dreams","total":214},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE (unknown ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"Retrieve the full dream-symbol catalog (200+ symbols with meanings, categories, sentiment, and lucky numbers).","tags":["Dreams"]}},"/v2/dreams/frequency":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* routes.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for translated output (31 supported). Also accepts ?langcode= / ?language=. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"entries":[{"date":"2026-05-01","description":"a snake near the water"},{"date":"2026-05-08","description":"snake in the garden"},{"date":"2026-05-10","description":"flying over the ocean"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/dreams/frequency"},"data":{"frequency":[{"count":2,"firstSeen":"2026-05-01","lastSeen":"2026-05-08","symbol":"snake","trend":"stable"},{"count":1,"firstSeen":"2026-05-10","lastSeen":"2026-05-10","symbol":"ocean","trend":"stable"},{"count":1,"firstSeen":"2026-05-10","lastSeen":"2026-05-10","symbol":"flying","trend":"stable"}],"system":"dreams"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE (unknown ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"Analyze a dream journal: counts how often each symbol recurs across dated entries, with first/last seen and a trend (increasing/decreasing/stable).","tags":["Dreams"]}},"/v2/dreams/interpret":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* routes.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for translated output (31 supported). Also accepts ?langcode= / ?language=. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"description":"I was being chased by a snake near the ocean and then started flying away"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/dreams/interpret"},"data":{"luckyNumbers":[1,7,14,17,20,21],"overallSentiment":"mixed","summary":"Your dream weaves Vedika AI 3 symbols (snake, ocean, flying). The dominant themes are animals, water, flying. Overall sentiment: mixed.","symbols":[{"category":"animals","luckyNumbers":[7,14,21],"meaning":"Transformation, hidden fears, or healing. Shedding old skin for renewal.","relatedSymbols":["serpent","venom","shedding"],"sentiment":"mixed","symbol":"snake"},{"category":"water","luckyNumbers":[7,20,30],"meaning":"The vastness of emotions and the unconscious. Depth of feeling.","relatedSymbols":["sea","waves","beach"],"sentiment":"mixed","symbol":"ocean"},{"category":"flying","luckyNumbers":[1,7,17],"meaning":"Freedom, ambition, and rising above limitations. Soaring to new heights.","relatedSymbols":["sky","wings","bird"],"sentiment":"positive","symbol":"flying"}],"system":"dreams","themes":["animals","water","flying"]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE (unknown ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"Interpret a free-text dream description: extracts known symbols, derives dominant themes, overall sentiment, a summary, and lucky numbers.","tags":["Dreams"]}},"/v2/dreams/lucky-numbers":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* routes.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for translated output (31 supported). Also accepts ?langcode= / ?language=. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"symbols":["snake","fish","moon"]}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/dreams/lucky-numbers"},"data":{"luckyNumbers":[2,7,8,14,16,18],"primaryNumber":7,"symbols":["snake","fish","moon"],"system":"dreams"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE (unknown ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"Derive a consolidated set of lucky numbers (plus a primary number) from a list of dream symbols.","tags":["Dreams"]}},"/v2/dreams/symbol/{symbol}":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* routes.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Dream symbol to look up, e.g. 'snake' or 'teeth falling out'. Case-insensitive, URL-encoded; matches exact then partial/related.","in":"path","name":"symbol","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for translated output (31 supported). Also accepts ?langcode= / ?language=. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/dreams/symbol/{symbol}"},"data":{"category":"animals","luckyNumbers":[7,14,21],"meaning":"Transformation, hidden fears, or healing. Shedding old skin for renewal.","relatedSymbols":["serpent","venom","shedding"],"sentiment":"mixed","symbol":"snake","system":"dreams"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE (unknown ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"Look up the meaning, sentiment, lucky numbers, and related symbols for a single dream symbol.","tags":["Dreams"]}},"/v2/dreams/themes":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* routes.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for translated output (31 supported). Also accepts ?langcode= / ?language=. Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/dreams/themes"},"data":{"system":"dreams","themes":[{"category":"animals","count":15,"description":"Animal symbols representing instincts and qualities"},{"category":"water","count":8,"description":"Water-related symbols reflecting emotions"},{"category":"celestial","count":3,"description":"Celestial symbols of guidance and aspiration"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE (unknown ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"List the dream-symbol theme categories with a per-category symbol count and description.","tags":["Dreams"]}},"/v2/geocode/resolve":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Opaque place identifier returned by /v2/geocode/search, format {countryCode}-{admin}-{nameSlug}-{cityId}, for example IN-16-Mumbai-1275339. Identifiers from other geocoders are not accepted.","example":"IN-16-Mumbai-1275339","in":"query","name":"placeId","required":true,"schema":{"type":"string"}},{"description":"ISO 8601 date or naive local datetime (e.g. 1942-08-15 or 1990-05-15T10:30). A naive value (no offset) is read as wall-clock local to the place's zone. When present, the response adds timezoneAtBirth resolved against the historical tz database.","example":"1990-05-15","in":"query","name":"birthDate","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"place":{"adminRegion":"Maharashtra","country":"India","countryCode":"IN","latitude":19.07283,"longitude":72.88261,"name":"Mumbai","placeId":"IN-16-Mumbai-1275339","population":12691836,"timezone":"Asia/Kolkata"},"success":true,"timezoneAtBirth":{"ianaZone":"Asia/Kolkata","isDst":false,"resolvedFor":"1990-05-15T05:00:00.000Z","utcOffsetMinutes":330,"utcOffsetString":"+05:30"}},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 BIRTH_DATE_INVALID (birthDate could not be parsed)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (missing/invalid API key)"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 GEOCODE_RATE_LIMIT"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 INTERNAL_ERROR"}},"summary":"Resolve a placeId from search into full city details and — when a birth date is supplied — the historically-correct UTC offset for that moment, so charts are accurate for births before timezone-rule changes.","tags":["Geocode"]}},"/v2/geocode/reverse":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Latitude in decimal degrees, -90 to 90.","in":"query","name":"lat","required":true,"schema":{"type":"number"}},{"description":"Longitude in decimal degrees, -180 to 180.","in":"query","name":"lng","required":true,"schema":{"type":"number"}},{"description":"Number of nearest cities to return, default 1, clamped to 1-10.","in":"query","name":"limit","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"count":1,"results":[{"adminRegion":"Maharashtra","country":"India","countryCode":"IN","distanceKm":1.842,"latitude":19.07283,"longitude":72.88261,"name":"Mumbai","placeId":"IN-16-Mumbai-1275339","population":12691836,"timezone":"Asia/Kolkata"}],"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 LNG_INVALID (lng out of -180..180)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (missing/invalid API key)"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 GEOCODE_RATE_LIMIT"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 INTERNAL_ERROR"}},"summary":"Reverse geocode coordinates into the nearest known city / cities (with distance in km, timezone and admin region) — useful for turning a device GPS fix into a named birth or current location.","tags":["Geocode"]}},"/v2/geocode/search":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Also accepted as Authorization: Bearer <key>.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Search text, 2-80 characters (normalised, diacritic-insensitive). Matches city name or alt-names by prefix; well-known historical aliases (Bombay, Calcutta, Madras, Leningrad, etc.) resolve to the modern city.","in":"query","name":"q","required":true,"schema":{"type":"string"}},{"description":"Max results, default 10, clamped to 1-25.","in":"query","name":"limit","required":false,"schema":{"type":"integer"}},{"description":"ISO 3166-1 alpha-2 country code (case-insensitive) to narrow results, e.g. IN, US.","in":"query","name":"country","required":false,"schema":{"type":"string"}},{"description":"Only return cities with population >= this value, default 0.","in":"query","name":"minPopulation","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"count":2,"results":[{"adminRegion":"Maharashtra","country":"India","countryCode":"IN","latitude":19.07283,"longitude":72.88261,"name":"Mumbai","placeId":"IN-16-Mumbai-1275339","population":12691836,"timezone":"Asia/Kolkata"},{"adminRegion":"Maharashtra","country":"India","countryCode":"IN","latitude":19.13,"longitude":72.85,"name":"Mumbai Suburban","placeId":"IN-16-MumbaiSuburban-7707530","population":9356962,"timezone":"Asia/Kolkata"}],"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 QUERY_TOO_LONG (q over 80 chars)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (missing/invalid API key)"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 GEOCODE_RATE_LIMIT (over 60 requests/min per API key, independent of tier)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 INTERNAL_ERROR"}},"summary":"City autocomplete — type a partial place name and get matching cities ranked by population, with coordinates and timezone, to drive birth-place pickers.","tags":["Geocode"]}},"/v2/health/ayurvedic-type":{"post":{"parameters":[{"description":"Bearer <API key> (vk_live_* / vk_ent_*). x-api-key also accepted (deprecated).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language code.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/health/ayurvedic-type"},"data":{"ayurvedicType":{"avoidFoods":["Spicy food","Sour foods","Fermented items","Alcohol","Excessive salt"],"balancingFoods":["Cooling fruits","Leafy greens","Coconut","Cucumber","Mint","Sweet foods"],"characteristics":["Medium build","Sharp intellect","Strong digestion","Warm body","Prone to inflammation","Ambitious"],"constitution":"Pitta-Kapha","primaryDosha":"Pitta","secondaryDosha":"Kapha"},"system":"health-astrology"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (YYYY-MM-DD) — refunded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 missing/invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 TEST_KEY_REJECTED / subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed — refunded"}},"summary":"Determine your Ayurvedic constitution (Vata/Pitta/Kapha) with characteristics and balancing/avoid foods.","tags":["Health"]}},"/v2/health/chakra":{"post":{"parameters":[{"description":"Bearer <API key> (vk_live_* / vk_ent_*). x-api-key also accepted (deprecated).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language code.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/health/chakra"},"data":{"chakras":[{"color":"Red","element":"Earth","name":"Root","planet":"Saturn","recommendation":"Root chakra appears balanced. Maintain with regular practice.","sanskritName":"Muladhara","status":"balanced"},{"color":"Green","element":"Air","name":"Heart","planet":"Venus","recommendation":"Heart chakra may need strengthening. Use Green visualization, Air element practices.","sanskritName":"Anahata","status":"underactive"}],"system":"health-astrology"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (YYYY-MM-DD) — refunded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 missing/invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 TEST_KEY_REJECTED / subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed — refunded"}},"summary":"Analyze the seven chakras' balance via their ruling planets, with status, element, color and recommendation.","tags":["Health"]}},"/v2/health/diet":{"post":{"parameters":[{"description":"Bearer <API key> (vk_live_* / vk_ent_*). x-api-key also accepted (deprecated).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language code.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/health/diet"},"data":{"diet":{"avoid":["Spicy food","Sour foods","Fermented items","Alcohol","Excessive salt"],"dosha":"Pitta-Kapha","foods":[{"category":"Recommended","items":["Cooling fruits","Leafy greens","Coconut","Cucumber","Mint","Sweet foods"]},{"category":"Spices","items":["Coriander","Fennel","Turmeric"]}],"mealTiming":["Breakfast: 7:00-8:00 AM (warm, nourishing)","Lunch: 12:00-1:00 PM (largest meal, strongest agni)","Dinner: 6:00-7:00 PM (light, easy to digest)"],"seasonalTip":"Pitta: Emphasize cooling foods, coconut water, and bitter greens to balance summer Pitta."},"system":"health-astrology"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (YYYY-MM-DD) — refunded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 missing/invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 TEST_KEY_REJECTED / subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed — refunded"}},"summary":"Provide a dosha- and season-aware diet plan: recommended foods, spices, foods to avoid and meal timing.","tags":["Health"]}},"/v2/health/mental-wellness":{"post":{"parameters":[{"description":"Bearer <API key> (vk_live_* / vk_ent_*). x-api-key also accepted (deprecated).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language code.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/health/mental-wellness"},"data":{"mentalWellness":{"mercuryStrength":"Strong","moonStrength":"Strong","overallScore":70,"recommendations":["Daily meditation (at least 10 minutes)","Regular sleep schedule aligned with natural rhythms"],"stressFactors":["No major afflictions detected"]},"system":"health-astrology"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (YYYY-MM-DD) — refunded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 missing/invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 TEST_KEY_REJECTED / subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed — refunded"}},"summary":"Assess mental wellness from Moon and Mercury strength with a score, stress factors and recommendations.","tags":["Health"]}},"/v2/health/remedies":{"post":{"parameters":[{"description":"Bearer <API key> (vk_live_* / vk_ent_*). x-api-key also accepted (deprecated).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language code.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"weakPlanets":["Saturn","Rahu"]}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/health/remedies"},"data":{"remedies":[{"foods":["Black sesame","Mustard oil"],"gemstone":"Blue Sapphire","lifestyle":["Saturday fasting","Oil donation"],"mantra":"Om Shanaischaraya Namah","planet":"Saturn"},{"foods":["Coconut","Radish"],"gemstone":"Hessonite","lifestyle":["Rahu Kaal prayer","Donate blankets"],"mantra":"Om Rahave Namah","planet":"Rahu"}],"system":"health-astrology"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 missing/invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 TEST_KEY_REJECTED / subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed — refunded"}},"summary":"Get gemstone, mantra, dietary and lifestyle remedies for weak or afflicted planets affecting health.","tags":["Health"]}},"/v2/health/timing":{"post":{"parameters":[{"description":"Bearer <API key> (vk_live_* / vk_ent_*). x-api-key also accepted (deprecated).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language code.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/health/timing"},"data":{"sensitivesPeriods":[{"advice":"Summer Pitta aggravation — stay hydrated, avoid excess heat, cooling foods","endDate":"2026-08-31","planet":"Sun","severity":"low","startDate":"2026-06-01","vulnerability":"heat-related issues, blood pressure"}],"system":"health-astrology"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (YYYY-MM-DD) — refunded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 missing/invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 TEST_KEY_REJECTED / subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed — refunded"}},"summary":"Forecast health-sensitive life periods (Saturn return, Rahu cycle, seasonal Pitta) with timing and advice.","tags":["Health"]}},"/v2/health/vulnerabilities":{"post":{"parameters":[{"description":"Bearer <API key> (vk_live_* / vk_ent_*). The x-api-key header is also accepted but deprecated.","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language code (31 languages, e.g. hi, ta). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/health/vulnerabilities"},"data":{"system":"health-astrology","vulnerabilities":[{"bodyParts":["Scorpio bodyArea"],"description":"6th house in Libra: prone to kidney stones, lower back pain","house":6,"planet":"Sixth House","severity":"moderate","sign":"Libra"},{"bodyParts":["Reproductive & Excretory"],"description":"8th house in Sagittarius: watch for sciatica, liver issues","house":8,"planet":"Eighth House","severity":"high","sign":"Sagittarius"},{"bodyParts":["Head & Face"],"description":"Lagna in Aries: general sensitivity to headaches","house":1,"planet":"Ascendant","severity":"low","sign":"Aries"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (YYYY-MM-DD) — calculator error, charge refunded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 missing/invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 TEST_KEY_REJECTED / subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed — charge refunded"}},"summary":"Identify health body-areas your birth chart is most sensitive to (6th/8th house and ascendant analysis).","tags":["Health"]}},"/v2/health/yoga-recommendation":{"post":{"parameters":[{"description":"Bearer <API key> (vk_live_* / vk_ent_*). x-api-key also accepted (deprecated).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Optional response language code.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":19.07,"longitude":72.87,"timeOfBirth":"10:30","timezone":5.5}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/health/yoga-recommendation"},"data":{"system":"health-astrology","yoga":{"bestTime":"6:00-7:00 AM or 6:00-7:00 PM","cautions":["Avoid heated rooms","Do not push competitively"],"duration":"45-60 minutes (moderate)","poses":["Cooling pranayama (Sheetali)","Forward bends","Gentle twists","Meditation"],"pranayama":["Sheetali"],"primaryStyle":"Moon salutation"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 dateOfBirth is required (YYYY-MM-DD) — refunded"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 missing/invalid API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 TEST_KEY_REJECTED / subscription gate"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed — refunded"}},"summary":"Recommend a yoga style, poses, pranayama, timing and cautions tailored to your Ayurvedic dosha.","tags":["Health"]}},"/v2/human-design/authority":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"human-design","charged":1,"currency":"USD","endpoint":"/v2/human-design/authority"},"data":{"authority":"Emotional (Solar Plexus)","system":"human-design","type":"Manifesting Generator"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE_UNSUPPORTED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (invalid/missing API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failure, auto-refunded)"}},"summary":"Return the Human Design inner Authority — the reliable internal source (Emotional, Sacral, Splenic, Ego, Self-Projected, Mental, or Lunar) a person should trust for correct decisions.","tags":["Human Design"]}},"/v2/human-design/centers":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"human-design","charged":1,"currency":"USD","endpoint":"/v2/human-design/centers"},"data":{"defined":[{"defined":true,"gates":[16,35],"name":"Throat","theme":"Consistent communication"},{"defined":true,"gates":[34,5],"name":"Sacral","theme":"Sustainable life force"}],"definedCount":2,"system":"human-design","undefined":[{"defined":false,"gates":[64],"name":"Head","theme":"Amplified inspiration"},{"defined":false,"gates":[],"name":"Ajna","theme":"Open-minded"}],"undefinedCount":7},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE_UNSUPPORTED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (invalid/missing API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failure, auto-refunded)"}},"summary":"Return the nine Human Design energy Centers split into defined (consistent) and undefined (open) groups, each with its active gates, theme, and counts.","tags":["Human Design"]}},"/v2/human-design/channels":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"human-design","charged":1,"currency":"USD","endpoint":"/v2/human-design/channels"},"data":{"activeChannels":[{"gates":[34,57],"id":"34-57","name":"Power","type":"Individual"},{"gates":[1,8],"id":"1-8","name":"Inspiration","type":"Individual"}],"system":"human-design","totalActive":2},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE_UNSUPPORTED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (invalid/missing API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failure, auto-refunded)"}},"summary":"Return the active Human Design Channels (gate pairs that are both activated, forming defined energy circuits) with channel id, name, gates, circuit type, and total count.","tags":["Human Design"]}},"/v2/human-design/chart":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation (31 languages, e.g. hi, ta).","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"human-design","charged":1,"currency":"USD","endpoint":"/v2/human-design/chart"},"data":{"activeChannels":[{"gates":[34,57],"id":"34-57","name":"Power","type":"Individual"}],"activeGates":[{"center":"Throat","color":2,"iChingHexagram":35,"line":4,"name":"Progress","number":35},{"center":"Sacral","color":3,"iChingHexagram":5,"line":1,"name":"Waiting","number":5}],"authority":"Emotional (Solar Plexus)","definedCenters":[{"defined":true,"gates":[16,35],"name":"Throat","theme":"Consistent communication"},{"defined":true,"gates":[34,5],"name":"Sacral","theme":"Sustainable life force"}],"designSun":{"center":"Throat","color":5,"iChingHexagram":16,"line":1,"name":"Enthusiasm","number":16},"incarnationCross":"Right Angle Cross of Progress","personalitySun":{"center":"Throat","color":2,"iChingHexagram":35,"line":4,"name":"Progress","number":35},"profile":{"description":"Solid foundation through trial and error","line1":1,"line2":3,"name":"Investigator / Martyr"},"strategy":"Wait to respond, then inform","system":"human-design","type":"Manifesting Generator","undefinedCenters":[{"defined":false,"gates":[64],"name":"Head","theme":"Amplified inspiration"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE_UNSUPPORTED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (invalid/missing API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failure, auto-refunded)"}},"summary":"Generate a complete Human Design BodyGraph: energy Type, Strategy, Authority, Profile, defined/undefined Centers, active Gates and Channels, and Incarnation Cross from birth data.","tags":["Human Design"]}},"/v2/human-design/compatibility":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-08-22T14:00:00","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"},"male":{"datetime":"1990-05-15T10:30:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"human-design","charged":1,"currency":"USD","endpoint":"/v2/human-design/compatibility"},"data":{"companionChannels":[{"gates":[34,57],"id":"34-57","name":"Power","type":"Individual"}],"electromagneticConnections":[{"gates":[1,8],"id":"1-8","name":"Inspiration","type":"Individual"}],"score":65,"summary":"1 electromagnetic connections, 1 companion channels","system":"human-design","typeCompatibility":{"description":"Generator-Projector: classic recognition + response dynamic","score":40}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (Invalid female birth details)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (invalid/missing API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failure, auto-refunded)"}},"summary":"Compare two BodyGraphs and return their Human Design relationship dynamics: electromagnetic connections, companion (shared) channels, type compatibility, and an overall connection score.","tags":["Human Design"]}},"/v2/human-design/gates":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"human-design","charged":1,"currency":"USD","endpoint":"/v2/human-design/gates"},"data":{"activeGates":[{"center":"Throat","color":2,"iChingHexagram":35,"line":4,"name":"Progress","number":35},{"center":"Sacral","color":3,"iChingHexagram":5,"line":1,"name":"Waiting","number":5},{"center":"Throat","color":5,"iChingHexagram":16,"line":1,"name":"Enthusiasm","number":16}],"designSun":{"center":"Throat","color":5,"iChingHexagram":16,"line":1,"name":"Enthusiasm","number":16},"personalitySun":{"center":"Throat","color":2,"iChingHexagram":35,"line":4,"name":"Progress","number":35},"system":"human-design","totalActive":3},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE_UNSUPPORTED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (invalid/missing API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failure, auto-refunded)"}},"summary":"Return all active Human Design Gates (each mapped to an I Ching hexagram, center, line, and color), with the Personality and Design Sun gates and the total active count.","tags":["Human Design"]}},"/v2/human-design/profile":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"human-design","charged":1,"currency":"USD","endpoint":"/v2/human-design/profile"},"data":{"designSunLine":3,"personalitySunLine":1,"profile":{"description":"Solid foundation through trial and error","line1":1,"line2":3,"name":"Investigator / Martyr"},"system":"human-design"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE_UNSUPPORTED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (invalid/missing API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failure, auto-refunded)"}},"summary":"Return the Human Design Profile (the two-line personality archetype, e.g. 1/3 Investigator / Martyr) plus the conscious (Personality) and unconscious (Design) Sun lines it derives from.","tags":["Human Design"]}},"/v2/human-design/strategy":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"human-design","charged":1,"currency":"USD","endpoint":"/v2/human-design/strategy"},"data":{"strategy":"Wait to respond, then inform","system":"human-design","type":"Manifesting Generator"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE_UNSUPPORTED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (invalid/missing API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failure, auto-refunded)"}},"summary":"Return the Human Design decision-making Strategy (how this person is designed to engage with life) along with their Type.","tags":["Human Design"]}},"/v2/human-design/transit":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"transitDate":"2026-06-14T12:00:00Z"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"human-design","charged":1,"currency":"USD","endpoint":"/v2/human-design/transit"},"data":{"activeTransitGates":[12,11],"earth":{"center":"Ajna","color":2,"iChingHexagram":11,"line":3,"name":"Peace","number":11},"sun":{"center":"Throat","color":2,"iChingHexagram":12,"line":3,"name":"Standstill","number":12},"system":"human-design","transitDate":"2026-06-14T12:00:00.000Z"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (invalid/missing API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failure, auto-refunded)"}},"summary":"Return the current (or a specified date's) Human Design transit Sun and Earth gates plus the active transit gate numbers — no birth data required.","tags":["Human Design"]}},"/v2/human-design/type":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.076,"longitude":72.8777,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"human-design","charged":1,"currency":"USD","endpoint":"/v2/human-design/type"},"data":{"notSelfTheme":"Frustration / Anger","signature":"Satisfaction","strategy":"Wait to respond, then inform","system":"human-design","type":"Manifesting Generator"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE_UNSUPPORTED"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (invalid/missing API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failure, auto-refunded)"}},"summary":"Return the core Human Design energy Type along with its Strategy, Signature (aligned state), and Not-Self theme.","tags":["Human Design"]}},"/v2/iching/cast":{"post":{"parameters":[{"description":"API key for authentication (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation of the response (31 languages).","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"seed":12345}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/iching/cast"},"data":{"changingLines":[{"meaning":"Third position: transition point. Beware of overreaching or conflict.","position":3,"value":9},{"meaning":"Fourth position: near the top. Diplomacy and caution serve well.","position":4,"value":6}],"hexagram":{"chineseName":"乾","element":"Metal","image":"Heaven, in its motion, (gives the idea of) strength. The superior man, in accordance with this, nerves himself to ceaseless activity.","judgment":"Khien (represents) what is great and originating, penetrating, advantageous, correct and firm.","keywords":["creative power","initiative","strength"],"name":"The Creative","number":1,"trigrams":{"lower":"Qian","upper":"Qian"}},"lines":[7,8,9,6,7,8],"method":"three-coin","resultingHexagram":{"chineseName":"坤","element":"Earth","image":"The (capacity and sustaining) power of the earth is what is denoted by Khwăn...","judgment":"Khwăn (represents) what is great and originating...","keywords":["receptivity","yielding","devotion"],"name":"The Receptive","number":2,"trigrams":{"lower":"Kun","upper":"Kun"}},"system":"iching"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Cast an I Ching hexagram using the three-coin method, with changing lines and resulting hexagram.","tags":["iching"]}},"/v2/iching/changing-lines":{"post":{"parameters":[{"description":"API key for authentication (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation of the response.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"lines":[7,8,9,6,7,8]}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/iching/changing-lines"},"data":{"changingLines":[{"meaning":"Third position: transition point. Beware of overreaching or conflict.","position":3,"value":9},{"meaning":"Fourth position: near the top. Diplomacy and caution serve well.","position":4,"value":6}],"hasChanges":true,"lines":[7,8,9,6,7,8],"resultingHexagram":{"chineseName":"坤","element":"Earth","image":"The (capacity and sustaining) power of the earth...","judgment":"Khwăn (represents) what is great and originating...","keywords":["receptivity","yielding","devotion"],"name":"The Receptive","number":2,"trigrams":{"lower":"Kun","upper":"Kun"}},"system":"iching"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Analyze the changing lines of a hexagram cast and derive the resulting hexagram.","tags":["iching"]}},"/v2/iching/compatibility":{"post":{"parameters":[{"description":"API key for authentication (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation of the response.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"hexagram1":1,"hexagram2":2}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/iching/compatibility"},"data":{"compatibility":"Generally compatible; constructive interaction.","hexagram1":{"chineseName":"乾","element":"Metal","image":"Heaven, in its motion...","judgment":"Khien (represents) what is great and originating...","keywords":["creative power","initiative","strength"],"name":"The Creative","number":1,"trigrams":{"lower":"Qian","upper":"Qian"}},"hexagram2":{"chineseName":"坤","element":"Earth","image":"...","judgment":"Khwăn...","keywords":["receptivity","yielding","devotion"],"name":"The Receptive","number":2,"trigrams":{"lower":"Kun","upper":"Kun"}},"score":70,"system":"iching"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 hexagram1 and hexagram2 must be integers 1-64"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Compare the energies of two hexagrams (1-64) and get an elemental compatibility score.","tags":["iching"]}},"/v2/iching/daily":{"get":{"parameters":[{"description":"API key for authentication (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional date in YYYY-MM-DD format; defaults to today (UTC).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Optional language code for cached translation of the response.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/iching/daily"},"data":{"changingLines":[{"meaning":"Fourth position: near the top. Diplomacy and caution serve well.","position":4,"value":9},{"meaning":"Top line: culmination. Things may reverse; exercise restraint.","position":6,"value":6}],"date":"2026-06-14","hexagram":{"chineseName":"解","element":"Wood","image":"(The trigram representing) thunder and that for rain...","judgment":"In (the state indicated by) Kieh advantage will be found in the south-west...","keywords":["liberation","release","resolution"],"name":"Deliverance","number":40,"trigrams":{"lower":"Kan","upper":"Zhen"}},"lines":[8,7,8,9,8,6],"period":"daily","resultingHexagram":{"chineseName":"師","element":"Earth","image":"...","judgment":"Sze indicates how...","keywords":["discipline","leadership","organization"],"name":"The Army","number":7,"trigrams":{"lower":"Kan","upper":"Kun"}},"system":"iching"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Get the deterministic I Ching hexagram of the day (same date always yields the same reading).","tags":["iching"]}},"/v2/iching/hexagram/{number}":{"get":{"parameters":[{"description":"API key for authentication (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"King Wen hexagram number, integer 1-64.","in":"path","name":"number","required":true,"schema":{"type":"integer"}},{"description":"Optional language code for cached translation of the response.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/iching/hexagram/{number}"},"data":{"hexagram":{"chineseName":"乾","element":"Metal","image":"Heaven, in its motion, (gives the idea of) strength. The superior man, in accordance with this, nerves himself to ceaseless activity.","judgment":"Khien (represents) what is great and originating, penetrating, advantageous, correct and firm.","keywords":["creative power","initiative","strength"],"name":"The Creative","number":1,"trigrams":{"lower":"Qian","upper":"Qian"}},"system":"iching"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Hexagram number must be an integer between 1 and 64"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Look up a single I Ching hexagram by its King Wen number (1-64).","tags":["iching"]}},"/v2/iching/interpretation":{"post":{"parameters":[{"description":"API key for authentication (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation of the response.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"What should I focus on this month?","seed":12345}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/iching/interpretation"},"data":{"changingLineCount":1,"changingLines":[{"meaning":"Third position: transition point. Beware of overreaching or conflict.","position":3,"value":9}],"hexagram":{"chineseName":"乾","element":"Metal","image":"Heaven, in its motion, (gives the idea of) strength...","judgment":"Khien (represents) what is great and originating, penetrating, advantageous, correct and firm.","keywords":["creative power","initiative","strength"],"name":"The Creative","number":1,"trigrams":{"lower":"Qian","upper":"Qian"}},"lines":[7,8,9,6,7,8],"method":"three-coin-interpretation","question":"What should I focus on this month?","readingFocus":"Pay attention to the changing line meanings for specific guidance.","resultingHexagram":{"chineseName":"坤","element":"Earth","image":"...","judgment":"Khwăn...","keywords":["receptivity","yielding","devotion"],"name":"The Receptive","number":2,"trigrams":{"lower":"Kun","upper":"Kun"}},"system":"iching"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 A question is required for interpretation"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Full I Ching reading for a question: hexagram, changing lines, resulting hexagram and reading focus.","tags":["iching"]}},"/v2/iching/question":{"post":{"parameters":[{"description":"API key for authentication (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation of the response.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"Should I take the new job offer?","seed":12345}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/iching/question"},"data":{"changingLines":[{"meaning":"Third position: transition point. Beware of overreaching or conflict.","position":3,"value":9}],"hexagram":{"chineseName":"乾","element":"Metal","image":"Heaven, in its motion, (gives the idea of) strength...","judgment":"Khien (represents) what is great and originating, penetrating, advantageous, correct and firm.","keywords":["creative power","initiative","strength"],"name":"The Creative","number":1,"trigrams":{"lower":"Qian","upper":"Qian"}},"lines":[7,8,9,6,7,8],"question":"Should I take the new job offer?","resultingHexagram":{"chineseName":"坤","element":"Earth","image":"The (capacity and sustaining) power of the earth...","judgment":"Khwăn (represents) what is great and originating...","keywords":["receptivity","yielding","devotion"],"name":"The Receptive","number":2,"trigrams":{"lower":"Kun","upper":"Kun"}},"system":"iching"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 A question is required for this reading"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"Cast an I Ching hexagram in the context of a specific question for focused guidance.","tags":["iching"]}},"/v2/iching/trigrams":{"get":{"parameters":[{"description":"API key for authentication (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for cached translation of the response.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/iching/trigrams"},"data":{"count":8,"system":"iching","trigrams":[{"attribute":"Heaven","chinese":"乾","element":"Metal","image":"The Creative","lines":[1,1,1],"name":"Qian"},{"attribute":"Earth","chinese":"坤","element":"Earth","image":"The Receptive","lines":[0,0,0],"name":"Kun"},{"attribute":"Thunder","chinese":"震","element":"Wood","image":"The Arousing","lines":[1,0,0],"name":"Zhen"},{"attribute":"Wind","chinese":"巽","element":"Wood","image":"The Gentle","lines":[0,1,1],"name":"Xun"},{"attribute":"Water","chinese":"坎","element":"Water","image":"The Abysmal","lines":[0,1,0],"name":"Kan"},{"attribute":"Fire","chinese":"離","element":"Fire","image":"The Clinging","lines":[1,0,1],"name":"Li"},{"attribute":"Mountain","chinese":"艮","element":"Earth","image":"Keeping Still","lines":[0,0,1],"name":"Gen"},{"attribute":"Lake","chinese":"兌","element":"Metal","image":"The Joyous","lines":[1,1,0],"name":"Dui"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed"}},"summary":"List all eight trigrams (Bagua) with their attributes, elements and images.","tags":["iching"]}},"/v2/lenormand/card/{name}":{"get":{"parameters":[{"description":"Card name, case-insensitive (e.g. Rider, Clover, Ship, Gentleman, Lady). URL-encode if needed.","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"API key authenticating the account and wallet.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 supported). Unknown code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/lenormand/card/{name}"},"data":{"card":{"combinations":{"10":"Unexpected change in plans","13":"News about a child","2":"Lucky news","3":"News about a journey","36":"The final message arrives","4":"News about home","7":"Deceptive message"},"id":1,"keyword":"News","meaning":"Good news arriving, a visitor, swift movement, an active young person","name":"Rider","number":1,"playingCard":"9H","reversedMeaning":"Delayed news, cancellation, stagnation"},"system":"lenormand"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"Look up the full meaning, reversed meaning, playing-card association, and combinations for a single named Lenormand card.","tags":["Lenormand"]}},"/v2/lenormand/combination":{"post":{"parameters":[{"description":"API key authenticating the account and wallet.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 supported). Unknown code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"cardA":"Rider","cardB":4}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/lenormand/combination"},"data":{"combination":{"cardA":{"combinations":{"4":"News about home"},"id":1,"keyword":"News","meaning":"Good news arriving, a visitor, swift movement, an active young person","name":"Rider","number":1,"playingCard":"9H","reversedMeaning":"Delayed news, cancellation, stagnation"},"cardB":{"combinations":{"3":"Moving abroad"},"id":4,"keyword":"Home","meaning":"Home, family, stability, real estate, traditions, security","name":"House","number":4,"playingCard":"KH","reversedMeaning":"Domestic unrest, feeling trapped, property problems"},"meaning":"News about home"},"system":"lenormand"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"Get the traditional pair-combination meaning produced when two Lenormand cards sit adjacent in a reading.","tags":["Lenormand"]}},"/v2/lenormand/draw/grand-tableau":{"post":{"parameters":[{"description":"API key authenticating the account and wallet.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 supported). Unknown code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"seed":"tableau-2026","significatorId":29}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/lenormand/draw/grand-tableau"},"data":{"reading":{"cards":[{"card":{"combinations":{"28":"Soul mate connection","34":"Financial aspirations"},"id":16,"keyword":"Hope","meaning":"Hope, inspiration, guidance, technology, spirituality, clarity","name":"Stars","number":16,"playingCard":"6H","reversedMeaning":"Lost hope, confusion, lack of direction"},"position":{"index":0,"meaning":"Position 1 in the Grand Tableau","name":"Row 1 (Present) - Column 1"}}],"cornerCards":[{"combinations":{},"id":16,"keyword":"Hope","meaning":"Hope, inspiration, guidance, technology, spirituality, clarity","name":"Stars","number":16,"playingCard":"6H","reversedMeaning":"Lost hope, confusion, lack of direction"}],"farCards":[{"combinations":{"28":"Relationship ending"},"id":8,"keyword":"Ending","meaning":"Ending, transformation, loss, grief, closure, finality","name":"Coffin","number":8,"playingCard":"9D","reversedMeaning":"Resurrection, refusal to let go, prolonged ending"}],"nearCards":[{"combinations":{"28":"Loyal partner"},"id":18,"keyword":"Loyalty","meaning":"Loyalty, friendship, trust, a faithful companion, following","name":"Dog","number":18,"playingCard":"10H","reversedMeaning":"Disloyalty, fair-weather friend, broken trust"}],"significator":{"combinations":{"24":"Woman in love","28":"Couple Vedika AI"},"id":29,"keyword":"Woman","meaning":"Female querent (or significant female), the self for female readings","name":"Lady","number":29,"playingCard":"AS","reversedMeaning":"Unreliable woman, weak feminine energy"},"timestamp":"2026-06-14T10:30:00.000Z"},"system":"lenormand"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"Lay out all 36 cards in the Grand Tableau and identify the cards near, far, and at the corners of the chosen significator.","tags":["Lenormand"]}},"/v2/lenormand/draw/single":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*) authenticating the account and wallet.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional 2-letter language code for translated output (31 supported, e.g. hi, ta, fr). Unknown code returns 400. Omit for English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"Will my new venture succeed?","seed":"venture-2026"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/lenormand/draw/single"},"data":{"reading":{"cards":[{"card":{"combinations":{"1":"Lucky message","15":"Tempting but risky luck","34":"Financial luck","4":"Lucky home life","7":"False luck"},"id":2,"keyword":"Luck","meaning":"Small luck, opportunity, lighthearted moments, a brief fortunate period","name":"Clover","number":2,"playingCard":"6D","reversedMeaning":"Missed opportunity, fleeting luck, carelessness"},"position":{"index":0,"meaning":"Your card for this question","name":"Single Draw"}}],"question":"Will my new venture succeed?","timestamp":"2026-06-14T10:30:00.000Z"},"system":"lenormand"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE (unknown ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED (v2 subscription gate)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"Draw a single Lenormand card to answer a focused yes/no or guidance question.","tags":["Lenormand"]}},"/v2/lenormand/draw/three":{"post":{"parameters":[{"description":"API key authenticating the account and wallet.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 supported). Unknown code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"How will this relationship develop?","seed":"reading-42"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/lenormand/draw/three"},"data":{"reading":{"cards":[{"card":{"combinations":{"2":"Lucky news","3":"News about a journey"},"id":1,"keyword":"News","meaning":"Good news arriving, a visitor, swift movement, an active young person","name":"Rider","number":1,"playingCard":"9H","reversedMeaning":"Delayed news, cancellation, stagnation"},"position":{"index":0,"meaning":"Past / Context","name":"Past / Context"}},{"card":{"combinations":{"1":"Pleasant surprise","28":"Love offering"},"id":9,"keyword":"Gift","meaning":"Gift, invitation, happiness, gratitude, beauty, charm","name":"Bouquet","number":9,"playingCard":"QS","reversedMeaning":"Rejected gift, false flattery, superficiality"},"position":{"index":1,"meaning":"Present / Focus","name":"Present / Focus"}},{"card":{"combinations":{"24":"Man in love","29":"Couple Vedika AI"},"id":28,"keyword":"Man","meaning":"Male querent (or significant male), the self for male readings","name":"Gentleman","number":28,"playingCard":"AH","reversedMeaning":"Unreliable man, weak masculine energy"},"position":{"index":2,"meaning":"Future / Outcome","name":"Future / Outcome"}}],"combinationMeanings":["Pleasant surprise","Love offering"],"question":"How will this relationship develop?","timestamp":"2026-06-14T10:30:00.000Z"},"system":"lenormand"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 UNSUPPORTED_LANGUAGE"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 INVALID_API_KEY"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (charge refunded)"}},"summary":"Draw a three-card line (past/present/future) with the pair-combination sentences read between adjacent cards.","tags":["Lenormand"]}},"/v2/lifestyle/fortune-cookie":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/lifestyle/fortune-cookie"},"data":{"date":"2026-06-14","fortune":"Trust the timing of your life. Everything arrives precisely when it should."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (auto-refunded)"}},"summary":"Get today's fortune cookie message (rotates daily).","tags":["Lifestyle"]}},"/v2/lifestyle/love-compatibility/{sign1}/{sign2}":{"get":{"parameters":[{"description":"First zodiac sign (lowercase). One of: aries, taurus, gemini, cancer, leo, virgo, libra, scorpio, sagittarius, capricorn, aquarius, pisces.","in":"path","name":"sign1","required":true,"schema":{"type":"string"}},{"description":"Second zodiac sign (lowercase). Same valid set as sign1.","in":"path","name":"sign2","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Optional idempotency key to safely retry a charged request without double-billing. The key is remembered for 7 days; a retry after that window is treated as a new request and charged again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/lifestyle/love-compatibility/{sign1}/{sign2}"},"data":{"chemistry":"Intense","score":95,"sign1":"leo","sign2":"aries","summary":"leo and aries: 95% compatibility (Intense)."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_ZODIAC_SIGN (invalid sign1 or sign2 — auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (auto-refunded)"}},"summary":"Get the love compatibility score and chemistry verdict between two zodiac signs.","tags":["Lifestyle"]}},"/v2/lifestyle/lucky-color-today/{sign}":{"get":{"parameters":[{"description":"Zodiac sign (lowercase). One of the 12: aries…pisces.","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Optional idempotency key to safely retry a charged request without double-billing. The key is remembered for 7 days; a retry after that window is treated as a new request and charged again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/lifestyle/lucky-color-today/{sign}"},"data":{"allColors":["Electric Blue","Silver","Violet"],"color":"Silver","sign":"aquarius"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_ZODIAC_SIGN (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (auto-refunded)"}},"summary":"Get today's lucky color for a zodiac sign plus its full lucky-color palette.","tags":["Lifestyle"]}},"/v2/lifestyle/spirit-animal/{sign}":{"get":{"parameters":[{"description":"Zodiac sign (lowercase). One of the 12: aries…pisces.","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Optional idempotency key to safely retry a charged request without double-billing. The key is remembered for 7 days; a retry after that window is treated as a new request and charged again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/lifestyle/spirit-animal/{sign}"},"data":{"animal":"Lion","meaning":"Courage, royalty, and natural leadership","sign":"leo"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_ZODIAC_SIGN (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (auto-refunded)"}},"summary":"Get the spirit animal and its meaning for a zodiac sign.","tags":["Lifestyle"]}},"/v2/lifestyle/zodiac-fitness/{sign}":{"get":{"parameters":[{"description":"Zodiac sign (lowercase). One of the 12: aries…pisces.","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Optional idempotency key to safely retry a charged request without double-billing. The key is remembered for 7 days; a retry after that window is treated as a new request and charged again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/lifestyle/zodiac-fitness/{sign}"},"data":{"activities":["Boxing","CrossFit","Sprint intervals"],"sign":"aries"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_ZODIAC_SIGN (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (auto-refunded)"}},"summary":"Get fitness and workout activities aligned to a zodiac sign's energy.","tags":["Lifestyle"]}},"/v2/lifestyle/zodiac-food/{sign}":{"get":{"parameters":[{"description":"Zodiac sign (lowercase). One of the 12: aries…pisces.","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Optional idempotency key to safely retry a charged request without double-billing. The key is remembered for 7 days; a retry after that window is treated as a new request and charged again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/lifestyle/zodiac-food/{sign}"},"data":{"foods":["Home-cooked meals","Seafood","Comfort food"],"sign":"cancer"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_ZODIAC_SIGN (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (auto-refunded)"}},"summary":"Get cuisine and food recommendations suited to a zodiac sign.","tags":["Lifestyle"]}},"/v2/lifestyle/zodiac-gift/{sign}":{"get":{"parameters":[{"description":"Zodiac sign (lowercase). One of the 12: aries…pisces.","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Optional idempotency key to safely retry a charged request without double-billing. The key is remembered for 7 days; a retry after that window is treated as a new request and charged again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/lifestyle/zodiac-gift/{sign}"},"data":{"gifts":["Gourmet food basket","Luxury candles","Cashmere scarf"],"sign":"taurus"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_ZODIAC_SIGN (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (auto-refunded)"}},"summary":"Get curated gift ideas tailored to a zodiac sign's tastes.","tags":["Lifestyle"]}},"/v2/lifestyle/zodiac-travel/{sign}":{"get":{"parameters":[{"description":"Zodiac sign (lowercase). One of the 12: aries…pisces.","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code for cached translation (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Optional idempotency key to safely retry a charged request without double-billing. The key is remembered for 7 days; a retry after that window is treated as a new request and charged again.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/lifestyle/zodiac-travel/{sign}"},"data":{"destinations":["Machu Picchu","Safari Kenya","Nepal"],"sign":"sagittarius"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_ZODIAC_SIGN (auto-refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 CALCULATION_FAILED (auto-refunded)"}},"summary":"Get travel destination suggestions matched to a zodiac sign's character.","tags":["Lifestyle"]}},"/v2/matrimony/bulk-match":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"primary":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"name":"Rahul","timezone":"Asia/Kolkata"},"profiles":[{"datetime":"1992-09-20T14:15:00+05:30","latitude":28.61,"longitude":77.21,"name":"Priya","timezone":"Asia/Kolkata"},{"datetime":"1991-03-11T08:45:00+05:30","latitude":13.08,"longitude":80.27,"name":"Anjali","timezone":"Asia/Kolkata"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/bulk-match"},"data":{"bestMatchIndex":0,"matches":[{"doshaFlags":[],"name":"Priya","profileIndex":0,"score":83,"topKootas":["Yoni","Graha Maitri","Nadi"],"verdict":"excellent"},{"doshaFlags":["Bhakoot Dosha"],"name":"Anjali","profileIndex":1,"score":61,"topKootas":["Varna","Vasya"],"verdict":"average"}],"primaryChart":{"name":"Rahul"},"totalCompared":2},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birth details / datetime / latitude / longitude validation error on primary chart (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Match one primary chart against many candidate profiles, ranked best-first with top kootas and dosha flags","tags":["Matchmaking"]}},"/v2/matrimony/children":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/children"},"data":{"fifthFromJupiter":{"lord":"","sign":"Cancer"},"fifthHouse":{"lord":"Calculated from 5th cusp sign","planets":[],"sign":""},"gender":"Odd signs in 5th suggest male, even signs suggest female (classical guideline)","numberOfChildren":"One or two children indicated","putraKaraka":"Jupiter","saptamsaInsight":"See D7 (Saptamsa) via /v2/astrology/saptamsa endpoint","summary":"Fifth house has 0 planet(s). Jupiter in Cancer. Progeny timing linked to 5th lord dasha.","timing":"Jupiter or 5th lord dasha/antardasha period"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birth details / datetime / latitude / longitude validation error (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Progeny / children outlook for one person — 5th house, Jupiter (Putra karaka), and likely number/timing of children","tags":["Matchmaking"]}},"/v2/matrimony/compatibility-score":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for translated narrative (31 languages, cache-only)","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-09-20T14:15:00+05:30","latitude":28.61,"longitude":77.21,"timezone":"Asia/Kolkata"},"male":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/compatibility-score"},"data":{"ashtakoota":{"maxScore":36,"scores":[{"description":"Spiritual compatibility","koota":"Varna","maxScore":1,"obtained":1},{"description":"Dominance compatibility","koota":"Vasya","maxScore":2,"obtained":2},{"description":"Love compatibility","koota":"Bhakoot","maxScore":7,"obtained":7},{"description":"Health compatibility","koota":"Nadi","maxScore":8,"obtained":8}],"totalScore":28},"dashakoota":{"maxScore":10,"scores":[],"totalScore":8},"doshas":[{"cancellationRules":["Jupiter aspects Mars — benefic cancellation (Phaladeepika Ch.15)"],"cancelled":true,"doshaName":"Mangal Dosha","explanation":"Mangal Dosha present but cancelled by 1 condition(s).","present":true,"severity":"mild"},{"cancellationRules":[],"cancelled":false,"doshaName":"Nadi Dosha","explanation":"Nakshatras are different Nadi groups — no Nadi Dosha.","present":false,"severity":"none"}],"narrative":"Match score: 78% (28/36 gunas). Mangal Dosha cancelled. Verdict: good.","overallScore":78,"verdict":"good"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Full Ashtakoota guna-milan score plus dosha-cancellation verdict for a couple","tags":["Matchmaking"]}},"/v2/matrimony/d9-analysis":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/d9-analysis"},"data":{"jupiterNavamsa":"Cancer","marriageQuality":"Favorable","navamsaLagna":"Derived from D9 chart — use /v2/astrology/navamsa for full detail","seventhLord":"Derived from Navamsa 7th house lord","spouseIndications":["Navamsa lagna sign indicates spouse appearance","Planets in 7th Navamsa house indicate spouse nature"],"summary":"Venus in Libra Navamsa, Jupiter in Cancer. Full D9 analysis requires dedicated Navamsa endpoint.","venusNavamsa":"Libra"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birth details / datetime / latitude / longitude validation error (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Navamsa (D9) marriage analysis for one person — Venus/Jupiter navamsa placement and spouse indications","tags":["Matchmaking"]}},"/v2/matrimony/dosha-cancellation":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code for translated text","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-09-20T14:15:00+05:30","latitude":28.61,"longitude":77.21,"timezone":"Asia/Kolkata"},"male":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/dosha-cancellation"},"data":[{"cancellationRules":["Mars in own sign (Aries or Scorpio) in 1/4/7/8/12 — dosha cancelled per BPHS Ch.80"],"cancelled":true,"doshaName":"Mangal Dosha","explanation":"Mangal Dosha present but cancelled by 1 condition(s).","present":true,"severity":"mild"},{"cancellationRules":[],"cancelled":false,"doshaName":"Nadi Dosha","explanation":"Nakshatras are different Nadi groups — no Nadi Dosha.","present":false,"severity":"none"},{"cancellationRules":[],"cancelled":false,"doshaName":"Bhakoot Dosha","explanation":"Bhakoot Dosha present.","present":true,"severity":"moderate"}],"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birth details / datetime / latitude / longitude validation error (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Detects Mangal, Nadi, and Bhakoot doshas for a couple and computes whether each is cancelled, with classical citations","tags":["Matchmaking"]}},"/v2/matrimony/mangal-quick":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/mangal-quick"},"data":{"isManglik":true,"marsHouse":7,"marsSign":"Libra","severity":"present"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birth details / datetime / latitude / longitude validation error (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Quick Manglik (Mangal Dosha) check for one person — Mars house, sign, and present/none status","tags":["Matchmaking"]}},"/v2/matrimony/nadi-check":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-09-20T14:15:00+05:30","latitude":28.61,"longitude":77.21,"timezone":"Asia/Kolkata"},"male":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/nadi-check"},"data":{"cancellationRules":[],"cancelled":false,"doshaName":"Nadi Dosha","explanation":"Nakshatras are different Nadi groups — no Nadi Dosha.","moon1Nakshatra":"Rohini","moon2Nakshatra":"Hasta","nadiGroup1":"Aadi","nadiGroup2":"Aadi","present":false,"severity":"none"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birth details / datetime / latitude / longitude validation error (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Nadi dosha check for a couple — each partner's Moon nakshatra, Nadi group, and cancellation verdict","tags":["Matchmaking"]}},"/v2/matrimony/name-match":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name1":"Rahul","name2":"Priya"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/name-match"},"data":{"compatibility":90,"destinyNumber1":7,"destinyNumber2":2,"explanation":"Destiny numbers 7 and 2 combine to 9. Compatibility: 90%.","name1":"Rahul","name2":"Priya"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 name1 and name2 are both required (non-empty strings) (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Numerology-based name compatibility — destiny numbers of two names and a compatibility percentage","tags":["Matchmaking"]}},"/v2/matrimony/north-match":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-09-20T14:15:00+05:30","latitude":28.61,"longitude":77.21,"timezone":"Asia/Kolkata"},"male":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/north-match"},"data":{"ashtakoota":{"maxScore":36,"scores":[{"description":"Spiritual compatibility","koota":"Varna","maxScore":1,"obtained":1},{"description":"Temperament compatibility","koota":"Gana","maxScore":6,"obtained":6},{"description":"Health compatibility","koota":"Nadi","maxScore":8,"obtained":8}],"totalScore":28},"dashakoota":{"maxScore":10,"scores":[],"totalScore":8},"doshas":[{"cancellationRules":[],"cancelled":false,"doshaName":"Mangal Dosha","explanation":"Mars not in 1/4/7/8/12 — no Mangal Dosha.","present":false,"severity":"none"}],"narrative":"Match score: 78% (28/36 gunas).  Verdict: good.","overallScore":78,"verdict":"good"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birth details / datetime / latitude / longitude validation error (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"North-Indian Ashtakoota (guna-milan) 36-point compatibility match for a couple","tags":["Matchmaking"]}},"/v2/matrimony/pdf-report":{"post":{"operationId":"postV2MatrimonyPdfReport","parameters":[{"description":"Optional response language; availability is endpoint-specific.","in":"query","name":"lang","required":false,"schema":{"default":"en","enum":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-09-21T18:15:00+05:30","latitude":19.076,"longitude":72.8777,"timezone":"Asia/Kolkata"},"male":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"Asia/Kolkata"}},"schema":{"properties":{"female":{"additionalProperties":true,"type":"object"},"male":{"additionalProperties":true,"type":"object"}},"required":["male","female"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"ashtakoota":{"maxScore":36,"scores":[{"description":"Spiritual compatibility","koota":"Varna","maxScore":1,"obtained":1},{"description":"Dominance compatibility","koota":"Vasya","maxScore":2,"obtained":0},{"description":"Birth star compatibility","koota":"Tara","maxScore":3,"obtained":1.5},{"description":"Physical compatibility","koota":"Yoni","maxScore":4,"obtained":1},{"description":"Mental compatibility","koota":"Graha Maitri","maxScore":5,"obtained":3},{"description":"Temperament compatibility","koota":"Gana","maxScore":6,"obtained":3},{"description":"Love compatibility","koota":"Bhakoot","maxScore":7,"obtained":0},{"description":"Health compatibility","koota":"Nadi","maxScore":8,"obtained":0}],"totalScore":9.5},"dashakoota":{"maxScore":10,"scores":[],"totalScore":3},"doshas":[{"cancellationRules":[],"cancelled":false,"doshaName":"Mangal Dosha","explanation":"Mars not in 1/4/7/8/12 — no Mangal Dosha.","present":false,"severity":"none"},{"cancellationRules":["Same Nadi but different Moon signs — cancellation per Muhurta Chintamani"],"cancelled":true,"doshaName":"Nadi Dosha","explanation":"Nadi Dosha present but cancelled by 1 condition(s).","present":true,"severity":"mild"},{"cancellationRules":[],"cancelled":false,"doshaName":"Bhakoot Dosha","explanation":"Moon signs are compatible — no Bhakoot Dosha.","present":false,"severity":"none"}],"format":"pdf_data","narrative":"Match score: 26% (9.5/36 gunas).  Verdict: not_recommended.","note":"Pass this payload to /api/v1/reports for PDF rendering","overallScore":26,"verdict":"not_recommended"},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Missing or invalid API key"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Rate limit exceeded"}},"security":[{"ApiKeyAuth":[]}],"summary":"Pdf Report","tags":["Matrimony"],"x-vedika-language":{"default":"en","selectable":true,"supported":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"]},"x-vedika-response":{"contract":{"contentType":"application/json","kind":"json"},"exampleAvailability":"available","exampleSource":"recorded-sandbox"}}},"/v2/matrimony/prediction":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/prediction"},"data":{"dashaInfluence":"Check Vimshottari Dasha for Venus/7th lord periods","overallOutlook":"Marriage prospects depend on dasha+transit alignment with 7th house","recommendations":["Consult /v2/astrology/vimshottari-dasha for current period","Check Jupiter transit over natal 7th house","Perform D9 analysis for spouse indicators"],"transitInfluence":"Jupiter currently in Cancer","venusReturn":"Venus in Libra natal — track Venus transits for activation"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birth details / datetime / latitude / longitude validation error (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Marriage prediction / outlook for one person — current dasha and transit influence on the 7th house with recommendations","tags":["Matchmaking"]}},"/v2/matrimony/remedies":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dosha":"Mangal Dosha"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/remedies"},"data":[{"dosha":"Mangal Dosha","frequency":"Daily","prescription":"Chant Hanuman Chalisa daily","type":"mantra"},{"dosha":"Mangal Dosha","prescription":"Kumbh Vivah (symbolic marriage) before actual wedding","type":"ritual"},{"dosha":"Mangal Dosha","prescription":"Wear red coral (Moonga) on ring finger, Tuesday","type":"gemstone"},{"dosha":"Mangal Dosha","frequency":"Weekly","prescription":"Fast on Tuesdays (Mangalvar Vrat)","type":"fast"},{"dosha":"Mangal Dosha","prescription":"Donate red lentils (masoor dal) on Tuesdays","type":"charity"}],"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Classical remedies (mantra, gemstone, charity, ritual, fast) for a named matrimony dosha","tags":["Matchmaking"]}},"/v2/matrimony/south-match":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-09-20T14:15:00+05:30","latitude":28.61,"longitude":77.21,"timezone":"Asia/Kolkata"},"male":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/south-match"},"data":{"critical_doshas":{"rajju_dosha":false,"vedha_dosha":false},"factors":{"dina":{"description":"Dina porutham present","distance":14,"max_score":3,"name":"Dina","remainder":5,"score":3},"gana":{"description":"Gana compatibility good","femaleGana":"Deva","maleGana":"Deva","max_score":3,"name":"Gana","score":3},"rajju":{"description":"Rajju porutham present","femaleRajju":"Udara","maleRajju":"Kanta","name":"Rajju","passed":true,"warning":null},"rasi":{"description":"Rasi porutham present","femaleMoonSign":"Virgo","maleMoonSign":"Taurus","max_score":7,"name":"Rasi","relationship":"favorable","score":7},"vedha":{"description":"No Vedha","name":"Vedha","passed":true,"vedhaPair":null},"yoni":{"description":"Yoni compatible","femaleYoni":"Horse","maleYoni":"Horse","max_score":4,"name":"Yoni","score":4}},"max_points":24,"overall_match":"excellent","percentage":83,"recommendation":"Highly compatible match. Proceed with confidence.","total_points":20},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"South-Indian 10-point Nakshatra Porutham (Dasaporutham / Thirumana Porutham) marriage matching","tags":["Matchmaking"]}},"/v2/matrimony/timing":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/timing"},"data":{"currentDasha":"Refer to Vimshottari Dasha endpoint for current running period","favorablePeriods":[{"end":"End of period","reason":"Venus is natural karaka for marriage","start":"Venus Mahadasha or Antardasha","strength":"high"},{"end":"Transit exit","reason":"Jupiter blesses partnerships","start":"Jupiter transit over 7th house","strength":"high"}],"jupiter7thTransit":"Use /v2/astrology/planet-transit for live Jupiter position","seventhLord":"Mars","summary":"Venus is strong in Libra. Marriage favorable during Venus/Jupiter dasha periods. Consult dasha endpoints for precise timing.","upapada":"Calculated from 12th lord in D1","venusStrength":"strong"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birth details / datetime / latitude / longitude validation error (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Marriage timing analysis for one person — favorable Venus/Jupiter dasha and transit windows, 7th-lord and Venus strength","tags":["Matchmaking"]}},"/v2/matrimony/unified-match":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*)","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"female":{"datetime":"1992-09-20T14:15:00+05:30","latitude":28.61,"longitude":77.21,"timezone":"Asia/Kolkata"},"male":{"datetime":"1990-05-15T10:30:00+05:30","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"charged":4,"currency":"USD","endpoint":"/v2/matrimony/unified-match"},"data":{"ashtakoota":{"maxScore":36,"scores":[{"description":"Physical compatibility","koota":"Yoni","maxScore":4,"obtained":4},{"description":"Mental compatibility","koota":"Graha Maitri","maxScore":5,"obtained":5},{"description":"Health compatibility","koota":"Nadi","maxScore":8,"obtained":8}],"totalScore":30},"dashakoota":{"maxScore":10,"scores":[],"totalScore":8},"doshas":[{"cancellationRules":["Both partners have Mangal Dosha — mutual cancellation (most common remedy)"],"cancelled":true,"doshaName":"Mangal Dosha","explanation":"Mangal Dosha present but cancelled by 1 condition(s).","present":true,"severity":"mild"},{"cancellationRules":[],"cancelled":false,"doshaName":"Nadi Dosha","explanation":"Nakshatras are different Nadi groups — no Nadi Dosha.","present":false,"severity":"none"},{"cancellationRules":[],"cancelled":false,"doshaName":"Bhakoot Dosha","explanation":"Moon signs are compatible — no Bhakoot Dosha.","present":false,"severity":"none"}],"narrative":"Match score: 83% (30/36 gunas). Mangal Dosha cancelled. Verdict: excellent.","overallScore":83,"verdict":"excellent"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 birth details / datetime / latitude / longitude validation error (with refund)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed."}},"summary":"Unified couple report combining Ashtakoota guna-milan, Dashakoot summary, all dosha cancellations, and an overall verdict","tags":["Matchmaking"]}},"/v2/oracle/daily":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code to translate prose fields into one of 31 supported languages. Also accepted as langcode.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/oracle/daily"},"data":{"cardOfTheDay":{"card":{"affirmation":"I find beauty and meaning in every experience","element":"spirit","guidance":"The challenge you are facing right now will become one of your greatest stories.","id":23,"message":"Beauty exists in every phase of life — even the storms","name":"Rainbow","theme":"Gratitude"},"position":{"index":0,"meaning":"Today's universal guidance","name":"Oracle of the Day"}},"date":"2026-06-14","system":"oracle"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"422 Unsupported language code (invalid ?lang=)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again. (charge refunded)"}},"summary":"Get today's universal oracle card of the day — the same card for everyone, refreshed daily.","tags":["Oracle"]}},"/v2/oracle/draw/single":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code (e.g. hi, ta, te) to translate prose fields into one of 31 supported languages. Also accepted as langcode.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"What should I focus on today?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/oracle/draw/single"},"data":{"reading":{"cards":[{"card":{"affirmation":"I am a being of light and love","element":"fire","guidance":"Take time today to acknowledge your unique gifts and let them flow freely into the world.","id":1,"message":"Your inner radiance is ready to shine","name":"Inner Light","theme":"Self-Love"},"position":{"index":0,"meaning":"Guidance for your question","name":"Your Oracle Card"}}],"question":"What should I focus on today?","timestamp":"2026-06-14T10:30:00.000Z"},"system":"oracle"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed (card draw error; charge refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"422 Unsupported language code (invalid ?lang=)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again. (charge refunded)"}},"summary":"Draw a single oracle card with a positive affirmation, message, and guidance for your question.","tags":["Oracle"]}},"/v2/oracle/draw/three":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code to translate prose fields into one of 31 supported languages. Also accepted as langcode.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"How do I find balance right now?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/oracle/draw/three"},"data":{"reading":{"cards":[{"card":{"affirmation":"I give myself permission to rest and heal","element":"water","guidance":"Your body and spirit need replenishment. Step away from busyness and embrace stillness.","id":2,"message":"Rest is not laziness — it is restoration","name":"Sacred Rest","theme":"Healing"},"position":{"index":0,"meaning":"Mind guidance","name":"Mind"}},{"card":{"affirmation":"I allow healing to unfold at its own perfect pace","element":"water","guidance":"Do not rush your recovery. Each layer of healing reveals more of your true self.","id":13,"message":"Healing happens in layers — be patient with yourself","name":"Wellspring","theme":"Healing"},"position":{"index":1,"meaning":"Body guidance","name":"Body"}},{"card":{"affirmation":"I trust the divine tapestry being woven in my life","element":"spirit","guidance":"The seemingly random events of your life are forming a beautiful pattern.","id":14,"message":"Everything is connected in ways you cannot yet see","name":"Golden Thread","theme":"Wisdom"},"position":{"index":2,"meaning":"Spirit guidance","name":"Spirit"}}],"question":"How do I find balance right now?","timestamp":"2026-06-14T10:30:00.000Z"},"system":"oracle"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Calculation failed (card draw error; charge refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"422 Unsupported language code (invalid ?lang=)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again. (charge refunded)"}},"summary":"Draw a three-card Mind / Body / Spirit oracle spread with affirmations and guidance for your question.","tags":["Oracle"]}},"/v2/oracle/themes":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional ISO language code to translate prose fields into one of 31 supported languages. Also accepted as langcode.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/oracle/themes"},"data":{"system":"oracle","themes":[{"count":5,"name":"Self-Love"},{"count":6,"name":"Abundance"},{"count":6,"name":"Transformation"},{"count":5,"name":"Trust"},{"count":6,"name":"Healing"},{"count":6,"name":"Courage"},{"count":5,"name":"Wisdom"},{"count":5,"name":"Gratitude"}],"totalCards":44},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 Insufficient balance"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"422 Unsupported language code (invalid ?lang=)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed. Please try again. (charge refunded)"}},"summary":"List the eight oracle deck themes (e.g. Self-Love, Abundance, Healing) with how many cards belong to each.","tags":["Oracle"]}},"/v2/palmistry/ai-reading":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional 2-letter language code for localized output (31 languages). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"palmistry","charged":1,"currency":"USD","endpoint":"/v2/palmistry/ai-reading"},"data":{"dataSource":"vedika-reference","message":"AI-powered palm image analysis is under development. Submit a palm image for automated reading.","requiredLines":["Life Line","Heart Line","Head Line","Fate Line","Sun Line","Mercury Line"],"requiredMounts":["Mount of Jupiter","Mount of Saturn","Mount of Apollo","Mount of Mercury","Mount of Venus","Mount of Moon","Mount of Mars (Upper)","Mount of Mars (Lower)"],"status":"coming-soon","supportedFormats":["image/jpeg","image/png","image/webp"],"system":"palmistry","type":"ai-reading"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 invalid or missing API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR / Calculation failed (auto-refunded)"}},"summary":"Placeholder for upcoming AI palm-image analysis: returns the supported image formats and the full list of lines and mounts a future reading will cover.","tags":["Palmistry"]}},"/v2/palmistry/fingers":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional 2-letter language code for localized output (31 languages). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"palmistry","charged":1,"currency":"USD","endpoint":"/v2/palmistry/fingers"},"data":{"dataSource":"vedika-reference","fingers":[{"interpretations":{"bent":"Tendency to manipulate or control","long":"Strong ego, natural leader, ambitious","short":"Lacks confidence, follower rather than leader","straight":"Balanced ambition, fair-minded"},"meaning":"Ambition, ego, leadership, self-image","name":"Index Finger (Jupiter)","planet":"Jupiter"}],"system":"palmistry","totalFingers":5,"type":"fingers"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 invalid or missing API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR / Calculation failed (auto-refunded)"}},"summary":"Reference guide to the five fingers (index/Jupiter, middle/Saturn, ring/Apollo, little/Mercury, thumb) and what long, short, straight or bent forms indicate.","tags":["Palmistry"]}},"/v2/palmistry/lines":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional 2-letter language code for localized output (31 languages, cache-only translation). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"palmistry","charged":1,"currency":"USD","endpoint":"/v2/palmistry/lines"},"data":{"dataSource":"vedika-reference","lines":[{"alternateNames":["Vital Line","Line of Vitality"],"interpretations":{"absent":"Extremely rare; indicates constant anxiety about health","branches":"Upward branches indicate positive events; downward branches indicate challenges","breaks":"Major life change or health event at the approximate age of the break","strong":"Robust health, strong constitution, resilient recovery","weak":"Lower energy levels, susceptibility to illness"},"location":"Curves from between thumb and index finger toward wrist","meaning":"Vitality, life energy, major life changes, physical health trajectory","name":"Life Line"}],"system":"palmistry","totalLines":6,"type":"lines"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 invalid or missing API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR / Calculation failed (auto-refunded)"}},"summary":"Reference guide to the major palm lines (Life, Heart, Head, Fate, Sun, Mercury) and what their strength, breaks and branches reveal.","tags":["Palmistry"]}},"/v2/palmistry/mounts":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional 2-letter language code for localized output (31 languages). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"palmistry","charged":1,"currency":"USD","endpoint":"/v2/palmistry/mounts"},"data":{"dataSource":"vedika-reference","mounts":[{"interpretations":{"excessive":"Overbearing, domineering, egotistical","flat":"Lack of confidence, indecisive, self-doubt","wellDeveloped":"Natural leader, ambitious, generous, spiritual inclination"},"location":"Below index finger","meaning":"Ambition, leadership, confidence, spirituality","name":"Mount of Jupiter","planet":"Jupiter"}],"system":"palmistry","totalMounts":8,"type":"mounts"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 invalid or missing API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR / Calculation failed (auto-refunded)"}},"summary":"Reference guide to the eight palmar mounts (Jupiter, Saturn, Apollo, Mercury, Venus, Moon, upper/lower Mars), their ruling planet and what a well-developed, flat or excessive mount signifies.","tags":["Palmistry"]}},"/v2/palmistry/shapes":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional 2-letter language code for localized output (31 languages). Defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"palmistry","charged":1,"currency":"USD","endpoint":"/v2/palmistry/shapes"},"data":{"dataSource":"vedika-reference","shapes":[{"characteristics":["Square palm","Short fingers","Thick skin","Few but deep lines"],"element":"Earth","fingerLength":"Short and sturdy","name":"Earth Hand","palmShape":"Square, broad, with thick skin","personality":"Practical, grounded, reliable, traditional values, love of nature"}],"system":"palmistry","totalShapes":4,"type":"shapes"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 invalid or missing API key"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR / Calculation failed (auto-refunded)"}},"summary":"Reference guide to the four elemental hand shapes (Earth, Air, Fire, Water) with palm/finger characteristics and the personality each shape suggests.","tags":["Palmistry"]}},"/v2/reports/complete":{"post":{"operationId":"postV2ReportsComplete","parameters":[{"description":"Optional response language; availability is endpoint-specific.","in":"query","name":"lang","required":false,"schema":{"default":"en","enum":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":28.6139,"longitude":77.209,"timeOfBirth":"10:30","timezone":"Asia/Kolkata"},"schema":{"properties":{"dateOfBirth":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"timeOfBirth":{"type":"string"},"timezone":{"type":"string"}},"required":["dateOfBirth","timeOfBirth","latitude","longitude","timezone"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Missing or invalid API key"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Rate limit exceeded"}},"security":[{"ApiKeyAuth":[]}],"summary":"Complete","tags":["Reports"],"x-vedika-language":{"default":"en","selectable":true,"supported":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"]},"x-vedika-response":{"contract":{"contentType":"application/json","kind":"json"},"exampleAvailability":"run-only","exampleSource":"none"}}},"/v2/reports/house-report":{"post":{"operationId":"postV2ReportsHouseReport","parameters":[{"description":"Optional response language; availability is endpoint-specific.","in":"query","name":"lang","required":false,"schema":{"default":"en","enum":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":28.6139,"longitude":77.209,"timeOfBirth":"10:30","timezone":"Asia/Kolkata"},"schema":{"properties":{"dateOfBirth":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"timeOfBirth":{"type":"string"},"timezone":{"type":"string"}},"required":["dateOfBirth","timeOfBirth","latitude","longitude","timezone"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Missing or invalid API key"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Rate limit exceeded"}},"security":[{"ApiKeyAuth":[]}],"summary":"House Report","tags":["Reports"],"x-vedika-language":{"default":"en","selectable":true,"supported":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"]},"x-vedika-response":{"contract":{"contentType":"application/json","kind":"json"},"exampleAvailability":"run-only","exampleSource":"none"}}},"/v2/reports/nakshatra/daily-prediction":{"post":{"operationId":"postV2ReportsNakshatraDailyPrediction","parameters":[{"description":"Optional response language; availability is endpoint-specific.","in":"query","name":"lang","required":false,"schema":{"default":"en","enum":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"date":"2026-07-13","nakshatra":"Rohini"},"schema":{"properties":{"date":{"type":"string"},"nakshatra":{"type":"string"}},"required":["nakshatra"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Missing or invalid API key"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Rate limit exceeded"}},"security":[{"ApiKeyAuth":[]}],"summary":"Daily Prediction","tags":["Reports"],"x-vedika-language":{"default":"en","selectable":true,"supported":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"]},"x-vedika-response":{"contract":{"contentType":"application/json","kind":"json"},"exampleAvailability":"run-only","exampleSource":"none"}}},"/v2/reports/nakshatra/monthly-prediction":{"post":{"operationId":"postV2ReportsNakshatraMonthlyPrediction","parameters":[{"description":"Optional response language; availability is endpoint-specific.","in":"query","name":"lang","required":false,"schema":{"default":"en","enum":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"month":7,"nakshatra":"Rohini","year":2026},"schema":{"properties":{"month":{"type":"integer"},"nakshatra":{"type":"string"},"year":{"type":"integer"}},"required":["nakshatra"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Missing or invalid API key"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Rate limit exceeded"}},"security":[{"ApiKeyAuth":[]}],"summary":"Monthly Prediction","tags":["Reports"],"x-vedika-language":{"default":"en","selectable":true,"supported":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"]},"x-vedika-response":{"contract":{"contentType":"application/json","kind":"json"},"exampleAvailability":"run-only","exampleSource":"none"}}},"/v2/reports/nakshatra/weekly-prediction":{"post":{"operationId":"postV2ReportsNakshatraWeeklyPrediction","parameters":[{"description":"Optional response language; availability is endpoint-specific.","in":"query","name":"lang","required":false,"schema":{"default":"en","enum":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"nakshatra":"Rohini","startDate":"2026-07-13"},"schema":{"properties":{"nakshatra":{"type":"string"},"startDate":{"type":"string"}},"required":["nakshatra"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Missing or invalid API key"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Rate limit exceeded"}},"security":[{"ApiKeyAuth":[]}],"summary":"Weekly Prediction","tags":["Reports"],"x-vedika-language":{"default":"en","selectable":true,"supported":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"]},"x-vedika-response":{"contract":{"contentType":"application/json","kind":"json"},"exampleAvailability":"run-only","exampleSource":"none"}}},"/v2/reports/planet-report":{"post":{"operationId":"postV2ReportsPlanetReport","parameters":[{"description":"Optional response language; availability is endpoint-specific.","in":"query","name":"lang","required":false,"schema":{"default":"en","enum":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":28.6139,"longitude":77.209,"timeOfBirth":"10:30","timezone":"Asia/Kolkata"},"schema":{"properties":{"dateOfBirth":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"timeOfBirth":{"type":"string"},"timezone":{"type":"string"}},"required":["dateOfBirth","timeOfBirth","latitude","longitude","timezone"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Missing or invalid API key"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Rate limit exceeded"}},"security":[{"ApiKeyAuth":[]}],"summary":"Planet Report","tags":["Reports"],"x-vedika-language":{"default":"en","selectable":true,"supported":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"]},"x-vedika-response":{"contract":{"contentType":"application/json","kind":"json"},"exampleAvailability":"run-only","exampleSource":"none"}}},"/v2/reports/prebuilt/generate":{"post":{"description":"Send an Idempotency-Key header. Choose reportType from GET /api/v1/reports/prebuilt/catalog; this example is a single-chart report, which needs birthDetails with datetime, latitude, longitude and timezone.","operationId":"postV2ReportsPrebuiltGenerate","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Required purchase idempotency key, 1-200 characters, stable across retries of the same purchase. Same key and request returns the original artifact without a second charge; use a new key for each new purchase.","in":"header","name":"Idempotency-Key","required":true,"schema":{"example":"report-example-0001","minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"birthDetails":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"Asia/Kolkata"},"lang":"en","name":"Aarav Sharma","reportType":"vedic-career-standard"},"schema":{"$ref":"#/components/schemas/PrebuiltReportGenerateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrebuiltReportGenerateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid report request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Report is not renderable"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Report delivery failed; not charged"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Generate a priced prebuilt PDF report","tags":["Reports"],"x-vedika-path-matrix":{"keyed":["/v2/reports/prebuilt/generate","/api/v1/reports/prebuilt/generate"],"sandbox":["/sandbox/v2/reports/prebuilt/generate","/sandbox/api/v1/reports/prebuilt/generate"]}}},"/v2/reports/rashi-report":{"post":{"operationId":"postV2ReportsRashiReport","parameters":[{"description":"Optional response language; availability is endpoint-specific.","in":"query","name":"lang","required":false,"schema":{"default":"en","enum":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","latitude":28.6139,"longitude":77.209,"timeOfBirth":"10:30","timezone":"Asia/Kolkata"},"schema":{"properties":{"dateOfBirth":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"timeOfBirth":{"type":"string"},"timezone":{"type":"string"}},"required":["dateOfBirth","timeOfBirth","latitude","longitude","timezone"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Validation error"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Missing or invalid API key"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Rate limit exceeded"}},"security":[{"ApiKeyAuth":[]}],"summary":"Rashi Report","tags":["Reports"],"x-vedika-language":{"default":"en","selectable":true,"supported":["en","hi","bn","te","ta","gu","kn","ml","mr","pa","od","ur"]},"x-vedika-response":{"contract":{"contentType":"application/json","kind":"json"},"exampleAvailability":"run-only","exampleSource":"none"}}},"/v2/runes/catalog":{"get":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*). Also accepted via Authorization: Bearer.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language) for cached translation of the response; defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"runes","charged":1,"currency":"USD","endpoint":"/v2/runes/catalog"},"data":{"aetts":["Freya (1-8)","Hagal (9-16)","Tyr (17-24)"],"dataSource":"vedika-reference","runes":[{"aett":"Freya","canReverse":true,"deity":"Freya/Freyr","element":"Fire","keywords":["wealth","abundance","luck","prosperity"],"meaning":"Wealth, abundance, prosperity, cattle","name":"Fehu","number":1,"phonetic":"F","reversedMeaning":"Loss of wealth, greed, poverty","unicode":"ᚠ"},{"aett":"Freya","canReverse":false,"deity":"Odin","element":"Air","keywords":["gift","partnership","exchange","generosity"],"meaning":"Gift, generosity, partnership, balance","name":"Gebo","number":7,"phonetic":"G","reversedMeaning":null,"unicode":"ᚷ"}],"system":"runes","totalRunes":24,"tradition":"Elder Futhark","type":"catalog"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 NOT_FOUND (missing/invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 (too many invalid key attempts)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Retrieve the full reference catalog of all 24 Elder Futhark runes grouped into the three aetts, with meanings, phonetics, elements, deities and keywords.","tags":["Runes"]}},"/v2/runes/draw/five":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*). Also accepted via Authorization: Bearer.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language) for cached translation of the response; defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"seed":12345}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"runes","charged":1,"currency":"USD","endpoint":"/v2/runes/draw/five"},"data":{"dataSource":"vedika-reference","runes":[{"aett":"Tyr","deity":"Tyr","element":"Air","keywords":["justice","honor","warrior","sacrifice"],"meaning":"Justice, honor, leadership, Tyr","name":"Tiwaz","position":"Past","reversed":false,"reversedMeaning":"Injustice, over-sacrifice, imbalance","unicode":"ᛏ"},{"aett":"Hagal","deity":"Verdandi","element":"Ice","keywords":["ice","stillness","standstill","self"],"meaning":"Ice, stillness, standstill, challenge","name":"Isa","position":"Present","reversed":false,"unicode":"ᛁ"},{"aett":"Hagal","deity":"Skuld","element":"Fire","keywords":["need","constraint","necessity","survival"],"meaning":"Need, constraint, necessity, endurance","name":"Nauthiz","position":"Challenge","reversed":false,"reversedMeaning":"Constraint lifted, freedom from need","unicode":"ᚾ"},{"aett":"Freya","deity":"Odin","element":"Air","keywords":["wisdom","communication","divine","speech"],"meaning":"Communication, wisdom, divine message, Odin","name":"Ansuz","position":"Advice","reversed":false,"reversedMeaning":"Miscommunication, manipulation, delusion","unicode":"ᚨ"},{"aett":"Hagal","deity":"Sunna/Baldur","element":"Fire","keywords":["sun","success","honor","wholeness"],"meaning":"Sun, success, honor, vitality","name":"Sowilo","position":"Outcome","reversed":false,"unicode":"ᛋ"}],"seed":12345,"spread":"Past / Present / Challenge / Advice / Outcome","system":"runes","type":"five-rune-spread"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 NOT_FOUND (missing/invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 (too many invalid key attempts)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failed — auto-refunded)"}},"summary":"Cast a five-rune Past / Present / Challenge / Advice / Outcome spread for a fuller reading, each rune positioned with meaning, element, deity and keywords.","tags":["Runes"]}},"/v2/runes/draw/single":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*). Also accepted via Authorization: Bearer.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language) for cached translation of the response; defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"seed":42}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"runes","charged":1,"currency":"USD","endpoint":"/v2/runes/draw/single"},"data":{"dataSource":"vedika-reference","runes":[{"aett":"Hagal","deity":"Sunna/Baldur","element":"Fire","keywords":["sun","success","honor","wholeness"],"meaning":"Sun, success, honor, vitality","name":"Sowilo","position":"Guidance","reversed":false,"reversedMeaning":null,"unicode":"ᛋ"}],"seed":42,"system":"runes","type":"single-draw"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 NOT_FOUND (missing/invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 (too many invalid key attempts)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failed — auto-refunded)"}},"summary":"Draw a single Elder Futhark rune for quick yes/no or one-card guidance, with upright/reversed meaning, element, deity and keywords.","tags":["Runes"]}},"/v2/runes/draw/three":{"post":{"parameters":[{"description":"API key (vk_live_* or vk_ent_*). Also accepted via Authorization: Bearer.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language) for cached translation of the response; defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"seed":777}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"runes","charged":1,"currency":"USD","endpoint":"/v2/runes/draw/three"},"data":{"dataSource":"vedika-reference","runes":[{"aett":"Freya","deity":"Freya/Freyr","element":"Fire","keywords":["wealth","abundance","luck","prosperity"],"meaning":"Wealth, abundance, prosperity, cattle","name":"Fehu","position":"Past","reversed":false,"reversedMeaning":"Loss of wealth, greed, poverty","unicode":"ᚠ"},{"aett":"Freya","deity":"Odin","element":"Air","keywords":["wisdom","communication","divine","speech"],"meaning":"Miscommunication, manipulation, delusion","name":"Ansuz","position":"Present","reversed":true,"reversedMeaning":"Miscommunication, manipulation, delusion","unicode":"ᚨ"},{"aett":"Hagal","deity":"Freyr","element":"Earth","keywords":["harvest","reward","cycle","season"],"meaning":"Harvest, reward, cycle, year","name":"Jera","position":"Future","reversed":false,"unicode":"ᛃ"}],"seed":777,"spread":"Past / Present / Future","system":"runes","type":"three-rune-spread"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 NOT_FOUND (missing/invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 (too many invalid key attempts)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (calculation failed — auto-refunded)"}},"summary":"Cast a three-rune Past / Present / Future spread, returning each positioned rune with upright/reversed meaning, element, deity and keywords.","tags":["Runes"]}},"/v2/runes/meaning/{rune}":{"get":{"parameters":[{"description":"Rune name, case-insensitive (e.g. Fehu, Ansuz, Sowilo). Must be one of the 24 Elder Futhark runes.","in":"path","name":"rune","required":true,"schema":{"type":"string"}},{"description":"API key (vk_live_* or vk_ent_*). Also accepted via Authorization: Bearer.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional output language code (also langcode/language) for cached translation of the response; defaults to English.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":1249,"balanceBefore":12.5,"category":"runes","charged":1,"currency":"USD","endpoint":"/v2/runes/meaning/{rune}"},"data":{"dataSource":"vedika-reference","rune":{"aett":"Freya","deity":"Freya/Freyr","element":"Fire","keywords":["wealth","abundance","luck","prosperity"],"meaning":"Wealth, abundance, prosperity, cattle","name":"Fehu","position":null,"reversed":false,"reversedMeaning":"Loss of wealth, greed, poverty","unicode":"ᚠ"},"system":"runes","type":"meaning"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (unknown rune name — auto-refunded; body lists valid runes in availableRunes/error, billing.refunded:true)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 NOT_FOUND (missing/invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"429 (too many invalid key attempts)"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 BILLING_ERROR"}},"summary":"Look up the full reference meaning of a named Elder Futhark rune (upright + reversed, element, deity, keywords, aett).","tags":["Runes"]}},"/v2/spiritual/deity":{"post":{"parameters":[{"description":"API key as 'Bearer <vk_live_... key>'. (Legacy 'X-API-Key' also accepted.)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Reseller/end-user attribution id.","in":"header","name":"x-end-user-id","required":false,"schema":{"type":"string"}},{"description":"Translate response into one of 31 supported language codes. Unsupported code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/spiritual/deity"},"data":{"derivedFrom":"Moon in Sagittarius → lord Jupiter → deity Lord Dakshinamurthy","description":"Your Ishta Devata is Lord Dakshinamurthy, derived from the lord of your Moon sign Navamsa.","ishtaDevata":"Lord Dakshinamurthy","mantra":"Om Graam Greem Graum Sah Gurave Namah","temple":"Tirunallar Shaniswaran, Tamil Nadu"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (calculation failed — auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 UNAUTHORIZED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (internal error — auto-refund)"}},"summary":"Identifies your Ishta Devata (personal guiding deity) derived from your Moon-sign lord, with its mantra and principal temple.","tags":["Spirituality"]}},"/v2/spiritual/fasting":{"post":{"parameters":[{"description":"API key as 'Bearer <vk_live_... key>'. (Legacy 'X-API-Key' also accepted.)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Reseller/end-user attribution id.","in":"header","name":"x-end-user-id","required":false,"schema":{"type":"string"}},{"description":"Translate response into one of 31 supported language codes. Unsupported code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/spiritual/fasting"},"data":[{"breakFast":"After sunset","day":"Tuesday","food":"Red lentils (masoor)","planet":"Mars"},{"breakFast":"After sunset","day":"Saturday","food":"Sesame (til) and black gram","planet":"Saturn"}],"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (calculation failed — auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 UNAUTHORIZED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (internal error — auto-refund)"}},"summary":"Personalized fasting (vrat) schedule for the weakest planets in your chart — the fasting day, what to eat, and when to break the fast.","tags":["Spirituality"]}},"/v2/spiritual/karma":{"post":{"parameters":[{"description":"API key as 'Bearer <vk_live_... key>'. (Legacy 'X-API-Key' also accepted.)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Reseller/end-user attribution id.","in":"header","name":"x-end-user-id","required":false,"schema":{"type":"string"}},{"description":"Translate response into one of 31 supported language codes. Unsupported code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/spiritual/karma"},"data":{"karmicDebts":["Saturn debilitated — karmic debt through suffering/service"],"lessons":["Service (Saturn)","Desire management (Rahu)","Spiritual detachment (Ketu)"],"nodes":{"ketuSign":"Libra","rahuSign":"Aries"},"resolution":"Saturn dasha period is the primary karmic resolution window.","saturn":{"house":0,"retrograde":false,"sign":"Aries"}},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (calculation failed — auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 UNAUTHORIZED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (internal error — auto-refund)"}},"summary":"Karmic indicators from Saturn and the lunar nodes — karmic debts, lifelong lessons and the dasha window for their resolution.","tags":["Spirituality"]}},"/v2/spiritual/mantra":{"post":{"parameters":[{"description":"API key as 'Bearer <vk_live_... key>'. (Legacy 'X-API-Key' header also accepted, sunset 2026-10-20.)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Reseller/end-user attribution id passed through to billing.","in":"header","name":"x-end-user-id","required":false,"schema":{"type":"string"}},{"description":"Translate response into one of 31 supported language codes (e.g. hi, ta). Unsupported code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/spiritual/mantra"},"data":[{"bestDay":"Tuesday","deity":"Lord Hanuman","direction":"South","mantra":"Om Kraam Kreem Kraum Sah Bhaumaya Namah","planet":"Mars","repetitions":10000},{"bestDay":"Saturday","deity":"Lord Hanuman / Shani Dev","direction":"West","mantra":"Om Praam Preem Praum Sah Shanaischaraya Namah","planet":"Saturn","repetitions":23000}],"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (calculation failed — charge auto-refunded)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 UNAUTHORIZED (missing/invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (internal error — charge auto-refunded)"}},"summary":"Personalized planetary mantras for the weakest planets in your birth chart, with deity, repetition count, best day and direction for chanting.","tags":["Spirituality"]}},"/v2/spiritual/meditation":{"post":{"parameters":[{"description":"API key as 'Bearer <vk_live_... key>'. (Legacy 'X-API-Key' also accepted.)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Reseller/end-user attribution id.","in":"header","name":"x-end-user-id","required":false,"schema":{"type":"string"}},{"description":"Translate response into one of 31 supported language codes. Unsupported code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/spiritual/meditation"},"data":{"ascendantSign":"Leo","description":"Fixed gazing at a flame to still the mind. Suits fiery temperaments.","duration":"15-20 minutes","element":"Fire","type":"Trataka (Candle Gazing)"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (calculation failed — auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 UNAUTHORIZED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (internal error — auto-refund)"}},"summary":"Recommends the meditation technique best suited to your temperament, based on the elemental nature of your ascendant sign.","tags":["Spirituality"]}},"/v2/spiritual/past-life":{"post":{"parameters":[{"description":"API key as 'Bearer <vk_live_... key>'. (Legacy 'X-API-Key' also accepted.)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Reseller/end-user attribution id.","in":"header","name":"x-end-user-id","required":false,"schema":{"type":"string"}},{"description":"Translate response into one of 31 supported language codes. Unsupported code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/spiritual/past-life"},"data":{"d60Insight":"Full D60 (Shashtiamsa) analysis available via /v2/astrology/shashtiamsa","karmicLesson":"Learn cooperation, diplomacy, and partnership","ketuHouse":0,"ketuSign":"Libra","pastLifeTheme":"Warrior / conflict-driven past life","rahuHouse":0,"rahuSign":"Aries","summary":"Rahu in Aries, Ketu in Libra. Warrior / conflict-driven past life. Lesson: Learn cooperation, diplomacy, and partnership."},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (calculation failed — auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 UNAUTHORIZED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (internal error — auto-refund)"}},"summary":"Past-life reading from the Rahu-Ketu (lunar nodes) axis — the dominant past-life theme and the karmic lesson to resolve in this life.","tags":["Spirituality"]}},"/v2/spiritual/pilgrimage":{"post":{"parameters":[{"description":"API key as 'Bearer <vk_live_... key>'. (Legacy 'X-API-Key' also accepted.)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Reseller/end-user attribution id.","in":"header","name":"x-end-user-id","required":false,"schema":{"type":"string"}},{"description":"Translate response into one of 31 supported language codes. Unsupported code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"doshas":["Mangal Dosha","Kaal Sarp Dosha"]}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/spiritual/pilgrimage"},"data":{"doshas":["Mangal Dosha","Kaal Sarp Dosha"],"temples":[{"deity":"Mangal (Mars)","location":"Ujjain, MP","name":"Mangalnath Temple","significance":"Birthplace of Mars — primary remedy temple"},{"deity":"Shiva as healer","location":"Tamil Nadu","name":"Vaitheeswaran Koil","significance":"Famous for Mars dosha removal"},{"deity":"Shiva (Jyotirlinga)","location":"Nashik, Maharashtra","name":"Trimbakeshwar","significance":"Most renowned for Kaal Sarp Shanti puja"}]},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (calculation failed — auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 UNAUTHORIZED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (internal error — auto-refund)"}},"summary":"Recommends pilgrimage temples for specific astrological doshas (e.g. Mangal, Kaal Sarp, Pitru, Sade Sati), with location, deity and remedial significance.","tags":["Spirituality"]}},"/v2/spiritual/puja":{"post":{"parameters":[{"description":"API key as 'Bearer <vk_live_... key>'. (Legacy 'X-API-Key' also accepted.)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Reseller/end-user attribution id.","in":"header","name":"x-end-user-id","required":false,"schema":{"type":"string"}},{"description":"Translate response into one of 31 supported language codes. Unsupported code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/spiritual/puja"},"data":[{"bestDay":"Tuesday","gemstone":"Red Coral","mantra":"Om Kraam Kreem Kraum Sah Bhaumaya Namah","planet":"Mars","puja":"Lord Hanuman Puja / Mars Graha Shanti","yantra":"Mangal Yantra"}],"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (calculation failed — auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 UNAUTHORIZED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (internal error — auto-refund)"}},"summary":"Recommends Graha Shanti pujas for the weakest planets in your chart, with the puja name, mantra, best day, gemstone and yantra for each.","tags":["Spirituality"]}},"/v2/spiritual/rudraksha":{"post":{"parameters":[{"description":"API key as 'Bearer <vk_live_... key>'. (Legacy 'X-API-Key' also accepted.)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Reseller/end-user attribution id.","in":"header","name":"x-end-user-id","required":false,"schema":{"type":"string"}},{"description":"Translate response into one of 31 supported language codes. Unsupported code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/spiritual/rudraksha"},"data":[{"deity":"Lord Hanuman","planet":"Mars","rudraksha":"3 Mukhi"},{"deity":"Lord Hanuman / Shani Dev","planet":"Saturn","rudraksha":"7 Mukhi"}],"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (calculation failed — auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 UNAUTHORIZED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (internal error — auto-refund)"}},"summary":"Recommends the Rudraksha bead (mukhi) suited to the weakest planets in your chart, with the presiding deity for each.","tags":["Spirituality"]}},"/v2/spiritual/yantra":{"post":{"parameters":[{"description":"API key as 'Bearer <vk_live_... key>'. (Legacy 'X-API-Key' also accepted.)","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}},{"description":"Reseller/end-user attribution id.","in":"header","name":"x-end-user-id","required":false,"schema":{"type":"string"}},{"description":"Translate response into one of 31 supported language codes. Unsupported code returns 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"Asia/Kolkata"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"charged":2,"currency":"USD","endpoint":"/v2/spiritual/yantra"},"data":[{"direction":"South","planet":"Mars","yantra":"Mangal Yantra"},{"direction":"West","planet":"Saturn","yantra":"Shani Yantra"}],"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (calculation failed — auto-refund)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 UNAUTHORIZED"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (internal error — auto-refund)"}},"summary":"Recommends the protective Yantra suited to the weakest planets in your chart, with the direction in which to install each.","tags":["Spirituality"]}},"/v2/tarot/ai-interpretation":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"cardCount":3,"question":"What should I know about the year ahead?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/ai-interpretation"},"data":{"reading":{"aiContext":{"cardContext":[{"cardName":"Wheel of Fortune","element":"fire","keywords":["change","cycles","fate"],"meaning":"Good luck, karma, life cycles, destiny, turning point","orientation":"upright","position":"Card 1","positionMeaning":"Position 1 in your reading","suit":null}],"question":"What should I know about the year ahead?","spreadType":"free-form","systemContext":"You are an experienced tarot reader providing insightful interpretations. Spread type: free-form. The querent asks: \"What should I know about the year ahead?\" Provide a cohesive narrative connecting all cards in their positions. Be empathetic, constructive, and avoid absolute predictions. Focus on guidance and self-reflection rather than fortune-telling."},"cards":[{"card":{"arcana":"major","element":"fire","id":"major-10","keywords":["change","cycles","fate"],"name":"Wheel of Fortune","suit":null},"interpretation":"Good luck, karma, life cycles, destiny, turning point","isReversed":false,"position":{"index":0,"meaning":"Position 1 in your reading","name":"Card 1"}}],"question":"What should I know about the year ahead?","spread":{"cardCount":3,"id":"free-form","name":"AI Interpretation"},"timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Free-form tarot reading with structured interpretive context for a question of any kind.","tags":["Tarot"]}},"/v2/tarot/astro-fusion":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dateOfBirth":"1990-05-15","question":"What is my life path this year?","seed":"optional-fallback-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/astro-fusion"},"data":{"reading":{"astroFusion":{"dateOfBirth":"1990-05-15","fusionType":"birth-chart-tarot","note":"Cards drawn with birth-date energy signature. Combine with /v2/astrology endpoints for full chart overlay."},"cards":[{"card":{"arcana":"major","element":"earth","id":"major-21","keywords":["completion","achievement","fulfillment"],"name":"The World","suit":null},"interpretation":"Completion, integration, accomplishment, travel","isReversed":false,"position":{"index":0,"meaning":"What has led to this moment","name":"Past"}}],"question":"What is my life path this year?","spread":{"cardCount":3,"id":"three-card","name":"Three Card Spread"},"summary":"This reading is dominated by earth energy, suggesting a focus on stability, material matters, and practicality.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Birth-date-seeded three-card reading that fuses tarot energy with astrological context.","tags":["Tarot"]}},"/v2/tarot/card-of-the-day":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output (31 languages supported).","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/card-of-the-day"},"data":{"cardOfTheDay":{"card":{"arcana":"major","element":"air","id":"major-00","keywords":["beginnings","innocence","adventure","idealism"],"name":"The Fool","suit":null},"date":"2026-06-14","isReversed":false,"meaning":"New beginnings, innocence, spontaneity, free spirit"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Today's tarot card with its meaning — the same card for everyone, deterministic by date.","tags":["Tarot"]}},"/v2/tarot/card/{name}":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Card name, URL-encoded (case-insensitive; partial match allowed, e.g. \"The Fool\" or \"Ace of Wands\").","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/card/{name}"},"data":{"card":{"arcana":"major","element":"air","id":"major-00","keywords":["beginnings","innocence","adventure","idealism"],"name":"The Fool","number":0,"reversedMeaning":"Recklessness, risk-taking, naivety, foolishness","rulingPlanet":"Uranus","suit":null,"uprightMeaning":"New beginnings, innocence, spontaneity, free spirit","yesNoAnswer":"yes","zodiacSign":null},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CARD_NOT_FOUND (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Look up a single tarot card by name and get its full meaning, keywords, and correspondences.","tags":["Tarot"]}},"/v2/tarot/cards/major-arcana":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/cards/major-arcana"},"data":{"arcana":"major","cards":[{"arcana":"major","element":"air","id":"major-00","keywords":["beginnings","innocence","adventure","idealism"],"name":"The Fool","number":0,"reversedMeaning":"Recklessness, risk-taking, naivety, foolishness","rulingPlanet":"Uranus","suit":null,"uprightMeaning":"New beginnings, innocence, spontaneity, free spirit","yesNoAnswer":"yes","zodiacSign":null}],"count":22,"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Full reference list of all 22 Major Arcana cards with meanings, keywords, and elements.","tags":["Tarot"]}},"/v2/tarot/cards/minor-arcana":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/cards/minor-arcana"},"data":{"arcana":"minor","cards":[{"arcana":"minor","element":"fire","id":"wands-01","keywords":["inspiration","potential","creation","growth"],"name":"Ace of Wands","number":1,"reversedMeaning":"Delays, lack of motivation, creative blocks","rulingPlanet":null,"suit":"wands","uprightMeaning":"Inspiration, new opportunities, growth, potential","yesNoAnswer":"yes","zodiacSign":null}],"count":56,"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Full reference list of all 56 Minor Arcana cards across the four suits.","tags":["Tarot"]}},"/v2/tarot/cards/suit/{suit}":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Suit name: wands, cups, swords, or pentacles (case-insensitive).","in":"path","name":"suit","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/cards/suit/{suit}"},"data":{"cards":[{"arcana":"minor","element":"fire","id":"wands-01","keywords":["inspiration","potential","creation","growth"],"name":"Ace of Wands","number":1,"reversedMeaning":"Delays, lack of motivation, creative blocks","rulingPlanet":null,"suit":"wands","uprightMeaning":"Inspiration, new opportunities, growth, potential","yesNoAnswer":"yes","zodiacSign":null}],"count":14,"suit":"wands","system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_SUIT (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"All 14 cards belonging to a single tarot suit (wands, cups, swords, or pentacles).","tags":["Tarot"]}},"/v2/tarot/compatibility":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"personA":"Riya","personB":"Arjun","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/compatibility"},"data":{"reading":{"cards":[{"card":{"arcana":"minor","element":"water","id":"cups-02","keywords":["partnership","union","attraction"],"name":"Two of Cups","suit":"cups"},"interpretation":"Unified love, partnership, mutual attraction","isReversed":false,"position":{"index":0,"meaning":"Energy representing Riya","name":"Person A"}},{"card":{"arcana":"minor","element":"earth","id":"pentacles-10","keywords":["legacy","family","stability"],"name":"Ten of Pentacles","suit":"pentacles"},"interpretation":"Wealth, financial security, family, long-term success","isReversed":false,"position":{"index":2,"meaning":"The dynamic between them","name":"Connection"}}],"elementHarmony":"harmonious","personA":"Riya","personB":"Arjun","question":"Compatibility between Riya and Arjun","spread":{"cardCount":3,"id":"compatibility","name":"Tarot Compatibility"},"timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Three-card compatibility reading between two named people with an element-harmony verdict.","tags":["Tarot"]}},"/v2/tarot/draw/career":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"What direction should my career take?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/career"},"data":{"reading":{"cards":[{"card":{"arcana":"minor","element":"earth","id":"pentacles-03","keywords":["teamwork","skill","collaboration"],"name":"Three of Pentacles","suit":"pentacles"},"interpretation":"Teamwork, collaboration, building, skill development","isReversed":false,"position":{"index":0,"meaning":"Where your career stands now","name":"Current Path"}}],"question":"What direction should my career take?","spread":{"cardCount":5,"id":"career","name":"Career Spread"},"summary":"This reading is dominated by earth energy, suggesting a focus on stability, material matters, and practicality.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Tarot reading focused on career direction, opportunities, and professional guidance.","tags":["Tarot"]}},"/v2/tarot/draw/celtic-cross":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"What do I need to understand about my current situation?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/celtic-cross"},"data":{"reading":{"cards":[{"card":{"arcana":"major","element":"fire","id":"major-10","keywords":["change","cycles","fate"],"name":"Wheel of Fortune","suit":null},"interpretation":"Good luck, karma, life cycles, destiny, turning point","isReversed":false,"position":{"index":0,"meaning":"Your current situation","name":"Present"}}],"question":"What do I need to understand about my current situation?","spread":{"cardCount":10,"id":"celtic-cross","name":"Celtic Cross"},"summary":"This reading is dominated by fire energy, suggesting a focus on passion, action, and creativity.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Classic 10-card Celtic Cross spread for an in-depth reading of a situation.","tags":["Tarot"]}},"/v2/tarot/draw/chakra":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"Where is my energy out of balance?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/chakra"},"data":{"reading":{"cards":[{"card":{"arcana":"minor","element":"earth","id":"pentacles-04","keywords":["security","control","stability"],"name":"Four of Pentacles","suit":"pentacles"},"interpretation":"Saving money, security, conservatism, scarcity, control","isReversed":false,"position":{"index":0,"meaning":"Grounding and security","name":"Root Chakra"}}],"question":"Where is my energy out of balance?","spread":{"cardCount":7,"id":"chakra","name":"Chakra Spread"},"summary":"This reading is dominated by earth energy, suggesting a focus on stability, material matters, and practicality.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Seven-card chakra reading showing the energy state of each of the seven chakras.","tags":["Tarot"]}},"/v2/tarot/draw/custom":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"cardCount":5,"question":"Give me a five-card overview","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/custom"},"data":{"reading":{"cards":[{"card":{"arcana":"major","element":"air","id":"major-17","keywords":["hope","faith","renewal"],"name":"The Star","suit":null},"interpretation":"Hope, faith, purpose, renewal, spirituality","isReversed":false,"position":{"index":0,"meaning":"Card 1 in your custom reading","name":"Position 1"}}],"question":"Give me a five-card overview","spread":{"cardCount":5,"id":"custom","name":"Custom Spread"},"summary":"This reading is dominated by air energy, suggesting a focus on thought, communication, and intellect.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CARDCOUNT_OUT_OF_RANGE (must be integer 1-15; refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Draw a custom number of cards (1–15) for a reading sized to your needs.","tags":["Tarot"]}},"/v2/tarot/draw/decision":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"Should I move to a new city?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/decision"},"data":{"reading":{"cards":[{"card":{"arcana":"major","element":"fire","id":"major-08","keywords":["courage","patience","control"],"name":"Strength","suit":null},"interpretation":"Strength, courage, persuasion, influence, compassion","isReversed":false,"position":{"index":0,"meaning":"The heart of the decision","name":"The Situation"}}],"question":"Should I move to a new city?","spread":{"cardCount":5,"id":"decision","name":"Decision Spread"},"summary":"This reading is dominated by fire energy, suggesting a focus on passion, action, and creativity.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Decision-making spread weighing the options and likely outcomes of a choice.","tags":["Tarot"]}},"/v2/tarot/draw/horseshoe":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"What surrounds my current decision?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/horseshoe"},"data":{"reading":{"cards":[{"card":{"arcana":"minor","element":"air","id":"swords-05","keywords":["conflict","tension","loss"],"name":"Five of Swords","suit":"swords"},"interpretation":"Conflict, disagreements, competition, defeat","isReversed":false,"position":{"index":0,"meaning":"Past influences on the situation","name":"Past"}}],"question":"What surrounds my current decision?","spread":{"cardCount":7,"id":"horseshoe","name":"Horseshoe Spread"},"summary":"This reading is dominated by air energy, suggesting a focus on thought, communication, and intellect.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Seven-card horseshoe spread for a broad overview of a situation and its influences.","tags":["Tarot"]}},"/v2/tarot/draw/love":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"Where is my relationship headed?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/love"},"data":{"reading":{"cards":[{"card":{"arcana":"minor","element":"water","id":"cups-02","keywords":["partnership","union","attraction"],"name":"Two of Cups","suit":"cups"},"interpretation":"Unified love, partnership, mutual attraction","isReversed":false,"position":{"index":0,"meaning":"Your role in the relationship","name":"You"}}],"question":"Where is my relationship headed?","spread":{"cardCount":6,"id":"love","name":"Love Spread"},"summary":"This reading is dominated by water energy, suggesting a focus on emotions, intuition, and relationships.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Six-card love and relationship reading exploring connection, challenges, and outlook.","tags":["Tarot"]}},"/v2/tarot/draw/monthly":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"What does the month ahead hold for me?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/monthly"},"data":{"reading":{"cards":[{"card":{"arcana":"major","element":"fire","id":"major-19","keywords":["joy","success","vitality"],"name":"The Sun","suit":null},"interpretation":"Positivity, fun, warmth, success, vitality","isReversed":false,"position":{"index":0,"meaning":"Theme for the first part of the month","name":"Week 1"}}],"question":"What does the month ahead hold for me?","spread":{"cardCount":12,"id":"monthly","name":"Monthly Forecast"},"summary":"This reading is dominated by fire energy, suggesting a focus on passion, action, and creativity.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Twelve-card monthly forecast outlining themes and energies for the period ahead.","tags":["Tarot"]}},"/v2/tarot/draw/past-life":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"What karmic lesson am I carrying?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/past-life"},"data":{"reading":{"cards":[{"card":{"arcana":"major","element":"water","id":"major-13","keywords":["endings","transformation","transition"],"name":"Death","suit":null},"interpretation":"Endings, change, transformation, transition","isReversed":false,"position":{"index":0,"meaning":"A theme from a past life","name":"Past Life"}}],"question":"What karmic lesson am I carrying?","spread":{"cardCount":5,"id":"past-life","name":"Past Life Spread"},"summary":"This reading is dominated by water energy, suggesting a focus on emotions, intuition, and relationships.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Past-life themed reading exploring karmic patterns and lessons carried forward.","tags":["Tarot"]}},"/v2/tarot/draw/relationship":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"How can we strengthen our bond?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/relationship"},"data":{"reading":{"cards":[{"card":{"arcana":"minor","element":"water","id":"cups-10","keywords":["harmony","family","fulfillment"],"name":"Ten of Cups","suit":"cups"},"interpretation":"Harmony, marriage, happiness, alignment","isReversed":false,"position":{"index":0,"meaning":"Your energy in the relationship","name":"You"}}],"question":"How can we strengthen our bond?","spread":{"cardCount":7,"id":"relationship","name":"Relationship Spread"},"summary":"This reading is dominated by water energy, suggesting a focus on emotions, intuition, and relationships.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Two-person relationship reading showing each person's energy and the dynamic between them.","tags":["Tarot"]}},"/v2/tarot/draw/single":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"What should I focus on today?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/single"},"data":{"reading":{"cards":[{"card":{"arcana":"major","element":"air","id":"major-00","keywords":["beginnings","innocence","adventure","idealism"],"name":"The Fool","suit":null},"interpretation":"New beginnings, innocence, spontaneity, free spirit","isReversed":false,"position":{"index":0,"meaning":"Your guidance","name":"The Card"}}],"question":"What should I focus on today?","spread":{"cardCount":1,"id":"single","name":"Single Card"},"summary":"This reading is dominated by air energy, suggesting a focus on thought, communication, and intellect.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Draw a single tarot card for a quick, focused reading on your question.","tags":["Tarot"]}},"/v2/tarot/draw/spiritual":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"What does my soul need right now?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/spiritual"},"data":{"reading":{"cards":[{"card":{"arcana":"major","element":"water","id":"major-02","keywords":["intuition","mystery","inner voice"],"name":"The High Priestess","suit":null},"interpretation":"Intuition, sacred knowledge, divine feminine, subconscious mind","isReversed":false,"position":{"index":0,"meaning":"Your current spiritual path","name":"Your Path"}}],"question":"What does my soul need right now?","spread":{"cardCount":5,"id":"spiritual","name":"Spiritual Guidance"},"summary":"This reading is dominated by water energy, suggesting a focus on emotions, intuition, and relationships.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Tarot reading focused on spiritual growth, inner guidance, and the soul's path.","tags":["Tarot"]}},"/v2/tarot/draw/three-card":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"How is my career developing?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/three-card"},"data":{"reading":{"cards":[{"card":{"arcana":"minor","element":"fire","id":"wands-01","keywords":["inspiration","potential","creation","growth"],"name":"Ace of Wands","suit":"wands"},"interpretation":"Inspiration, new opportunities, growth, potential","isReversed":false,"position":{"index":0,"meaning":"What has led to this moment","name":"Past"}}],"question":"How is my career developing?","spread":{"cardCount":3,"id":"three-card","name":"Three Card Spread"},"summary":"This reading is dominated by fire energy, suggesting a focus on passion, action, and creativity.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Past / Present / Future three-card reading interpreting your question across time.","tags":["Tarot"]}},"/v2/tarot/draw/weekly":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"What should I watch for this week?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/weekly"},"data":{"reading":{"cards":[{"card":{"arcana":"minor","element":"earth","id":"pentacles-08","keywords":["diligence","mastery","skill"],"name":"Eight of Pentacles","suit":"pentacles"},"interpretation":"Apprenticeship, repetitive tasks, skill, diligence","isReversed":false,"position":{"index":0,"meaning":"Energy for Monday","name":"Monday"}}],"question":"What should I watch for this week?","spread":{"cardCount":7,"id":"weekly","name":"Weekly Spread"},"summary":"This reading is dominated by earth energy, suggesting a focus on stability, material matters, and practicality.","timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 CALCULATION_FAILED (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Seven-card weekly reading with a card and theme for each day of the week.","tags":["Tarot"]}},"/v2/tarot/draw/yes-no":{"post":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"question":"Should I take the new job offer?","seed":"optional-deterministic-seed"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/draw/yes-no"},"data":{"reading":{"answer":"yes","cards":[{"card":{"arcana":"major","element":"air","id":"major-00","keywords":["beginnings","innocence","adventure","idealism"],"name":"The Fool","suit":null},"interpretation":"The Fool (upright): New beginnings, innocence, spontaneity, free spirit","isReversed":false,"position":{"index":0,"meaning":"The answer to your yes or no question","name":"Answer"}}],"confidence":"high","question":"Should I take the new job offer?","spread":{"cardCount":1,"id":"yes-no","name":"Yes/No Draw"},"timestamp":"2026-06-14T10:30:00.000Z"},"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Single-card yes / no / maybe answer with a confidence level for a direct question.","tags":["Tarot"]}},"/v2/tarot/element/{element}":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Element: fire, water, air, or earth (case-insensitive).","in":"path","name":"element","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/element/{element}"},"data":{"cards":[{"arcana":"minor","element":"fire","id":"wands-01","keywords":["inspiration","potential","creation","growth"],"name":"Ace of Wands","number":1,"reversedMeaning":"Delays, lack of motivation, creative blocks","rulingPlanet":null,"suit":"wands","uprightMeaning":"Inspiration, new opportunities, growth, potential","yesNoAnswer":"yes","zodiacSign":null}],"count":20,"element":"fire","system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_ELEMENT (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"All tarot cards aligned to one of the four classical elements.","tags":["Tarot"]}},"/v2/tarot/spreads":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/spreads"},"data":{"count":15,"spreads":[{"cardCount":3,"id":"three-card","name":"Three Card Spread","positions":[{"index":0,"meaning":"What has led to this moment","name":"Past"},{"index":1,"meaning":"Where you are right now","name":"Present"},{"index":2,"meaning":"Where you are headed","name":"Future"}]}],"system":"tarot"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"List every available reading spread with its positions and card counts.","tags":["Tarot"]}},"/v2/tarot/zodiac/{sign}":{"get":{"parameters":[{"description":"API key (vk_live_* / vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Zodiac sign: aries, taurus, gemini, cancer, leo, virgo, libra, scorpio, sagittarius, capricorn, aquarius, or pisces (case-insensitive).","in":"path","name":"sign","required":true,"schema":{"type":"string"}},{"description":"Optional language code for translated output.","in":"query","name":"lang","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"charged":1,"currency":"USD","endpoint":"/v2/tarot/zodiac/{sign}"},"data":{"cards":[{"arcana":"major","element":"fire","id":"major-04","keywords":["authority","structure","leadership"],"name":"The Emperor","number":4,"reversedMeaning":"Tyranny, rigidity, coldness, domination","rulingPlanet":"Mars","suit":null,"uprightMeaning":"Authority, structure, control, fatherhood","yesNoAnswer":"yes","zodiacSign":"aries"}],"count":1,"system":"tarot","zodiacSign":"aries"},"meta":{"engine":"vedika-intelligence","version":"2.1.0"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_ZODIAC_SIGN (refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 SUBSCRIPTION_REQUIRED"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500"}},"summary":"Tarot cards traditionally associated with a given zodiac sign.","tags":["Tarot"]}},"/v2/vastu/ar/anchor-recommendations":{"post":{"operationId":"postV2VastuArAnchorRecommendations","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"bearingDeg":0,"planToWorld":{"origin":[0,0,0],"units":"metres","xAxis":[1,0,0],"yAxis":[0,0,-1]},"plotPolygon":[[0,0],[9,0],[9,9],[0,9]]},"schema":{"$ref":"#/components/schemas/VastuArAnchorRecommendationsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArAnchorRecommendationsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Inside-plot marker coordinates in an explicit world frame","tags":["Vastu"]}},"/v2/vastu/ar/attestation/challenge":{"post":{"description":"Issues a single-use device-attestation challenge for a native app. Unbilled: it computes and sells nothing; the ar/room-capture, ar/scan-quality or scans/save call that spends it is billed as before. The challenge expires after 5 minutes, is bound to your account and platform, and is spent by the first verification attempt, successful or not. Until this deployment is configured for a platform the call returns 200 with challenge null and deviceAttestation.status not_configured, and stores nothing. 503 ATTESTATION_UNAVAILABLE means attestation is configured but its store is unreachable. The browser cannot attest; this is for iOS App Attest and Android Play Integrity only.","operationId":"postV2VastuArAttestationChallenge","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArAttestationChallengeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArAttestationChallengeResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"ATTESTATION_UNAVAILABLE: attestation is configured but its challenge store is unreachable. Nothing is stored or charged.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Device attestation: challenge","tags":["Vastu"]}},"/v2/vastu/ar/capture-merge":{"post":{"description":"Explicit rigid registration per floor, with two or more corresponding controls or shared door endpoints per link. Payloads use the existing strict roomCapture schema. Floors declare physical elevations and the true-north transform of each floor reference capture. A disconnected graph, degenerate controls, pair RMS/max residual or control cycle over tolerance returns 400 before billing. No scale fitting, inferred origins or silent merge. Price: measured attributable compute cost multiplied by 4, settled with half-even USD-cent rounding and a positive $0.01 minimum. The pricing API quote is a minimum, not a fixed price. Use maxChargeUsd to bound the wallet debit; invalid inputs, uncomputed results and exceeded budgets are uncharged.","operationId":"postV2VastuArCaptureMerge","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"captures":[{"floorIndex":0,"id":"a","payload":{"attestation":"caller-reported","captureId":"fx-room-3x4-yaw0","capturedAtEpoch":1789000000,"device":{"depth":"none","method":"webxr-hit","platform":"web"},"frame":{"axes":"+X east,+Y true north","north":{"compassConfidence":0.939,"declinationDeg":1.2,"declinationProvenance":"fixture","headingSource":"deviceorientationabsolute","referenceFrame":"true","yawSamples":17,"yawSpreadDeg":1.22},"planToWorld":{"origin":[0.7,-1.4,2.3],"units":"metres","xAxis":[1,0,-5.12e-7],"yAxis":[-5.12e-7,0,-1]},"units":"metres"},"outline":{"polygon":[[0,0],[9,0],[9,12],[0,12]],"source":"traced"},"quality":{"closureGapM":0,"coveragePercent":null,"expectedRoomCount":1,"gpsConfidence":null,"pointCloudDensity":null,"pointCloudDensityBasis":"none","polygonClosure":true,"roomCount":1,"roomsTagged":1,"scanDurationSec":160,"scannedAreaM2":108},"rooms":[{"areaM2":12,"floorIndex":0,"heightM":2.8,"id":"r1","label":"kitchen","labelSource":"user","openings":[{"centerXY":[9,1],"confidence":"high","heightM":2.1,"kind":"door","widthM":0.9}],"polygon":[[6,0],[9,0],[9,4],[6,4]]}],"schema":"vedika.roomCapture/1"}},{"floorIndex":0,"id":"b","payload":{"attestation":"caller-reported","captureId":"fx-room-3x4-yaw0","capturedAtEpoch":1789000000,"device":{"depth":"none","method":"webxr-hit","platform":"web"},"frame":{"axes":"+X east,+Y true north","north":{"compassConfidence":0.939,"declinationDeg":1.2,"declinationProvenance":"fixture","headingSource":"deviceorientationabsolute","referenceFrame":"true","yawSamples":17,"yawSpreadDeg":1.22},"planToWorld":{"origin":[0.7,-1.4,2.3],"units":"metres","xAxis":[1,0,-5.12e-7],"yAxis":[-5.12e-7,0,-1]},"units":"metres"},"outline":{"polygon":[[0,0],[9,0],[9,12],[0,12]],"source":"traced"},"quality":{"closureGapM":0,"coveragePercent":null,"expectedRoomCount":1,"gpsConfidence":null,"pointCloudDensity":null,"pointCloudDensityBasis":"none","polygonClosure":true,"roomCount":1,"roomsTagged":1,"scanDurationSec":160,"scannedAreaM2":108},"rooms":[{"areaM2":12,"floorIndex":0,"heightM":2.8,"id":"r1","label":"kitchen","labelSource":"user","openings":[{"centerXY":[9,1],"confidence":"high","heightM":2.1,"kind":"door","widthM":0.9}],"polygon":[[6,0],[9,0],[9,4],[6,4]]}],"schema":"vedika.roomCapture/1"}}],"floors":[{"bearingDeg":0,"elevationM":0,"floorIndex":0,"originXY":[0,0]}],"links":[{"controlPoints":[{"fromXY":[0,0],"toXY":[5,0]},{"fromXY":[3,0],"toXY":[8,0]},{"fromXY":[0,4],"toXY":[5,4]}],"fromCaptureId":"b","toCaptureId":"a"}],"toleranceM":0.02},"schema":{"$ref":"#/components/schemas/VastuArCaptureMergeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArCaptureMergeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request or computed charge exceeds maxChargeUsd; no debit attempted."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute meter or billing unavailable; paid data withheld."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Capture merge","tags":["Vastu"],"x-pricing":{"basis":"measured attributable compute cost","budgetField":"maxChargeUsd","minimumChargeUsd":"0.01","multiplier":4,"priceType":"minimum","settlement":"half-even USD cents, positive one-cent minimum"}}},"/v2/vastu/ar/deity-icons":{"post":{"operationId":"postV2VastuArDeityIcons","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArDeityIconsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArDeityIconsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Zone and devata nameplates in SVG and PNG","tags":["Vastu"]}},"/v2/vastu/ar/heatmap-raster":{"post":{"operationId":"postV2VastuArHeatmapRaster","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"rooms":[{"roomType":"toilet","zone":"NE"}]},"schema":{"$ref":"#/components/schemas/VastuArHeatmapRasterRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArHeatmapRasterResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Nine-zone PNG disturbance mask from supplied rooms","tags":["Vastu"]}},"/v2/vastu/ar/room-capture":{"post":{"description":"A caller-reported device room capture (vedika.roomCapture/1). The server validates it, converts it into the plan/analyze, audit/floor-plan-detailed and ar/scan-quality requests, and runs them. The outline must be traced, at least one room must be labelled, and every room must stay inside the outline. Meshes are never uploaded; the body is limited to 256 KiB and 4096 corner points. A refused capture is not charged.Optional deviceAttestation (see ar/attestation/challenge) is verified before compute and billing: 400 ATTESTATION_INVALID or 503 ATTESTATION_UNAVAILABLE charge nothing. The response reports deviceAttestation.status; only a verified scan gains scanQuality deviceAttested=true, and scores never change.","operationId":"postV2VastuArRoomCapture","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"capture":{"attestation":"caller-reported","captureId":"sample-capture-0001","capturedAtEpoch":1789000000,"device":{"depth":"none","method":"arkit-raycast","platform":"ios"},"frame":{"axes":"+X east,+Y true north","north":{"compassConfidence":0.939,"declinationDeg":1.2,"declinationProvenance":"fixture","headingSource":"CLHeading.magneticHeading","referenceFrame":"true","yawSamples":17,"yawSpreadDeg":1.22},"planToWorld":{"origin":[0.7,-1.4,2.3],"units":"metres","xAxis":[-0.601814614,0,0.798635818],"yAxis":[0.798635818,0,0.601814614]},"units":"metres"},"outline":{"polygon":[[0,0],[9,0],[9,12],[0,12]],"source":"traced"},"quality":{"closureGapM":0,"coveragePercent":null,"expectedRoomCount":1,"gpsConfidence":0.9,"pointCloudDensity":900,"pointCloudDensityBasis":"feature-points","polygonClosure":true,"roomCount":1,"roomsTagged":1,"scanDurationSec":160,"scannedAreaM2":108},"rooms":[{"areaM2":12,"floorIndex":0,"heightM":2.8,"id":"r1","label":"kitchen","labelSource":"user","openings":[{"centerXY":[9,1],"confidence":"high","heightM":2.1,"kind":"door","widthM":0.9}],"polygon":[[6,0],[9,0],[9,4],[6,4]]}],"schema":"vedika.roomCapture/1"}},"schema":{"$ref":"#/components/schemas/VastuArRoomCaptureRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArRoomCaptureResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"ATTESTATION_UNAVAILABLE: device attestation is configured but cannot be checked. Nothing is charged."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Device room capture to plan analysis, audit and scan quality","tags":["Vastu"]}},"/v2/vastu/ar/scan-quality":{"post":{"description":"Checks caller-reported scan telemetry against declared product gates. Grade and acceptForAudit do not attest sensor capture, measured north or whole-building physical coverage.Optional deviceAttestation (see ar/attestation/challenge) is verified before compute and billing: 400 ATTESTATION_INVALID or 503 ATTESTATION_UNAVAILABLE charge nothing. The response reports deviceAttestation.status; only a verified scan gains scanQuality deviceAttested=true, and scores never change.","operationId":"postV2VastuArScanQuality","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArScanQualityRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArScanQualityResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"ATTESTATION_UNAVAILABLE: device attestation is configured but cannot be checked. Nothing is charged."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: ar/scan-quality.","tags":["Vastu"]}},"/v2/vastu/ar/true-north-calibrate":{"post":{"description":"Computes a solar alignment offset and checks caller-reported heading accuracy and sample age. Reliability does not independently verify device alignment or current calibration.","operationId":"postV2VastuArTrueNorthCalibrate","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"2026-09-07T09:00:00+05:30","deviceHeadingAccuracyDeg":3,"deviceHeadingAtSunDeg":150,"headingSampleAgeMs":0,"lat":28.6139,"lon":77.209},"schema":{"$ref":"#/components/schemas/VastuArTrueNorthCalibrateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArTrueNorthCalibrateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: ar/true-north-calibrate.","tags":["Vastu"]}},"/v2/vastu/ar/yantra-meshes":{"post":{"operationId":"postV2VastuArYantraMeshes","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArYantraMeshesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArYantraMeshesResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Modern nine-zone diagram in glTF or USDZ","tags":["Vastu"]}},"/v2/vastu/ar/zone-textures":{"post":{"operationId":"postV2VastuArZoneTextures","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArZoneTexturesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArZoneTexturesResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Nine-zone texture atlas and UV coordinates","tags":["Vastu"]}},"/v2/vastu/archive/delete":{"post":{"description":"Free owner-only physical erasure of active property rows, membership/comments/reviews/activity and linked scan/archive objects including all versions and delete markers. First call fences writes and can return 202 pending with retryAfterEpoch. Retry after the 210-second request drain. A 200 completed response contains a canonical SHA-256 receipt listing removals. Denied or incomplete purges never report completion. Encrypted recovery backups expire within 35 days; restore requires replay of erasure fences. Minimal pseudonymous fences/receipt remain to block recreation. Replays return the same receipt.","operationId":"postV2VastuArchiveDelete","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveDeleteResponse"}}},"description":"Success"},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveDeleteResponse"}}},"description":"Erasure pending; retry at retryAfterEpoch. No charge."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"archive delete","tags":["Vastu"]}},"/v2/vastu/archive/export":{"post":{"description":"Write a real ZIP containing property data and linked IDs; return a download link valid for one hour. The export object expires after one day; upload or signing failure refunds the charge. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2VastuArchiveExport","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveExportRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveExportResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"archive export","tags":["Vastu"]}},"/v2/vastu/archive/summary":{"post":{"description":"Read archive retention metadata for free. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2VastuArchiveSummary","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveSummaryRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveSummaryResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"archive summary","tags":["Vastu"]}},"/v2/vastu/archive/tier":{"post":{"description":"Explicit paid retention extension. preview=true quotes only without charge or mutation. Meter uses measured stored bytes and index copies; caller storageGb is refused. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2VastuArchiveTier","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveTierRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuArchiveTierResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"archive tier","tags":["Vastu"]}},"/v2/vastu/assessments":{"post":{"operationId":"postV2VastuAssessments","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAssessmentsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAssessmentsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"properties":{"billing":{"properties":{"charged":{"enum":[0],"type":"number"}},"type":"object"},"code":{"example":"RECEIPT_SIGNING_UNAVAILABLE","type":"string"},"error":{"type":"string"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Receipt signing key unavailable; no charge."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: assessments.","tags":["Vastu"]}},"/v2/vastu/assessments/batch":{"post":{"description":"Synchronous batch of 1 to 20 properties; serialized JSON at most 512 KiB. Retain the required Idempotency-Key header for retries. Item IDs are unique; reordering does not change a child charge identity. Each item uses the existing assessment price with no batch fee.","operationId":"postV2VastuAssessmentsBatch","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"Required. Stable key of 1 to 200 characters; retain it for retries of the same request. A new key is a new request.","in":"header","name":"Idempotency-Key","required":true,"schema":{"example":"batch-example-0001","maxLength":200,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"items":[{"assessment":{"inputSource":"seller-supplied","rooms":[{"roomType":"kitchen","zone":"SE"},{"roomType":"bedroom","zone":"SW"},{"roomType":"pooja","zone":"NE"}]},"id":"property-1"}]},"schema":{"$ref":"#/components/schemas/VastuAssessmentsBatchRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAssessmentsBatchResponse"}}},"description":"Batch executed. Inspect every item status; a 200 batch can contain per-item failures. An insufficient_data item is successful and unbilled."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Assess 1 to 20 named properties with per-item outcomes and charges.","tags":["Vastu"]}},"/v2/vastu/audit/floor-plan":{"post":{"operationId":"postV2VastuAuditFloorPlan","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"Optional retained ID for one logical request. Reuse the same ID, path and body on retries; use a new ID for a new audit. X-Request-Id takes precedence over X-Idempotency-Key, then Idempotency-Key. This is not a permanent result cache.","in":"header","name":"X-Request-Id","required":false,"schema":{"type":"string"}},{"description":"Optional retained ID for one logical request. Reuse the same ID, path and body on retries; use a new ID for a new audit. X-Request-Id takes precedence over X-Idempotency-Key, then Idempotency-Key. This is not a permanent result cache.","in":"header","name":"X-Idempotency-Key","required":false,"schema":{"type":"string"}},{"description":"Optional retained ID for one logical request. Reuse the same ID, path and body on retries; use a new ID for a new audit. X-Request-Id takes precedence over X-Idempotency-Key, then Idempotency-Key. This is not a permanent result cache.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditFloorPlanRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditFloorPlanResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"429":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"error":{"type":"string"},"message":{"type":"string"},"retryAfter":{"description":"Optional delay in seconds before retrying.","minimum":0,"type":"integer"}},"type":"object"}}},"description":"Rate or daily usage limit exceeded. Honor Retry-After when present, or the JSON retryAfter delay. Retry with the retained request ID.","headers":{"Retry-After":{"description":"Optional delay in seconds before retrying. Some rate-limit responses provide only JSON retryAfter.","schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: audit/floor-plan.","tags":["Vastu"]}},"/v2/vastu/audit/floor-plan-detailed":{"post":{"operationId":"postV2VastuAuditFloorPlanDetailed","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditFloorPlanDetailedRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditFloorPlanDetailedResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: audit/floor-plan-detailed.","tags":["Vastu"]}},"/v2/vastu/audit/single-room":{"post":{"operationId":"postV2VastuAuditSingleRoom","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditSingleRoomRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuAuditSingleRoomResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: audit/single-room.","tags":["Vastu"]}},"/v2/vastu/compare/before-after-remedy":{"post":{"description":"Compares computed scores from supplied inputs. A score change is not measured evidence that a remedy worked.","operationId":"postV2VastuCompareBeforeAfterRemedy","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"remedies":[{"room":"kitchen","toZone":"southeast"}],"rooms":[{"roomType":"kitchen","zone":"northwest"},{"roomType":"bedroom","zone":"southwest"}]},"schema":{"$ref":"#/components/schemas/VastuCompareBeforeAfterRemedyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuCompareBeforeAfterRemedyResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: compare/before-after-remedy.","tags":["Vastu"]}},"/v2/vastu/compound/wall-analysis":{"post":{"operationId":"postV2VastuCompoundWallAnalysis","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuCompoundWallAnalysisRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuCompoundWallAnalysisResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: compound/wall-analysis.","tags":["Vastu"]}},"/v2/vastu/direction/auspicious-facing":{"post":{"operationId":"postV2VastuDirectionAuspiciousFacing","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"occupant":"family","purpose":"entrance"},"schema":{"$ref":"#/components/schemas/VastuDirectionAuspiciousFacingRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionAuspiciousFacingResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/auspicious-facing.","tags":["Vastu"]}},"/v2/vastu/direction/correct":{"post":{"description":"Converts a magnetic compass direction into a true-north zone using WMM2025 declination (valid 2025.0 up to 2030.0). A date outside 2025-01-01 to 2029-12-31, a geographic pole or the magnetic-pole blackout zone, where no declination is published, is a 400 INVALID_INPUT naming the field to change, returned before any charge.","operationId":"postV2VastuDirectionCorrect","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionCorrectRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionCorrectResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/correct.","tags":["Vastu"]}},"/v2/vastu/direction/declination":{"get":{"description":"Magnetic declination at a location and date, computed from the NOAA/BGS World Magnetic Model WMM2025 (degree-12 spherical-harmonic model, valid 2025.0 up to 2030.0) at sea level. Vastu is laid out to true north: true bearing = magnetic bearing + declinationDeg. A date outside the validity window (2025-01-01 to 2029-12-31), a geographic pole and the magnetic-pole blackout zone are each a 400 INVALID_INPUT that names the field to change, returned before any charge.","operationId":"getV2VastuDirectionDeclination","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"example":28.6139,"in":"query","name":"lat","required":true,"schema":{"maximum":90,"minimum":-90,"type":"number"}},{"example":77.209,"in":"query","name":"lon","required":true,"schema":{"maximum":180,"minimum":-180,"type":"number"}},{"description":"Optional ISO date or datetime. Omit to use the current UTC date and time. A date without a time means midnight UTC; a datetime without an offset is UTC. Invalid explicit values return 400. Declination is published for dates from 2025.0 up to 2030.0, the WMM2025 validity window; a date outside 2025-01-01 to 2029-12-31 returns 400 INVALID_INPUT naming the date field and the window, and nothing is charged.","example":"2026-07-13","in":"query","name":"date","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionDeclinationResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/declination.","tags":["Vastu"]},"post":{"description":"Magnetic declination at a location and date, computed from the NOAA/BGS World Magnetic Model WMM2025 (degree-12 spherical-harmonic model, valid 2025.0 up to 2030.0) at sea level. Vastu is laid out to true north: true bearing = magnetic bearing + declinationDeg. A date outside the validity window (2025-01-01 to 2029-12-31), a geographic pole and the magnetic-pole blackout zone are each a 400 INVALID_INPUT that names the field to change, returned before any charge.","operationId":"postV2VastuDirectionDeclination","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"date":"2026-07-13","lat":28.6139,"lon":77.209},"schema":{"$ref":"#/components/schemas/VastuDirectionDeclinationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionDeclinationResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/declination.","tags":["Vastu"]}},"/v2/vastu/direction/sun-path":{"post":{"operationId":"postV2VastuDirectionSunPath","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionSunPathRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionSunPathResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/sun-path.","tags":["Vastu"]}},"/v2/vastu/direction/zone-from-bearing":{"post":{"operationId":"postV2VastuDirectionZoneFromBearing","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionZoneFromBearingRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDirectionZoneFromBearingResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: direction/zone-from-bearing.","tags":["Vastu"]}},"/v2/vastu/elements/balance-suggest":{"post":{"operationId":"postV2VastuElementsBalanceSuggest","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuElementsBalanceSuggestRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuElementsBalanceSuggestResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: elements/balance-suggest.","tags":["Vastu"]}},"/v2/vastu/elements/distribution":{"post":{"operationId":"postV2VastuElementsDistribution","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuElementsDistributionRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuElementsDistributionResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: elements/distribution.","tags":["Vastu"]}},"/v2/vastu/entrance/obstruction-check":{"post":{"operationId":"postV2VastuEntranceObstructionCheck","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"distanceMeters":5,"feature":"tree","houseHeightMeters":6},"schema":{"$ref":"#/components/schemas/VastuEntranceObstructionCheckRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuEntranceObstructionCheckResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: entrance/obstruction-check.","tags":["Vastu"]}},"/v2/vastu/entrance/pada":{"post":{"operationId":"postV2VastuEntrancePada","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuEntrancePadaRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuEntrancePadaResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: entrance/pada.","tags":["Vastu"]}},"/v2/vastu/entrance/recommend":{"post":{"operationId":"postV2VastuEntranceRecommend","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuEntranceRecommendRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuEntranceRecommendResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: entrance/recommend.","tags":["Vastu"]}},"/v2/vastu/feed/listings":{"post":{"description":"Ingest at most 1000 listing rows: send exactly one of csv or rows. Only changed accepted rows are charged; unchanged duplicates and dryRun are free. Each failed write is refunded. Plan URLs are validated metadata and are not fetched. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge. The example sets dryRun to true, which parses and checks the rows without writing or charging; remove it to ingest. Each row needs externalId, revision, project, building, unit, floor and title (letters, digits, '_', '-', '/' and '.' only).","operationId":"postV2VastuFeedListings","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"example":"feed-example-0001","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dryRun":true,"rows":[{"building":"tower-a","externalId":"listing-0001","floor":"1","project":"example-project","revision":"v1","title":"Example 2BHK flat","unit":"101"}]},"schema":{"$ref":"#/components/schemas/VastuFeedListingsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuFeedListingsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"feed listings","tags":["Vastu"]}},"/v2/vastu/floor/level-analysis":{"post":{"operationId":"postV2VastuFloorLevelAnalysis","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuFloorLevelAnalysisRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuFloorLevelAnalysisResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: floor/level-analysis.","tags":["Vastu"]}},"/v2/vastu/fusion/chart":{"post":{"operationId":"postV2VastuFusionChart","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuFusionChartRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuFusionChartResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: fusion/chart.","tags":["Vastu"]}},"/v2/vastu/jobs":{"post":{"description":"Queue 1 to 1,000 assessment, plan-analyze or plan-report inputs and return 202 at once. Serialized body at most 5 MiB; each item input at most 128 KiB. The Idempotency-Key header is required: the same key and body return the same jobId; the same key with a different body returns 409. Nothing is held at submit: the wallet must cover maxCharge (the selected single-item operation price times the item count), and each item is charged that price only after it computes successfully, with a per-item retry identity so a worker rerun can never charge twice. If the wallet runs out mid-job the remaining items fail with INSUFFICIENT_BALANCE and the job ends partial; a revoked key fails the remaining items uncharged. At most 5 queued or running jobs per account. Jobs are readable for 30 days; item results for 7 days. Webhooks: pass webhookId from POST /api/enterprise/webhooks/create to receive one `vastu.job.completed`, `vastu.job.partial` or `vastu.job.failed` event when the job ends. Each delivery carries `Vedika-Signature: t=<unix>,v1=<hex HMAC-SHA256(secret, \"{t}.{raw body}\")>`, `Vedika-Event` and `Vedika-Delivery-Id`; verify over the raw body and reject t more than 5 minutes from your clock. During the 24 hours after a secret rotation the header carries one v1 per valid secret. Payloads carry only ids, counts and a results URL. Failed deliveries retry after 1m, 5m, 15m, 1h, 6h, 12h and 24h; answering 410 disables the webhook; redirects are never followed.","operationId":"postV2VastuJobs","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"Required. Stable key of 1 to 200 characters; retain it for retries of the same request. A new key is a new request.","in":"header","name":"Idempotency-Key","required":true,"schema":{"example":"jobs-example-0001","maxLength":200,"minLength":1,"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"items":[{"id":"flat-101","input":{"inputSource":"seller-supplied","rooms":[{"roomType":"kitchen","zone":"SE"},{"roomType":"bedroom","zone":"SW"},{"roomType":"pooja","zone":"NE"}]}},{"id":"flat-102","input":{"inputSource":"seller-supplied","rooms":[{"roomType":"kitchen","zone":"NE"},{"roomType":"bedroom","zone":"SW"}]}}],"operation":"assessments"},"schema":{"$ref":"#/components/schemas/VastuJobsRequest"}}},"required":true},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuJobsResponse"}}},"description":"Job queued (or, for a retry with the same key and body, the original job)."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid job body, Idempotency-Key, webhookId, or an API key type that cannot run jobs (API_KEY_NOT_SUPPORTED_FOR_JOBS)."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"INSUFFICIENT_BALANCE: the wallet does not cover maxCharge. Nothing is held or charged."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"IDEMPOTENCY_KEY_REUSED: this key was already used with a different body."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"TOO_MANY_ACTIVE_JOBS: the account already has 5 queued or running jobs."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"VASTU_JOBS_DISABLED when async jobs are not enabled on this deployment; VASTU_JOBS_UNAVAILABLE when job storage is briefly unavailable (retry with the same Idempotency-Key)."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Queue 1 to 1,000 property assessments and get a jobId (202).","tags":["Vastu"]}},"/v2/vastu/jobs/{id}":{"get":{"description":"Owner-checked and free. counts.pending falls to 0 when the job ends; billing.charged is the sum actually debited.","operationId":"getV2VastuJobsId","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"The jobId returned by POST /v2/vastu/jobs.","in":"path","name":"id","required":true,"schema":{"pattern":"^vjob_[0-9a-f]{32}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuJobsIdResponse"}}},"description":"Job status. Free."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JOB_NOT_FOUND. Another account's job, an unknown id and a job past its 30-day window all answer 404."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"VASTU_JOBS_DISABLED when async jobs are not enabled on this deployment; VASTU_JOBS_UNAVAILABLE when job storage is briefly unavailable (retry with the same Idempotency-Key)."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Read a job's status, counts and charges so far.","tags":["Vastu"]}},"/v2/vastu/jobs/{id}/cancel":{"post":{"description":"Owner-checked and free. Items already charged stay charged; no unstarted item is ever computed or charged.","operationId":"postV2VastuJobsIdCancel","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"The jobId returned by POST /v2/vastu/jobs.","in":"path","name":"id","required":true,"schema":{"pattern":"^vjob_[0-9a-f]{32}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuJobsIdCancelResponse"}}},"description":"A queued job is cancelled at once; a running job stops before its next items (cancelRequested true until it does). A finished job is returned unchanged."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JOB_NOT_FOUND. Another account's job, an unknown id and a job past its 30-day window all answer 404."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"VASTU_JOBS_DISABLED when async jobs are not enabled on this deployment; VASTU_JOBS_UNAVAILABLE when job storage is briefly unavailable (retry with the same Idempotency-Key)."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Cancel a job; items not yet started are never charged.","tags":["Vastu"]}},"/v2/vastu/jobs/{id}/results":{"get":{"description":"Owner-checked and free. Each result carries the exact single-item response, including its billing block.","operationId":"getV2VastuJobsIdResults","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}},{"description":"The jobId returned by POST /v2/vastu/jobs.","in":"path","name":"id","required":true,"schema":{"pattern":"^vjob_[0-9a-f]{32}$","type":"string"}},{"description":"nextCursor from the previous page. Cursor pagination only; there is no offset.","in":"query","name":"cursor","required":false,"schema":{"maxLength":32,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuJobsIdResultsResponse"}}},"description":"Up to 50 finished items in item order. Items still running are not listed yet."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"INVALID_CURSOR"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JOB_NOT_FOUND. Another account's job, an unknown id and a job past its 30-day window all answer 404."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"RESULTS_EXPIRED: item results are kept 7 days after each item finishes."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"VASTU_JOBS_DISABLED when async jobs are not enabled on this deployment; VASTU_JOBS_UNAVAILABLE when job storage is briefly unavailable (retry with the same Idempotency-Key)."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Page through per-item results, 50 at a time.","tags":["Vastu"]}},"/v2/vastu/mandala/project/81-pada":{"post":{"description":"Projects the 81-square plan of Brihat Samhita 53.43-48 onto the plot. Each cell carries verseSquare (the verse's square number, 1-81). Where the verse seats a devata on that square, the cell carries devata, devataClass (main, corner, boundary or centre), placementClassification classical, placementSource and classicalSource. The verse names no devata on 28 squares; those cells carry nulls. Fitting the grid to the plot outline is a computational convention, so the result is verified:false. The grid is cut from the bounding box of the plot after the plot is rotated to true north (zones are compass directions, so it is never aligned to the plot's own edges); gridFrame says so. On a plot whose edges are not north-aligned that box is larger than the plot, so cell sizes vary with bearingDeg, and each cell reports inPlotArea and inPlotFraction, the part of it that is plot.","operationId":"postV2VastuMandalaProject81Pada","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProject81PadaRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProject81PadaResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: mandala/project/81-pada.","tags":["Vastu"]}},"/v2/vastu/mandala/project/9-zone":{"post":{"description":"Computes nine-zone cell polygons in supplied plot coordinates. Placement and element associations carry their own provenance; output does not verify physical device registration. The grid is cut from the bounding box of the plot after the plot is rotated to true north (zones are compass directions, so it is never aligned to the plot's own edges); gridFrame says so. On a plot whose edges are not north-aligned that box is larger than the plot, so cell sizes vary with bearingDeg, and each cell reports inPlotArea and inPlotFraction, the part of it that is plot.","operationId":"postV2VastuMandalaProject9Zone","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProject9ZoneRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProject9ZoneResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: mandala/project/9-zone.","tags":["Vastu"]}},"/v2/vastu/mandala/project/brahmasthan":{"post":{"description":"Projects the Brahmasthan (the middle ninth of the 9 x 9 mandala) onto the plot. centerPolygon is the middle ninth of the plot's north-aligned bounding-box grid, the same grid as mandala/project/9-zone and 81-pada, so it is centred on centerPolygonCentre, the centre of that box. centroid is the plot's area centroid; the two coincide on a rectangle and differ on an L-shaped or other irregular plot (centreOffset is the distance between them). The grid is cut from the bounding box of the plot after the plot is rotated to true north (zones are compass directions, so it is never aligned to the plot's own edges); gridFrame says so. On a plot whose edges are not north-aligned that box is larger than the plot, so cell sizes vary with bearingDeg, and inPlotArea, inPlotFraction and shareOfPlotArea give the part of the Brahmasthan that is plot and its share of the plot's area.","operationId":"postV2VastuMandalaProjectBrahmasthan","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProjectBrahmasthanRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMandalaProjectBrahmasthanResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: mandala/project/brahmasthan.","tags":["Vastu"]}},"/v2/vastu/merchant/catalog/delete":{"post":{"description":"Free owner-scoped deletion. confirmId must equal id. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuMerchantCatalogDelete","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogDeleteResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"merchant catalog delete","tags":["Vastu"]}},"/v2/vastu/merchant/catalog/get":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuMerchantCatalogGet","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogGetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogGetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"merchant catalog get","tags":["Vastu"]}},"/v2/vastu/merchant/catalog/upload":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim. Use expectedRevision 0 for a new catalog, and a fresh mutationId for each changed request. Every remedyKey must come from GET /v2/astrology/vastu/reference/remedies/catalog.","operationId":"postV2VastuMerchantCatalogUpload","parameters":[],"requestBody":{"content":{"application/json":{"example":{"catalogId":"example-catalog","content":"remedyKey,itemId,kind,label,availability\nvastu.remedy.defect.NE_KITCHEN,sku-0001,sku,Example remedy item,in_stock\n","expectedRevision":0,"format":"csv","mutationId":"example-mutation-0001"},"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogUploadRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantCatalogUploadResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"merchant catalog upload","tags":["Vastu"]}},"/v2/vastu/merchant/remedies":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuMerchantRemedies","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantRemediesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMerchantRemediesResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"merchant remedies","tags":["Vastu"]}},"/v2/vastu/multi-storey/floor-rules":{"post":{"operationId":"postV2VastuMultiStoreyFloorRules","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMultiStoreyFloorRulesRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuMultiStoreyFloorRulesResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: multi-storey/floor-rules.","tags":["Vastu"]}},"/v2/vastu/placement/balcony":{"post":{"operationId":"postV2VastuPlacementBalcony","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementBalconyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementBalconyResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/balcony.","tags":["Vastu"]}},"/v2/vastu/placement/borewell":{"post":{"operationId":"postV2VastuPlacementBorewell","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementBorewellRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementBorewellResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/borewell.","tags":["Vastu"]}},"/v2/vastu/placement/garden":{"post":{"operationId":"postV2VastuPlacementGarden","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementGardenRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementGardenResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/garden.","tags":["Vastu"]}},"/v2/vastu/placement/generator-electrical":{"post":{"operationId":"postV2VastuPlacementGeneratorElectrical","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementGeneratorElectricalRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementGeneratorElectricalResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/generator-electrical.","tags":["Vastu"]}},"/v2/vastu/placement/main-gate":{"post":{"operationId":"postV2VastuPlacementMainGate","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementMainGateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementMainGateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/main-gate.","tags":["Vastu"]}},"/v2/vastu/placement/overhead-tank":{"post":{"operationId":"postV2VastuPlacementOverheadTank","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementOverheadTankRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementOverheadTankResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/overhead-tank.","tags":["Vastu"]}},"/v2/vastu/placement/septic-tank":{"post":{"operationId":"postV2VastuPlacementSepticTank","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementSepticTankRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementSepticTankResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/septic-tank.","tags":["Vastu"]}},"/v2/vastu/placement/tree":{"post":{"operationId":"postV2VastuPlacementTree","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementTreeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementTreeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/tree.","tags":["Vastu"]}},"/v2/vastu/placement/well":{"post":{"operationId":"postV2VastuPlacementWell","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementWellRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementWellResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/well.","tags":["Vastu"]}},"/v2/vastu/placement/window":{"post":{"operationId":"postV2VastuPlacementWindow","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementWindowRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlacementWindowResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: placement/window.","tags":["Vastu"]}},"/v2/vastu/plan/analyze":{"post":{"operationId":"postV2VastuPlanAnalyze","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanAnalyzeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanAnalyzeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"properties":{"billing":{"properties":{"charged":{"enum":[0],"type":"number"}},"type":"object"},"code":{"example":"RECEIPT_SIGNING_UNAVAILABLE","type":"string"},"error":{"type":"string"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Receipt signing key unavailable; no charge."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/analyze.","tags":["Vastu"]}},"/v2/vastu/plan/compare-versions":{"post":{"description":"Compare two retained room-placement rule snapshots with per-rule reasons Price: $0.01; errors charge $0.","operationId":"postV2VastuPlanCompareVersions","requestBody":{"content":{"application/json":{"example":{"fromVersion":"vastu-rules-2026-09-23","input":{"rooms":[{"name":"kitchen","zone":"SE"},{"name":"master bedroom","zone":"SW"},{"name":"pooja","zone":"NE"},{"name":"toilet","zone":"NE"}]},"toVersion":"vastu-rules-2026-10-04"},"schema":{"$ref":"#/components/schemas/VastuCompareVersionsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuCompareVersionsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Signing or verification key is unavailable; charged $0."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Compare two retained room-placement rule snapshots with per-rule reasons","tags":["Vastu"]}},"/v2/vastu/plan/convert-units":{"post":{"description":"Free deterministic conversion among m, ft, mm and in. Coordinates and unsuffixed lengths scale linearly; areas scale quadratically. Bearings, identifiers and metric-suffixed fields are preserved. No wallet deduction.","operationId":"postV2VastuPlanConvertUnits","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"inputUnits":"m","outputUnits":"ft","plan":{"plot":{"holes":[[[4,4],[8,4],[8,8],[4,8]]],"polygon":[[0,0],[12,0],[12,12],[0,12]]},"rooms":[{"id":"living","name":"living","polygon":[[0,0],[12,0],[12,4],[0,4]]}],"units":"m"}},"schema":{"$ref":"#/components/schemas/VastuPlanConvertUnitsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanConvertUnitsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Use application/json. DWG is unsupported: convert DWG to DXF first."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute metering or billing temporarily unavailable; no computed value served."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Convert structured plan units (free)","tags":["Vastu"]}},"/v2/vastu/plan/export-dxf":{"post":{"description":"Paid operation: USD 0.01. File text is submitted inside application/json. Geometry is canonical metres; source units, ids and mapping are retained. Unsupported or omitted entities are listed for review; a file without computed geometry is rejected without charge.","operationId":"postV2VastuPlanExportDxf","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"plan":{"plot":{"length":8,"polygon":[[0,0],[10,0],[10,8],[0,8]],"width":10},"rooms":[{"id":"room-1","name":"Study","polygon":[[0,0],[4,0],[4,3],[0,3]]}],"trueNorthDeg":0,"units":"metres"},"zones":16},"schema":{"$ref":"#/components/schemas/VastuPlanExportDxfRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanExportDxfResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Use application/json. DWG is unsupported: convert DWG to DXF first."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute metering or billing temporarily unavailable; no computed value served."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Export a dimensioned R2013 DXF","tags":["Vastu"]}},"/v2/vastu/plan/export-ifc":{"post":{"description":"Exports deterministic IFC4 arbitrary space profiles, interior voids and separate components. Uses measured attributable CPU plus response delivery cost x4, settled to cents with a positive $0.01 minimum. Invalid input costs $0.00.","operationId":"postV2VastuPlanExportIfc","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"maxChargeUsd":"0.02","outputUnits":"mm","plan":{"plot":{"holes":[[[4,4],[8,4],[8,8],[4,8]]],"polygon":[[0,0],[12,0],[12,12],[0,12]]},"rooms":[{"id":"living","name":"living","polygon":[[0,0],[12,0],[12,4],[0,4]]}],"units":"m"}},"schema":{"$ref":"#/components/schemas/VastuPlanExportIfcRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanExportIfcResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Use application/json. DWG is unsupported: convert DWG to DXF first."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute metering or billing temporarily unavailable; no computed value served."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Export IFC4 spaces with voids and multiple wings","tags":["Vastu"]}},"/v2/vastu/plan/from-requirements":{"post":{"operationId":"postV2VastuPlanFromRequirements","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"plot":{"facing":"east","length":60,"width":40},"requirements":{"bedrooms":2,"floors":1,"hasDining":true,"hasGuest":false,"hasKitchen":true,"hasLiving":true,"hasPooja":true,"hasStaircase":false,"hasStore":false,"hasStudy":true,"toilets":2}},"schema":{"$ref":"#/components/schemas/VastuPlanFromRequirementsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanFromRequirementsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/from-requirements.","tags":["Vastu"]}},"/v2/vastu/plan/generate":{"post":{"operationId":"postV2VastuPlanGenerate","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanGenerateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanGenerateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/generate.","tags":["Vastu"]}},"/v2/vastu/plan/import-dxf":{"post":{"description":"Paid operation: USD 0.01. File text is submitted inside application/json. Geometry is canonical metres; source units, ids and mapping are retained. Unsupported or omitted entities are listed for review; a file without computed geometry is rejected without charge.","operationId":"postV2VastuPlanImportDxf","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"dxf":"0\nSECTION\n2\nHEADER\n9\n$INSUNITS\n70\n6\n0\nENDSEC\n0\nSECTION\n2\nENTITIES\n0\nLWPOLYLINE\n8\nROOM\n90\n4\n70\n1\n10\n0\n20\n0\n10\n6\n20\n0\n10\n6\n20\n5\n10\n0\n20\n5\n0\nTEXT\n8\n0\n10\n3\n20\n2.5\n40\n0.5\n1\nBedroom\n0\nLWPOLYLINE\n8\nROOM\n90\n4\n70\n1\n10\n8\n20\n10\n10\n12\n20\n10\n10\n12\n20\n15\n10\n8\n20\n15\n0\nTEXT\n8\n0\n10\n10\n20\n12.5\n40\n0.5\n1\nKitchen\n0\nLWPOLYLINE\n8\nROOM\n90\n4\n70\n1\n10\n8\n20\n0\n10\n12\n20\n0\n10\n12\n20\n4\n10\n8\n20\n4\n0\nTEXT\n8\n0\n10\n10\n20\n2\n40\n0.5\n1\nPooja\n0\nENDSEC\n0\nEOF\n","trueNorthDeg":0},"schema":{"$ref":"#/components/schemas/VastuPlanImportDxfRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanImportDxfResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Use application/json. DWG is unsupported: convert DWG to DXF first."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute metering or billing temporarily unavailable; no computed value served."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Import DXF rooms and openings","tags":["Vastu"]}},"/v2/vastu/plan/import-ifc":{"post":{"description":"Paid operation: USD 0.01. File text is submitted inside application/json. Geometry is canonical metres; source units, ids and mapping are retained. Unsupported or omitted entities are listed for review; a file without computed geometry is rejected without charge.","operationId":"postV2VastuPlanImportIfc","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"ifc":"ISO-10303-21;\nHEADER;\nFILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1');\nFILE_NAME('','2026-10-03T14:26:44',(''),(''),'IfcOpenShell 0.8.5-1c5b825','IfcOpenShell 0.8.5-1c5b825','');\nFILE_SCHEMA(('IFC4'));\nENDSEC;\nDATA;\n#1=IFCPERSON($,$,'Fixture Author',$,$,$,$,$);\n#2=IFCORGANIZATION($,'Synthetic Fixture',$,$,$);\n#3=IFCPERSONANDORGANIZATION(#1,#2,$);\n#4=IFCAPPLICATION(#2,'1','Synthetic fixture generator','cad-fixture');\n#5=IFCOWNERHISTORY(#3,#4,$,.ADDED.,$,$,$,1780488000);\n#6=IFCCARTESIANPOINT((0.,0.,0.));\n#7=IFCDIRECTION((0.,0.,1.));\n#8=IFCDIRECTION((1.,0.,0.));\n#9=IFCAXIS2PLACEMENT3D(#6,#7,#8);\n#10=IFCDIRECTION((0.5,0.8660254037844386));\n#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,9.9999999999999995E-07,#9,#10);\n#12=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);\n#13=IFCUNITASSIGNMENT((#12));\n#14=IFCPROJECT('0vRCnVgCDOs803GCmhtxI6',#5,'Synthetic CAD BIM',$,$,$,$,(#11),#13);\n#15=IFCCARTESIANPOINT((0.,0.,0.));\n#16=IFCDIRECTION((0.,0.,1.));\n#17=IFCDIRECTION((1.,0.,0.));\n#18=IFCAXIS2PLACEMENT3D(#15,#16,#17);\n#19=IFCLOCALPLACEMENT($,#18);\n#20=IFCSITE('0hYWgzRqvNwQ6H81osPsSD',#5,'Synthetic site',$,$,#19,$,$,.ELEMENT.,$,$,$,$,$);\n#21=IFCCARTESIANPOINT((100000.,200000.,0.));\n#22=IFCDIRECTION((0.,0.,1.));\n#23=IFCDIRECTION((0.96592582628906831,0.25881904510252074,0.));\n#24=IFCAXIS2PLACEMENT3D(#21,#22,#23);\n#25=IFCLOCALPLACEMENT(#19,#24);\n#26=IFCBUILDING('0zzCnj091OxeRykeq9epQV',#5,'Building A',$,$,#25,$,$,.ELEMENT.,$,$,$);\n#27=IFCRELAGGREGATES('0Zwmrm9FLUugUmgSfUPBVj',#5,$,$,#14,(#20));\n#28=IFCRELAGGREGATES('3WSTqxjqbUWuqnSWX$cbUJ',#5,$,$,#20,(#26));\n#29=IFCCARTESIANPOINT((0.,0.,0.));\n#30=IFCDIRECTION((0.,0.,1.));\n#31=IFCDIRECTION((1.,0.,0.));\n#32=IFCAXIS2PLACEMENT3D(#29,#30,#31);\n#33=IFCLOCALPLACEMENT(#25,#32);\n#34=IFCBUILDINGSTOREY('1p$CTDhB9UXfwDeNU7yv_V',#5,'Ground',$,$,#33,$,$,.ELEMENT.,0.);\n#35=IFCCARTESIANPOINT((0.,0.,3500.));\n#36=IFCDIRECTION((0.,0.,1.));\n#37=IFCDIRECTION((1.,0.,0.));\n#38=IFCAXIS2PLACEMENT3D(#35,#36,#37);\n#39=IFCLOCALPLACEMENT(#25,#38);\n#40=IFCBUILDINGSTOREY('0yZ2EoBzrQIuYp6dCq$ObS',#5,'First',$,$,#39,$,$,.ELEMENT.,3500.);\n#41=IFCRELAGGREGATES('39L8jSzY5VhhoAm0SG2qjb',#5,$,$,#26,(#34,#40));\n#42=IFCCARTESIANPOINT((0.,0.,0.));\n#43=IFCDIRECTION((0.,0.,1.));\n#44=IFCDIRECTION((1.,0.,0.));\n#45=IFCAXIS2PLACEMENT3D(#42,#43,#44);\n#46=IFCLOCALPLACEMENT(#33,#45);\n#47=IFCCARTESIANPOINT((0.,0.,0.));\n#48=IFCCARTESIANPOINT((4000.,0.,0.));\n#49=IFCCARTESIANPOINT((4000.,3000.,0.));\n#50=IFCCARTESIANPOINT((0.,3000.,0.));\n#51=IFCCARTESIANPOINT((0.,0.,0.));\n#52=IFCPOLYLINE((#47,#48,#49,#50,#51));\n#53=IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#52);\n#54=IFCCARTESIANPOINT((0.,0.,0.));\n#55=IFCDIRECTION((0.,0.,1.));\n#56=IFCDIRECTION((1.,0.,0.));\n#57=IFCAXIS2PLACEMENT3D(#54,#55,#56);\n#58=IFCDIRECTION((0.,0.,1.));\n#59=IFCEXTRUDEDAREASOLID(#53,#57,#58,2700.);\n#60=IFCSHAPEREPRESENTATION(#11,'Body','SweptSolid',(#59));\n#61=IFCPRODUCTDEFINITIONSHAPE($,$,(#60));\n#62=IFCSPACE('3JPSwLngDQVOsEMPdN4lPn',#5,'101',$,$,#46,#61,'Kitchen',.ELEMENT.,.INTERNAL.,$);\n#63=IFCRELAGGREGATES('3rOsxATuXTnQe9zbu8IDu2',#5,$,$,#34,(#62));\n#64=IFCCARTESIANPOINT((5000.,0.,0.));\n#65=IFCDIRECTION((0.,0.,1.));\n#66=IFCDIRECTION((1.,0.,0.));\n#67=IFCAXIS2PLACEMENT3D(#64,#65,#66);\n#68=IFCLOCALPLACEMENT(#33,#67);\n#69=IFCSPACE('3lQrZroabVtxFHH$J4FBiO',#5,'102',$,$,#68,$,'Study',.ELEMENT.,.INTERNAL.,$);\n#70=IFCRELAGGREGATES('30oyaeJHPMNv4c6be1bS5n',#5,$,$,#34,(#69));\n#71=IFCCARTESIANPOINT((0.,0.,0.));\n#72=IFCDIRECTION((0.,0.,1.));\n#73=IFCDIRECTION((1.,0.,0.));\n#74=IFCAXIS2PLACEMENT3D(#71,#72,#73);\n#75=IFCPLANE(#74);\n#76=IFCCARTESIANPOINT((0.,0.));\n#77=IFCCARTESIANPOINT((3000.,0.));\n#78=IFCCARTESIANPOINT((3000.,3000.));\n#79=IFCCARTESIANPOINT((0.,3000.));\n#80=IFCCARTESIANPOINT((0.,0.));\n#81=IFCPOLYLINE((#76,#77,#78,#79,#80));\n#82=IFCCURVEBOUNDEDPLANE(#75,#81,());\n#83=IFCCONNECTIONSURFACEGEOMETRY(#82,$);\n#84=IFCVIRTUALELEMENT('1VDJ88gSjL6gKbNof1HD4S',#5,'Virtual space boundary',$,$,$,$,$);\n#85=IFCRELSPACEBOUNDARY('1sABLuwrvRavJlkXeIvBYs',#5,$,$,#69,#84,#83,.VIRTUAL.,.INTERNAL.);\n#86=IFCCARTESIANPOINT((0.,0.,0.));\n#87=IFCDIRECTION((0.,0.,1.));\n#88=IFCDIRECTION((1.,0.,0.));\n#89=IFCAXIS2PLACEMENT3D(#86,#87,#88);\n#90=IFCLOCALPLACEMENT(#39,#89);\n#91=IFCCARTESIANPOINTLIST2D(((0.,0.),(5000.,0.),(5000.,4000.),(0.,4000.),(0.,0.)));\n#92=IFCINDEXEDPOLYCURVE(#91,$,.F.);\n#93=IFCSHAPEREPRESENTATION(#11,'FootPrint','Curve2D',(#92));\n#94=IFCPRODUCTDEFINITIONSHAPE($,$,(#93));\n#95=IFCSPACE('07hjwdQIHGyxcHnBbkIb6j',#5,'203',$,$,#90,#94,'Bedroom',.ELEMENT.,.INTERNAL.,$);\n#96=IFCRELAGGREGATES('3vuUT8c3LKhulxwkML0Qrb',#5,$,$,#40,(#95));\n#97=IFCCARTESIANPOINT((1000.,0.,0.));\n#98=IFCDIRECTION((0.,0.,1.));\n#99=IFCDIRECTION((1.,0.,0.));\n#100=IFCAXIS2PLACEMENT3D(#97,#98,#99);\n#101=IFCLOCALPLACEMENT(#33,#100);\n#102=IFCDOOR('2y7rxYC01LMg_Ugfcog_Tr',#5,'Door D1',$,$,#101,$,$,2100.,900.,$,$,$);\n#103=IFCCARTESIANPOINT((0.,1000.,900.));\n#104=IFCDIRECTION((0.,0.,1.));\n#105=IFCDIRECTION((6.123233995736766E-17,1.,0.));\n#106=IFCAXIS2PLACEMENT3D(#103,#104,#105);\n#107=IFCLOCALPLACEMENT(#39,#106);\n#108=IFCWINDOW('3OwCeSUdXINgnzMRYoqM8n',#5,'Window W1',$,$,#107,$,$,1200.,1000.,$,$,$);\n#109=IFCRELCONTAINEDINSPATIALSTRUCTURE('2IstcEZEjRmh9Jdfaemc1P',#5,$,$,(#102),#34);\n#110=IFCRELCONTAINEDINSPATIALSTRUCTURE('1jTWkbEZfI1BHNtJxaVuiu',#5,$,$,(#108),#40);\nENDSEC;\nEND-ISO-10303-21;\n"},"schema":{"$ref":"#/components/schemas/VastuPlanImportIfcRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanImportIfcResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Use application/json. DWG is unsupported: convert DWG to DXF first."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute metering or billing temporarily unavailable; no computed value served."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Import IFC2X3/IFC4 spaces per storey","tags":["Vastu"]}},"/v2/vastu/plan/import-image":{"post":{"description":"Paid at four times measured attributable extraction cost, rounded to wallet cents (minimum positive charge USD 0.01). Invalid inputs and responses with no computed value are uncharged. North and scale require legible drawing evidence or explicit caller confirmation. Original files are processed transiently; report-chat upload IDs are not plan inputs. PDF paths and text are parsed deterministically; scanned pages use bounded local OCR with no model calls. Raster images use vision with same-request regional fallback on provider capacity failures. source.method is vector, ocr, or vision. North is measured from directional evidence and applied exactly once. The example fileBase64 is a placeholder: replace it with the base64 of your own PNG, JPEG or WebP floor plan (up to 5 MiB, no data: prefix).","operationId":"postV2VastuPlanImportImage","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"fileBase64":"REPLACE_WITH_BASE64_OF_A_PNG_JPEG_OR_WEBP_FLOOR_PLAN","units":"m"},"schema":{"$ref":"#/components/schemas/VastuPlanImportImageRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanImportImageResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"File or request exceeds its limit; uncharged"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No safe computed plan; uncharged"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Extraction or billing unavailable; uncharged"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Import a PNG/JPEG/WebP floor plan","tags":["Vastu"]}},"/v2/vastu/plan/import-pdf":{"post":{"description":"Paid at four times measured attributable extraction cost, rounded to wallet cents (minimum positive charge USD 0.01). Invalid inputs and responses with no computed value are uncharged. North and scale require legible drawing evidence or explicit caller confirmation. Original files are processed transiently; report-chat upload IDs are not plan inputs. PDF paths and text are parsed deterministically; scanned pages use bounded local OCR with no model calls. Raster images use vision with same-request regional fallback on provider capacity failures. source.method is vector, ocr, or vision. North is measured from directional evidence and applied exactly once. The example fileBase64 is a placeholder: replace it with the base64 of your own PDF (up to 5 MiB, no data: prefix). page selects one page, numbered from 1.","operationId":"postV2VastuPlanImportPdf","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"fileBase64":"REPLACE_WITH_BASE64_OF_A_PDF_FLOOR_PLAN","page":1,"units":"m"},"schema":{"$ref":"#/components/schemas/VastuPlanImportPdfRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanImportPdfResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"File or request exceeds its limit; uncharged"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No safe computed plan; uncharged"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Extraction or billing unavailable; uncharged"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Import one PDF floor-plan page, vector-first","tags":["Vastu"]}},"/v2/vastu/plan/optimize":{"post":{"operationId":"postV2VastuPlanOptimize","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanOptimizeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanOptimizeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/optimize.","tags":["Vastu"]}},"/v2/vastu/plan/report":{"post":{"operationId":"postV2VastuPlanReport","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanReportRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanReportResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/report.","tags":["Vastu"]}},"/v2/vastu/plan/upload":{"post":{"operationId":"postV2VastuPlanUpload","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanUploadRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlanUploadResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plan/upload.","tags":["Vastu"]}},"/v2/vastu/plot/extensions-cuts":{"post":{"description":"Computes extensions and cuts from the supplied geometry. Their Vastu grades are traditional convention, not verified Brihat Samhita verse claims.","operationId":"postV2VastuPlotExtensionsCuts","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotExtensionsCutsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotExtensionsCutsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/extensions-cuts.","tags":["Vastu"]}},"/v2/vastu/plot/from-survey":{"post":{"description":"Explicit EPSG code and units; no inference. EPSG:4326 XY is [longitude,latitude] in degrees. Projected XY is [easting,northing], in metres or international feet. WGS84 UTM 42N-46N and WGS84 India NSF LCC / Andhra Pradesh grids use published parameters. Result is local WGS84 topocentric east/north with geographic origin and per-point grid convergence. Boundary/control points must be within 20 km of origin and inside the CRS area of use. Historical datums are refused without a declared transformation. Price: measured attributable compute cost multiplied by 4, settled with half-even USD-cent rounding and a positive $0.01 minimum. The pricing API quote is a minimum, not a fixed price. Use maxChargeUsd to bound the wallet debit; invalid inputs, uncomputed results and exceeded budgets are uncharged.","operationId":"postV2VastuPlotFromSurvey","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"boundary":[[500000,0],[500020,0],[500020,30],[500000,30]],"crs":"EPSG:32643","units":"m"},"schema":{"$ref":"#/components/schemas/VastuPlotFromSurveyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotFromSurveyResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request or computed charge exceeds maxChargeUsd; no debit attempted."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Compute meter or billing unavailable; paid data withheld."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Plot from survey","tags":["Vastu"],"x-pricing":{"basis":"measured attributable compute cost","budgetField":"maxChargeUsd","minimumChargeUsd":"0.01","multiplier":4,"priceType":"minimum","settlement":"half-even USD cents, positive one-cent minimum"}}},"/v2/vastu/plot/orientation":{"post":{"operationId":"postV2VastuPlotOrientation","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotOrientationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotOrientationResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/orientation.","tags":["Vastu"]}},"/v2/vastu/plot/ratio":{"post":{"description":"Computes the length-to-width ratio and applies a traditional 2:1 convention. The numeric cutoff has no verified verse basis in the governed corpus.","operationId":"postV2VastuPlotRatio","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotRatioRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotRatioResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/ratio.","tags":["Vastu"]}},"/v2/vastu/plot/road-orientation":{"post":{"operationId":"postV2VastuPlotRoadOrientation","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotRoadOrientationRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotRoadOrientationResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/road-orientation.","tags":["Vastu"]}},"/v2/vastu/plot/shape":{"post":{"description":"Computes polygon geometry and a traditional Vastu convention grade. Shape grades have no verified verse basis in the governed corpus. The class is one of square, rectangle, trapezoid (four sides, one pair parallel), L-shape (a concave outline whose corners are all right angles), pentagon, hexagon, circular, triangle or irregular; a convex pentagon or hexagon is never an L-shape. A doorXY sent with the plot is not used, but a door outside the plot by more than 5% of the plot's larger extent is refused with a 400 before any charge; a door inside or on the plot is unaffected.","operationId":"postV2VastuPlotShape","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotShapeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotShapeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/shape.","tags":["Vastu"]}},"/v2/vastu/plot/slope":{"post":{"operationId":"postV2VastuPlotSlope","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotSlopeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPlotSlopeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: plot/slope.","tags":["Vastu"]}},"/v2/vastu/portfolio/analytics":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2VastuPortfolioAnalytics","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioAnalyticsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioAnalyticsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio analytics","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/vastu/portfolio/budgets/get":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2VastuPortfolioBudgetsGet","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioBudgetsGetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioBudgetsGetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio budgets/get","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/vastu/portfolio/budgets/set":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge. Send exactly one scope, propertyId or tenantRef, and capUsd as a decimal string (or null to clear the cap).","operationId":"postV2VastuPortfolioBudgetsSet","requestBody":{"content":{"application/json":{"example":{"capUsd":"10.00","tenantRef":"example-project"},"schema":{"$ref":"#/components/schemas/VastuPortfolioBudgetsSetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioBudgetsSetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio budgets/set","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/vastu/portfolio/compare":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2VastuPortfolioCompare","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioCompareRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioCompareResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio compare","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/vastu/portfolio/search":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2VastuPortfolioSearch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioSearchRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioSearchResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio search","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/vastu/portfolio/usage":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2VastuPortfolioUsage","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioUsageRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioUsageResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio usage","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/vastu/portfolio/usage/export":{"post":{"description":"Account-owned portfolio operation. Explicitly free; no wallet deduction. History covers attributed successful calls in the retained 30-day window. Budgets have lifetime USD caps; both propertyId and tenantRef are checked atomically before any deduction. Pending outcomes keep their reservation until the native debit can be confirmed or fenced. Storage or capacity failures reject before a new charge.","operationId":"postV2VastuPortfolioUsageExport","parameters":[{"description":"Default JSON contains the CSV. Accept: text/csv downloads the CSV directly.","in":"header","name":"Accept","schema":{"enum":["application/json","text/csv"],"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioUsageExportRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPortfolioUsageExportResponse"}},"text/csv":{"schema":{"type":"string"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Rejected without a new charge; 402 BUDGET_EXCEEDED is the cap rejection."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Portfolio usage/export","tags":["Vastu"],"x-pricing":{"billing":"free","priceUsd":"0"}}},"/v2/vastu/properties/activity/export":{"post":{"description":"Free authorized append-only activity export. Records actor, revision, action, time and a hash chain. Cursor is the last sequence; request pages until nextCursor is null. JSONL export pages carry complete events. Audit reads themselves are recorded. Export before property erasure; erasure removes activity rows.","operationId":"postV2PropertiesActivityExport","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesActivityExportRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesActivityExportResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property activity export","tags":["Vastu"]}},"/v2/vastu/properties/activity/list":{"post":{"description":"Free authorized append-only activity list. Records actor, revision, action, time and a hash chain. Cursor is the last sequence; request pages until nextCursor is null. JSONL export pages carry complete events. Audit reads themselves are recorded. Export before property erasure; erasure removes activity rows.","operationId":"postV2PropertiesActivityList","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesActivityListRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesActivityListResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property activity list","tags":["Vastu"]}},"/v2/vastu/properties/collaboration/comment":{"post":{"description":"Owner/editor/reviewer comment on a linked assessment. Current revision and hash are mandatory. Prior-revision comments remain identified as prior revision. Membership/control operations are free unless explicitly priced. At most 100 members, 100 comments and 100 review decisions per property.","operationId":"postV2PropertiesCollaborationComment","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationCommentRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationCommentResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration comment","tags":["Vastu"]}},"/v2/vastu/properties/collaboration/get":{"post":{"description":"Read an invited property. ownerId selects the owner account; the authenticated actor must be owner or a current member. Membership/control operations are free unless explicitly priced. At most 100 members, 100 comments and 100 review decisions per property.","operationId":"postV2PropertiesCollaborationGet","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationGetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationGetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration get","tags":["Vastu"]}},"/v2/vastu/properties/collaboration/invite":{"post":{"description":"Owner creates an unbilled pending invitation by exactly one of email/accountId. Every valid target returns 202 with an opaque invitationId and pending status, regardless of account existence. No account lookup or email delivery occurs. Only hashes of pending recipient identities are stored. Recipient repeats the request with ownerId and accept:true to bind an invitation using their own accountId or current verified email; the stored invited role is used. Acceptance returns 200 with accepted status. Members and activity reveal no pending recipient accountId/email. Limit: 20 requests per caller per UTC hour; 429 and failures are unbilled. Pending invites inherit property retention and erasure. At most 100 pending invitations and 100 accepted members per property. Send exactly one of email or accountId. The propertyId is the id returned by POST /v2/astrology/vastu/properties/create; the example value is a placeholder, replace it before sending.","operationId":"postV2PropertiesCollaborationInvite","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"example":"invite-example-0001","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"email":"colleague@example.com","propertyId":"REPLACE_WITH_PROPERTY_ID","role":"viewer"},"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationInviteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationInviteResponse"}}},"description":"Recipient explicitly accepted an existing invitation"},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationInviteResponse"}}},"description":"Pending invitation; identical response shape for existing and unknown targets"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Caller invitation limit reached; no charge and no recipient identity"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration invite","tags":["Vastu"]}},"/v2/vastu/properties/collaboration/members":{"post":{"description":"Owner-only member roster. Membership/control operations are free unless explicitly priced. At most 100 members, 100 comments and 100 review decisions per property.","operationId":"postV2PropertiesCollaborationMembers","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationMembersRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationMembersResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration members","tags":["Vastu"]}},"/v2/vastu/properties/collaboration/review":{"post":{"description":"Owner/reviewer decision for a linked assessment at the exact current revision and content hash. Stale hashes return 409 free. Membership/control operations are free unless explicitly priced. At most 100 members, 100 comments and 100 review decisions per property.","operationId":"postV2PropertiesCollaborationReview","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationReviewRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationReviewResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration review","tags":["Vastu"]}},"/v2/vastu/properties/collaboration/revoke":{"post":{"description":"Owner revokes an accepted accountId or cancels a pending invitationId (exactly one). Pending recipient identity is never returned. Unbilled. Send exactly one of accountId (an accepted collaborator) or invitationId (a pending invitation). The propertyId is the id returned by POST /v2/astrology/vastu/properties/create; the example value is a placeholder, replace it before sending.","operationId":"postV2PropertiesCollaborationRevoke","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"example":"revoke-example-0001","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"accountId":"REPLACE_WITH_COLLABORATOR_ACCOUNT_ID","propertyId":"REPLACE_WITH_PROPERTY_ID"},"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationRevokeRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationRevokeResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration revoke","tags":["Vastu"]}},"/v2/vastu/properties/collaboration/update":{"post":{"description":"Owner/editor change to title and property data at a new revision. Uses a conditional write; billed $0.01 only for a delivered update, failed writes refunded. Existing linked IDs and retention are preserved. Membership/control operations are free unless explicitly priced. At most 100 members, 100 comments and 100 review decisions per property.","operationId":"postV2PropertiesCollaborationUpdate","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCollaborationUpdateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Property collaboration update","tags":["Vastu"]}},"/v2/vastu/properties/create":{"post":{"description":"Create an account-scoped property. Charged writes refund on failure. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge. The response returns the propertyId that the other property and collaboration calls take.","operationId":"postV2VastuPropertiesCreate","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"example":"property-example-0001","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"data":{"note":"example"},"ids":{"building":"tower-a","floor":"1","project":"example-project","revision":"v1","unit":"101"},"retentionDays":30,"title":"Example flat 101"},"schema":{"$ref":"#/components/schemas/VastuPropertiesCreateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesCreateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties create","tags":["Vastu"]}},"/v2/vastu/properties/delete":{"post":{"description":"Free owner-only physical erasure of active property rows, membership/comments/reviews/activity and linked scan/archive objects including all versions and delete markers. First call fences writes and can return 202 pending with retryAfterEpoch. Retry after the 210-second request drain. A 200 completed response contains a canonical SHA-256 receipt listing removals. Denied or incomplete purges never report completion. Encrypted recovery backups expire within 35 days; restore requires replay of erasure fences. Minimal pseudonymous fences/receipt remain to block recreation. Replays return the same receipt.","operationId":"postV2VastuPropertiesDelete","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesDeleteResponse"}}},"description":"Success"},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesDeleteResponse"}}},"description":"Erasure pending; retry at retryAfterEpoch. No charge."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties delete","tags":["Vastu"]}},"/v2/vastu/properties/get":{"post":{"description":"Read an owned active property for free. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2VastuPropertiesGet","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesGetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesGetResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties get","tags":["Vastu"]}},"/v2/vastu/properties/link-scan":{"post":{"description":"Link existing scan and assessment IDs for free. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2VastuPropertiesLinkScan","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesLinkScanRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesLinkScanResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties link scan","tags":["Vastu"]}},"/v2/vastu/properties/list":{"post":{"description":"List active properties for free. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2VastuPropertiesList","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesListRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesListResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties list","tags":["Vastu"]}},"/v2/vastu/properties/update":{"post":{"description":"Update an existing property; missing properties are unbilled. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2VastuPropertiesUpdate","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuPropertiesUpdateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"properties update","tags":["Vastu"]}},"/v2/vastu/quote/calculate":{"post":{"description":"Quote workflow prices for free. Retention quotes use bytes supplied for estimation; a paid extension always measures its actual stored row. Without an explicit paid archive extension, existing Vastu retention remains at most 30 days. Archive extensions are opt-in, up to 60 months of 30 days each, deletable at any time and covered by GDPR erasure. Invalid requests and failures with no delivered value keep no charge.","operationId":"postV2VastuQuoteCalculate","parameters":[{"description":"Caller-retained idempotency identity for paid writes.","in":"header","name":"Idempotency-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuQuoteCalculateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuQuoteCalculateResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"quote calculate","tags":["Vastu"]}},"/v2/vastu/receipt/verify":{"post":{"description":"Verify an Ed25519 receipt and optionally match its assessment input; free Price: $0.00; errors charge $0.","operationId":"postV2VastuReceiptVerify","requestBody":{"content":{"application/json":{"example":{"input":{"rooms":[{"name":"kitchen","zone":"SE"},{"name":"master bedroom","zone":"SW"},{"name":"pooja","zone":"NE"}]},"token":"eyJhbGciOiJFZERTQSIsImtpZCI6InJlY2VpcHQtMjAyNi0xMCIsInR5cCI6InZlZGlrYS12YXN0dS1yZWNlaXB0K2p3cyJ9.eyJhc3Nlc3NtZW50SWQiOiIyMTE1NGY1M2I1ZGY5NTY3OWFlOGU5MDg3ZTYxNjAxZDExY2Y3ZDBiMDIyYWZlZWU3ODE2NDk3OTc1OTk2NzgzIiwiaW5wdXRIYXNoIjoiMzg3YTA3NWU2MjIxZTdhMWJhNjYwODRmMjA1MTQ1OWU5OGUxODQ5ODU2ZWFkZTY3YTFmM2E3Y2Q1NmQxNzlmMSIsInJlc3VsdEhhc2giOiJjN2UxNGYwYWFkNDEwMjAzMWZmMTRhNjJhZDk2MTRiM2EyNjM4MjZmYzQ1NDJhNDIwZTQ1MmU1MTVlMjIxNGE5IiwicnVsZXNWZXJzaW9uIjoidmFzdHUtcnVsZXMtMjAyNi0xMC0wNCIsInNjb3JlIjoxMDAsImdyYWRlIjoiQSIsInNvdXJjZUxhYmVscyI6WyJCcmloYXQgU2FtaGl0YSA1My4xMTggKEl5ZXIgMTg4NCwgUEQpIiwiY2xhc3NpY2FsIiwiY2xhc3NpY2FsIChCcmloYXQgU2FtaGl0YSA1My4xMTgsIHZlcmlmaWVkIG1vZHVsZSkiLCJjb252ZW50aW9uIiwicHJvcHJpZXRhcnkgVmVkaWthIGluZGV4IG92ZXIgcGFuY2hhLWJodXRhIGNvbnZlbnRpb24iLCJ0cmFkaXRpb25hbCBWYXN0dSBjb252ZW50aW9uIiwidHJhZGl0aW9uYWwgVmFzdHUgY29udmVudGlvbiAobXVraGEgZ3JhZGluZyBpcyBub3QgYSBzcGVjaWZpYyBjbGFzc2ljYWwgdmVyc2UpIiwidHJhZGl0aW9uYWwgVmFzdHUgY29udmVudGlvbiAobm90IGEgc3BlY2lmaWMgY2xhc3NpY2FsIHZlcnNlKSIsInZlZGlrYS1lcGhlbWVyaXMiXSwidGltZXN0YW1wIjoxNzkxNDEwMDgxfQ.Zh1Y5Ele5IGXcDwqIw6TEQgj2PWOe09B0hqmFV86PQHuOqsVcbEryxrr5GEJbV_O70PdES82cCytrqq0I7ZYCw"},"schema":{"$ref":"#/components/schemas/VastuReceiptVerifyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReceiptVerifyResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Signing or verification key is unavailable; charged $0."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Verify an Ed25519 receipt and optionally match its assessment input; free","tags":["Vastu"]}},"/v2/vastu/reference/colors-by-zone":{"get":{"operationId":"getV2VastuReferenceColorsByZone","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceColorsByZoneResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/colors-by-zone.","tags":["Vastu"]}},"/v2/vastu/reference/defects/catalog":{"get":{"operationId":"getV2VastuReferenceDefectsCatalog","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceDefectsCatalogResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/defects/catalog.","tags":["Vastu"]}},"/v2/vastu/reference/directions/16":{"get":{"operationId":"getV2VastuReferenceDirections16","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceDirections16Response"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/directions/16.","tags":["Vastu"]}},"/v2/vastu/reference/directions/32":{"get":{"operationId":"getV2VastuReferenceDirections32","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceDirections32Response"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/directions/32.","tags":["Vastu"]}},"/v2/vastu/reference/directions/8":{"get":{"operationId":"getV2VastuReferenceDirections8","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceDirections8Response"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/directions/8.","tags":["Vastu"]}},"/v2/vastu/reference/gate-obstructions":{"get":{"operationId":"getV2VastuReferenceGateObstructions","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceGateObstructionsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/gate-obstructions.","tags":["Vastu"]}},"/v2/vastu/reference/mandala/45-devatas":{"get":{"description":"Returns the 45-devata roster with its Brihat Samhita 53.43-48 source classification. The roster citation does not verify per-cell coordinates or per-devata consequences.","operationId":"getV2VastuReferenceMandala45Devatas","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceMandala45DevatasResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/mandala/45-devatas.","tags":["Vastu"]}},"/v2/vastu/reference/mandala/64-pada":{"get":{"operationId":"getV2VastuReferenceMandala64Pada","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceMandala64PadaResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/mandala/64-pada.","tags":["Vastu"]}},"/v2/vastu/reference/mandala/9-zone":{"get":{"operationId":"getV2VastuReferenceMandala9Zone","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceMandala9ZoneResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/mandala/9-zone.","tags":["Vastu"]}},"/v2/vastu/reference/materials-by-zone":{"get":{"operationId":"getV2VastuReferenceMaterialsByZone","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceMaterialsByZoneResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/materials-by-zone.","tags":["Vastu"]}},"/v2/vastu/reference/remedies/catalog":{"get":{"description":"Returns modern Vastu remedial practice suggestions. These are not verified classical verse claims or measured evidence of remedy effectiveness.","operationId":"getV2VastuReferenceRemediesCatalog","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuReferenceRemediesCatalogResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: reference/remedies/catalog.","tags":["Vastu"]}},"/v2/vastu/remediation/reassess":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuRemediationReassess","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationReassessRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationReassessResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"remediation reassess","tags":["Vastu"]}},"/v2/vastu/remediation/tasks/delete":{"post":{"description":"Free owner-scoped deletion. confirmId must equal id. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuRemediationTasksDelete","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksDeleteResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"remediation tasks delete","tags":["Vastu"]}},"/v2/vastu/remediation/tasks/list":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuRemediationTasksList","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksListRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksListResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"remediation tasks list","tags":["Vastu"]}},"/v2/vastu/remediation/tasks/upsert":{"post":{"description":"Costs $0.01 per successful useful operation (one-cent minimum). Errors retain no charge; exact mutations replay at zero charge. Account-private task boards and merchant mappings reuse the property table and its owner erasure fence. Both expire within 30 days; task expiry is capped by property expiry. expectedRevision is a compare-and-swap version (0 for absent). mutationId binds the entire payload. Tasks reference a remedy JSON pointer in property.data.assessments[reportRef] and reportRef must be linked to the property. Completion requires evidence; reassessment computes a new supplied-input plan reading and stores its link on the completed task. Catalog content is a JSON array or RFC4180 CSV with remedyKey,itemId,kind,label,availability and optional link,referralRef. Matches preserve original remedy provenance and make no efficacy claim.","operationId":"postV2VastuRemediationTasksUpsert","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksUpsertRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRemediationTasksUpsertResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"remediation tasks upsert","tags":["Vastu"]}},"/v2/vastu/report/drawing-sheet":{"post":{"description":"Architectural drawing sheet at a fixed print scale: A3/A2 landscape, dimensions in metres, true-north arrow, scale bar, title block and at most six embedded PNG/JPEG field-evidence slots. No scale-to-fit. Normalized plan.units is m or metres; plot and room polygons use [x,y] coordinates. Oversize plans fail before billing. HTML/PDF output costs $0.01 after successful output; renderer failure is unbilled. The plan needs units, trueNorthDeg (0 up to 360), a plot polygon and 1 to 100 rooms inside the plot; titleBlock needs project and architect.","operationId":"vastuDrawingSheet","requestBody":{"content":{"application/json":{"example":{"format":"html","paperSize":"A3","plan":{"plot":{"polygon":[[0,0],[12,0],[12,12],[0,12]]},"rooms":[{"id":"living","name":"Living","polygon":[[0,0],[12,0],[12,4],[0,4]]}],"trueNorthDeg":0,"units":"m"},"scaleDenominator":100,"titleBlock":{"architect":"Example architect","project":"Example project"}},"schema":{"$ref":"#/components/schemas/VastuDrawingSheetRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuDrawingSheetResponse"}}},"description":"Successful output"},"400":{"description":"Invalid input; zero charge"},"401":{"description":"Valid API key required"},"402":{"description":"Insufficient funds; no charge and no output delivered"},"403":{"description":"Wrong key class"},"404":{"description":"Owner-scoped record not found"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"409":{"description":"Retry conflict or workspace capacity"},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unbilled client error or failed/refunded write"},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"503":{"description":"Storage or rendering unavailable; zero charge"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Architectural drawing sheet at a fixed print scale: A3/A2 landscape, dimensions in metres, true-north arrow, scale bar, title block and at most six embedded PNG/JPEG field-evidence slots. No scale-to-fit. Normalized plan.units is m or metres; plot and room polygons use [x,y] coordinates. Oversize plans fail before billing. HTML/PDF output costs $0.01 after successful output; renderer failure is unbilled.","tags":["Vastu"],"x-price-usd":"0.01"}},"/v2/vastu/room/bedroom":{"post":{"operationId":"postV2VastuRoomBedroom","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomBedroomRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomBedroomResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/bedroom.","tags":["Vastu"]}},"/v2/vastu/room/dining":{"post":{"operationId":"postV2VastuRoomDining","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomDiningRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomDiningResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/dining.","tags":["Vastu"]}},"/v2/vastu/room/kitchen":{"post":{"operationId":"postV2VastuRoomKitchen","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomKitchenRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomKitchenResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/kitchen.","tags":["Vastu"]}},"/v2/vastu/room/living":{"post":{"operationId":"postV2VastuRoomLiving","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomLivingRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomLivingResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/living.","tags":["Vastu"]}},"/v2/vastu/room/pooja":{"post":{"operationId":"postV2VastuRoomPooja","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomPoojaRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomPoojaResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/pooja.","tags":["Vastu"]}},"/v2/vastu/room/staircase":{"post":{"operationId":"postV2VastuRoomStaircase","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStaircaseRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStaircaseResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/staircase.","tags":["Vastu"]}},"/v2/vastu/room/store":{"post":{"operationId":"postV2VastuRoomStore","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStoreRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStoreResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/store.","tags":["Vastu"]}},"/v2/vastu/room/study":{"post":{"operationId":"postV2VastuRoomStudy","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStudyRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomStudyResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/study.","tags":["Vastu"]}},"/v2/vastu/room/toilet":{"post":{"operationId":"postV2VastuRoomToilet","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomToiletRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomToiletResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/toilet.","tags":["Vastu"]}},"/v2/vastu/room/water-storage":{"post":{"operationId":"postV2VastuRoomWaterStorage","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomWaterStorageRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRoomWaterStorageResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: room/water-storage.","tags":["Vastu"]}},"/v2/vastu/rules/versions":{"get":{"description":"Discover the current and two retained room-placement rule versions; free Price: $0.00; errors charge $0.","operationId":"getV2VastuRulesVersions","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRuleVersionsResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"503":{"description":"Signing or verification key is unavailable; charged $0."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Discover the current and two retained room-placement rule versions; free","tags":["Vastu"]}},"/v2/vastu/scans/delete":{"post":{"description":"Account storage is disabled until it is enabled for your account. Disabled calls return 503 SCAN_STORAGE_DISABLED before storage or billing. Keyless sandbox calls use synthetic examples only (persistence=preview-only); they never persist or delete account data. Unbilled access revocation. Missing or already deleted IDs return deleted=false. Deletion removes current snapshot content but is not an immediate physical-purge claim; older versions follow the configured lifecycle.","operationId":"postV2VastuScansDelete","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansDeleteRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansDeleteResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No active snapshot found for this account.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Scan ID content conflict or concurrent modification.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Snapshot expired or deleted.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JSON body exceeds 96 KiB.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Storage disabled or unavailable. Save activation may fail after debit; retry the same scanId.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Saved scan: delete","tags":["Vastu"]}},"/v2/vastu/scans/list":{"post":{"description":"Account storage is disabled until it is enabled for your account. Disabled calls return 503 SCAN_STORAGE_DISABLED before storage or billing. Keyless sandbox calls use synthetic examples only (persistence=preview-only); they never persist or delete account data. Use a new body requestId for each refresh or page and retain it on retries. Pages use scan-ID order, not chronological order. Expired or deleted entries are filtered; an empty page can still have nextCursor. Each call reads at most 50 storage records. Retry headers X-Request-Id, X-Idempotency-Key and Idempotency-Key are unsupported (422); use the documented body identity.","operationId":"postV2VastuScansList","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"limit":2,"requestId":"sample-request-001"},"schema":{"$ref":"#/components/schemas/VastuScansListRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansListResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No active snapshot found for this account.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Scan ID content conflict or concurrent modification.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Snapshot expired or deleted.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JSON body exceeds 96 KiB.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Retry headers are unsupported; use the documented body identity.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Storage disabled or unavailable. Save activation may fail after debit; retry the same scanId.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Saved scan: list","tags":["Vastu"]}},"/v2/vastu/scans/retrieve":{"post":{"description":"Account storage is disabled until it is enabled for your account. Disabled calls return 503 SCAN_STORAGE_DISABLED before storage or billing. Keyless sandbox calls use synthetic examples only (persistence=preview-only); they never persist or delete account data. Use a body requestId for each logical read and retain it on retries. Reads are limited to active snapshots owned by the authenticated account. Retry headers X-Request-Id, X-Idempotency-Key and Idempotency-Key are unsupported (422); use the documented body identity.","operationId":"postV2VastuScansRetrieve","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansRetrieveRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansRetrieveResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No active snapshot found for this account.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Scan ID content conflict or concurrent modification.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Snapshot expired or deleted.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JSON body exceeds 96 KiB.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Retry headers are unsupported; use the documented body identity.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Storage disabled or unavailable. Save activation may fail after debit; retry the same scanId.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Saved scan: retrieve","tags":["Vastu"]}},"/v2/vastu/scans/save":{"post":{"description":"Account storage is disabled until it is enabled for your account. Disabled calls return 503 SCAN_STORAGE_DISABLED before storage or billing. Keyless sandbox calls use synthetic examples only (persistence=preview-only); they never persist or delete account data. Retain scanId and identical content across retries. A changed body for that ID returns 409. Data is prepared privately before billing and activated only after the debit receipt. A failed activation can return 503 after debit: retry the same scanId to finish without another charge. Access lasts 1-30 days from preparation. Existing expired or deleted records cannot be revived. Never reuse scan IDs: after physical purge a submitted save is a new storage attempt and may be charged. Unknown native billing history blocks debit and activation. Retry headers X-Request-Id, X-Idempotency-Key and Idempotency-Key are unsupported (422); use the documented body identity.","operationId":"postV2VastuScansSave","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"propertyId":"sample-property-01","retentionDays":1,"scanId":"sample-scan-00001","snapshot":{"inputSource":"self-reported","rooms":[{"roomType":"kitchen","zone":"SE"},{"roomType":"toilet","zone":"NE"}]},"title":"Example room tags"},"schema":{"$ref":"#/components/schemas/VastuScansSaveRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansSaveResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No active snapshot found for this account.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Scan ID content conflict or concurrent modification.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Snapshot expired or deleted.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JSON body exceeds 96 KiB.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Retry headers are unsupported; use the documented body identity.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Storage disabled/unavailable or SCAN_BILLING_UNCONFIRMED. A charge may exist; retain the scanId for recovery. Unknown ledger state never permits another debit.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Saved scan: save","tags":["Vastu"]}},"/v2/vastu/scans/timelapse":{"post":{"description":"Account storage is disabled until it is enabled for your account. Disabled calls return 503 SCAN_STORAGE_DISABLED before storage or billing. Keyless sandbox calls use synthetic examples only (persistence=preview-only); they never persist or delete account data. Select 2-20 distinct active snapshots from the same caller-defined propertyId. Results use server creation time, then scan ID. This compares saved inputs, not physical change or remedy effectiveness. Use a body requestId for each logical read and retain it on retries. Retry headers X-Request-Id, X-Idempotency-Key and Idempotency-Key are unsupported (422); use the documented body identity.","operationId":"postV2VastuScansTimelapse","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansTimelapseRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScansTimelapseResponse"}}},"description":"Success","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"No active snapshot found for this account.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Scan ID content conflict or concurrent modification.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"410":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Snapshot expired or deleted.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"JSON body exceeds 96 KiB.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Retry headers are unsupported; use the documented body identity.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Storage disabled or unavailable. Save activation may fail after debit; retry the same scanId.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Saved scan: timelapse","tags":["Vastu"]}},"/v2/vastu/score/compliance-index":{"post":{"operationId":"postV2VastuScoreComplianceIndex","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreComplianceIndexRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreComplianceIndexResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"properties":{"billing":{"properties":{"charged":{"enum":[0],"type":"number"}},"type":"object"},"code":{"example":"RECEIPT_SIGNING_UNAVAILABLE","type":"string"},"error":{"type":"string"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Receipt signing key unavailable; no charge."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: score/compliance-index.","tags":["Vastu"]}},"/v2/vastu/score/overall":{"post":{"operationId":"postV2VastuScoreOverall","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreOverallRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreOverallResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"properties":{"billing":{"properties":{"charged":{"enum":[0],"type":"number"}},"type":"object"},"code":{"example":"RECEIPT_SIGNING_UNAVAILABLE","type":"string"},"error":{"type":"string"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Receipt signing key unavailable; no charge."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: score/overall.","tags":["Vastu"]}},"/v2/vastu/score/zone-wise":{"post":{"operationId":"postV2VastuScoreZoneWise","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreZoneWiseRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuScoreZoneWiseResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"},"503":{"content":{"application/json":{"schema":{"properties":{"billing":{"properties":{"charged":{"enum":[0],"type":"number"}},"type":"object"},"code":{"example":"RECEIPT_SIGNING_UNAVAILABLE","type":"string"},"error":{"type":"string"},"success":{"type":"boolean"}},"type":"object"}}},"description":"Receipt signing key unavailable; no charge."}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: score/zone-wise.","tags":["Vastu"]}},"/v2/vastu/specialized/commercial":{"post":{"operationId":"postV2VastuSpecializedCommercial","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"facing":"east","rooms":[{"roomType":"owner cabin","zone":"southwest"},{"roomType":"cash counter","zone":"north"},{"roomType":"kitchen","zone":"southeast"},{"roomType":"toilet","zone":"northwest"}]},"schema":{"$ref":"#/components/schemas/VastuSpecializedCommercialRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedCommercialResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/commercial.","tags":["Vastu"]}},"/v2/vastu/specialized/educational":{"post":{"operationId":"postV2VastuSpecializedEducational","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedEducationalRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedEducationalResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/educational.","tags":["Vastu"]}},"/v2/vastu/specialized/factory":{"post":{"operationId":"postV2VastuSpecializedFactory","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"facing":"east","rooms":[{"roomType":"heavy machinery","zone":"southwest"},{"roomType":"furnace","zone":"southeast"},{"roomType":"toilet","zone":"northwest"},{"roomType":"water tank","zone":"northeast"}]},"schema":{"$ref":"#/components/schemas/VastuSpecializedFactoryRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedFactoryResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/factory.","tags":["Vastu"]}},"/v2/vastu/specialized/hospital":{"post":{"description":"Applies modern Vastu consultancy conventions to supplied hospital room zones. This is not verified classical authority or clinical guidance.","operationId":"postV2VastuSpecializedHospital","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedHospitalRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedHospitalResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/hospital.","tags":["Vastu"]}},"/v2/vastu/specialized/residential":{"post":{"operationId":"postV2VastuSpecializedResidential","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedResidentialRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedResidentialResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/residential.","tags":["Vastu"]}},"/v2/vastu/specialized/restaurant":{"post":{"operationId":"postV2VastuSpecializedRestaurant","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedRestaurantRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedRestaurantResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/restaurant.","tags":["Vastu"]}},"/v2/vastu/specialized/temple":{"post":{"operationId":"postV2VastuSpecializedTemple","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"facing":"east","rooms":[{"roomType":"garbhagriha","zone":"west"},{"roomType":"madapalli kitchen","zone":"southeast"},{"roomType":"store","zone":"southwest"},{"roomType":"main entrance","zone":"east"}]},"schema":{"$ref":"#/components/schemas/VastuSpecializedTempleRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuSpecializedTempleResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: specialized/temple.","tags":["Vastu"]}},"/v2/vastu/timing/bhumi-pujan":{"post":{"operationId":"postV2VastuTimingBhumiPujan","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingBhumiPujanRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingBhumiPujanResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: timing/bhumi-pujan.","tags":["Vastu"]}},"/v2/vastu/timing/construction-start":{"post":{"operationId":"postV2VastuTimingConstructionStart","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingConstructionStartRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingConstructionStartResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: timing/construction-start.","tags":["Vastu"]}},"/v2/vastu/timing/grihapravesh":{"post":{"operationId":"postV2VastuTimingGrihapravesh","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingGrihapraveshRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingGrihapraveshResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: timing/grihapravesh.","tags":["Vastu"]}},"/v2/vastu/timing/vastu-shanti":{"post":{"operationId":"postV2VastuTimingVastuShanti","parameters":[{"description":"Your Vedika API key. Authorization: Bearer <key> is also accepted.","in":"header","name":"X-API-Key","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingVastuShantiRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuTimingVastuShantiResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Invalid request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Authentication required"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Insufficient balance"},"405":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Unsupported HTTP method. The Allow header lists supported methods.","headers":{"Allow":{"schema":{"type":"string"}}}},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Set Content-Type to application/json."},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"description":"Calculation failed and any charge was refunded"}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}],"summary":"Vedika Vastu operation: timing/vastu-shanti.","tags":["Vastu"]}},"/v2/western/antiscia":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/antiscia"},"data":{"method":"antiscia","planets":[{"antisciaLongitude":305.6988,"contraAntisciaLongitude":125.6988,"longitude":54.3012,"planet":"Sun"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing datetime, latitude, longitude, timezone, or polar latitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Compute each planet's antiscia and contra-antiscia mirror points across the solstice axis for a birth chart","tags":["Western Astrology"]}},"/v2/western/aspect-patterns":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"orb":8,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/aspect-patterns"},"data":{"method":"aspect_patterns","patterns":[{"description":"Three planets in harmonious trine aspect (120 degrees)","name":"Grand Trine","planets":["Sun","Moon","Jupiter"]},{"description":"Two planets in opposition with a third squaring both — dynamic tension","name":"T-Square","planets":["Mars","Saturn","Venus"]}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Detect major chart aspect patterns (Grand Trine, T-Square, Yod, Grand Cross) among the natal planets","tags":["Western Astrology"]}},"/v2/western/astrocartography/city":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"cityLatitude":51.5074,"cityLongitude":-0.1278,"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/astrocartography/city"},"data":{"cityLatitude":51.5074,"cityLongitude":-0.1278,"influences":[{"angle":"MC","influence":"Venus culminates here — career and public life activated","planet":"Venus","proximity":2.31}],"method":"city_influence","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Find which natal planetary lines (MC/IC angles) are activated at a specific city location and their influence","tags":["Western Astrology"]}},"/v2/western/astrocartography/lines":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4996,"balanceBefore":50.0,"category":"calculation","charged":4,"currency":"USD","endpoint":"/v2/western/astrocartography/lines"},"data":{"lines":[{"coordinates":[{"lat":60,"lon":-45},{"lat":50,"lon":-45}],"lineType":"MC","planet":"Sun"},{"coordinates":[{"lat":30.5,"lon":72}],"lineType":"AC","planet":"Sun"}],"method":"astrocartography","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Generate the planetary astrocartography lines (MC, IC, AC, DC) mapped across the globe for a birth chart","tags":["Western Astrology"]}},"/v2/western/cazimi":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"calculation","charged":1,"currency":"USD","endpoint":"/v2/western/cazimi"},"data":{"method":"cazimi_combust","planets":[{"condition":"cazimi","distanceFromSun":0.42,"planet":"Mercury"},{"condition":"combust","distanceFromSun":6.8,"planet":"Venus"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Identify planets that are cazimi (heart of the Sun), combust, or under the Sun's beams in a birth chart","tags":["Western Astrology"]}},"/v2/western/chart-shape":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/chart-shape"},"data":{"description":"Bowl pattern: planets span 174 degrees with a 186-degree empty zone","largestGap":186,"method":"chart_shape","shape":"Bowl","spread":174,"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Classify the overall chart shape (Bundle, Bowl, Locomotive, Bucket, Splash, Splay) from planetary distribution","tags":["Western Astrology"]}},"/v2/western/composite":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. First person's birth details {datetime|date, latitude, longitude, timezone}.","in":"query","name":"person1","required":true,"schema":{"type":"object"}},{"description":"Body field. Second person's birth details {datetime|date, latitude, longitude, timezone}.","in":"query","name":"person2","required":true,"schema":{"type":"object"}}],"requestBody":{"content":{"application/json":{"example":{"person1":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"},"person2":{"datetime":"1992-08-20T14:00:00+05:30","latitude":19.076,"longitude":72.877,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4995,"balanceBefore":50,"category":"relationship","charged":5,"currency":"USD","endpoint":"/v2/western/composite"},"data":{"aspects":[{"aspect":{"angle":60,"name":"Sextile"},"is_applying":true,"orb":1.9,"orb_quality":"tight","planet1":{"id":0,"name":"Sun"},"planet2":{"id":1,"name":"Moon"}}],"composite_ascendant":{"longitude":174.2,"longitude_formatted":"174° 12' 00\"","sign":{"id":5,"name":"Virgo"}},"composite_midheaven":{"longitude":82.6,"longitude_formatted":"82° 36' 00\""},"composite_planets":[{"degree":12.3,"id":0,"is_retrograde":false,"longitude":102.3,"name":"Sun","sign":{"element":"Water","id":3,"modality":"Cardinal","name":"Cancer"}}],"method":"midpoint"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LATITUDE (person1/person2)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Composite (midpoint) relationship chart — a single chart representing the partnership itself, with its own planets, Rising sign, Midheaven and aspects.","tags":["Western Astrology"]}},"/v2/western/composite-aspects":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. First person's birth details {datetime|date, latitude, longitude, timezone}.","in":"query","name":"person1","required":true,"schema":{"type":"object"}},{"description":"Body field. Second person's birth details {datetime|date, latitude, longitude, timezone}.","in":"query","name":"person2","required":true,"schema":{"type":"object"}}],"requestBody":{"content":{"application/json":{"example":{"person1":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"},"person2":{"datetime":"1992-08-20T14:00:00+05:30","latitude":19.076,"longitude":72.877,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4995,"balanceBefore":50,"category":"relationship","charged":5,"currency":"USD","endpoint":"/v2/western/composite-aspects"},"data":{"aspects":[{"aspect":{"angle":90,"name":"Square"},"interpretation":{"keywords":["Tension","Action","Growth"],"nature":"Challenging and dynamic"},"is_applying":false,"orb":2.7,"orb_quality":"moderate","planet1":{"id":3,"name":"Venus"},"planet2":{"id":6,"name":"Saturn"}}]},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LATITUDE (person1/person2)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Just the aspects within the composite (relationship midpoint) chart for two people.","tags":["Western Astrology"]}},"/v2/western/davison":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"person1":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"},"person2":{"datetime":"1992-08-20T14:00:00","latitude":28.61,"longitude":77.21,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"calculation","charged":3,"currency":"USD","endpoint":"/v2/western/davison"},"data":{"davisonDatetime":"1991-07-02T00:15:00.000Z","davisonLatitude":23.84,"davisonLongitude":75.04,"description":"Davison relationship chart — the midpoint of two birth moments and locations","method":"davison_chart","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 Invalid datetime / latitude / longitude / polar latitude in a person object"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Compute the Davison relationship chart — the time/space midpoint of two people's birth moments and locations","tags":["Western Astrology"]}},"/v2/western/decanates":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/decanates"},"data":{"method":"decanates","planets":[{"decanate":3,"decanateSign":"Capricorn","degree":24.3,"planet":"Sun","sign":"Taurus"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Break down every planet by sign decanate (face) and its triplicity decanate sub-ruler","tags":["Western Astrology"]}},"/v2/western/declinations":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/declinations"},"data":{"method":"declinations","planets":[{"declination":18.92,"planet":"Sun"},{"declination":-5.41,"planet":"Moon"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Return the declination (north/south of the celestial equator) of every planet in a birth chart","tags":["Western Astrology"]}},"/v2/western/dignity-score":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/dignity-score"},"data":{"method":"dignity_score","planets":[{"detriment":false,"exaltation":false,"fall":false,"planet":"Sun","rulership":false,"score":0,"sign":"Taurus"},{"detriment":false,"exaltation":false,"fall":false,"planet":"Venus","rulership":true,"score":5,"sign":"Taurus"}],"system":"western","totalScore":7},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Score each planet's essential dignity (rulership, exaltation, detriment, fall) sect-corrected, with a chart total","tags":["Western Astrology"]}},"/v2/western/element-balance":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/element-balance"},"data":{"dominant":"Earth","dominantCount":4,"elements":{"Air":{"count":1,"planets":["Uranus"]},"Earth":{"count":4,"planets":["Sun","Venus","Mercury","Saturn"]},"Fire":{"count":2,"planets":["Mars","Jupiter"]},"Water":{"count":3,"planets":["Moon","Neptune","Pluto"]}},"method":"element_balance","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Tally how the planets distribute across the four elements (Fire, Earth, Air, Water) and identify the dominant one","tags":["Western Astrology"]}},"/v2/western/essential-dignities":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/essential-dignities"},"data":{"method":"essential_dignities","planets":[{"detriment":false,"exaltation":false,"face":false,"fall":false,"planet":"Venus","rulership":true,"score":5,"sign":"Taurus","term":false,"triplicity":false}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Evaluate each planet's full essential dignities — rulership, exaltation, triplicity, term, face, detriment, fall — with a score","tags":["Western Astrology"]}},"/v2/western/firdaria":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/firdaria"},"data":{"isDiurnal":true,"method":"firdaria","periods":[{"endAge":10,"endDate":"2000-05-15","ruler":"Sun","startAge":0,"startDate":"1990-05-15"},{"endAge":18,"endDate":"2008-05-15","ruler":"Venus","startAge":10,"startDate":"2000-05-15"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Generate the Firdaria (Chaldean time-lord) life periods, sect-correctly ordered for day or night birth","tags":["Western Astrology"]}},"/v2/western/fixed-stars":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/fixed-stars"},"data":{"conjunctions":[{"orb":0.42,"planet":"Sun","planetLongitude":54.3,"star":"Aldebaran","starLongitude":69.78}],"method":"fixed_stars","system":"western","zodiac":"tropical"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"List conjunctions between natal planets and prominent fixed stars (tropical) for a birth chart","tags":["Western Astrology"]}},"/v2/western/harmonics/{harmonic}":{"post":{"parameters":[{"description":"Harmonic number, 1 to 360 (e.g. 5 for the 5th-harmonic chart).","in":"path","name":"harmonic","required":true,"schema":{"type":"integer"}},{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/harmonics"},"data":{"harmonic":5,"method":"harmonic_5","planets":[{"degree":1.51,"harmonicLongitude":271.506,"name":"Sun","natalLongitude":54.3012,"sign":"Capricorn"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Compute the Nth harmonic chart (e.g. 5th, 7th, 9th) of a birth chart for any harmonic from 1 to 360","tags":["Western Astrology"]}},"/v2/western/health":{"get":{"parameters":[{"description":"Live API key (mounted under auth).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"features":["transits","progressions","solar-returns","synastry","composite","horoscope"],"provider":"Vedika Astro Engine","service":"v2-western-astrology","status":"healthy","timestamp":"2026-06-14T00:00:00.000Z","totalEndpoints":56,"version":"1.0.0","zodiac":"tropical"},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"}},"summary":"Health check for the Western astrology service (status, feature list, endpoint count).","tags":["Western Astrology"]}},"/v2/western/heliacal":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"date":"1990-05-15","latitude":19.07,"starDec":16.51,"starRA":68.98}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"calculation","charged":3,"currency":"USD","endpoint":"/v2/western/heliacal"},"data":{"approximateDate":"1990-05-15","arcusVisionis":14,"method":"heliacal_rising","note":"Approximate calculation. For precise heliacal rising, use the XALEN Ephemeris heliacal routine.","observerLatitude":19.07,"starDec":16.51,"starRA":68.98,"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Approximate the heliacal rising date of a fixed star from its right ascension, declination, and observer latitude","tags":["Western Astrology"]}},"/v2/western/hemisphere":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/hemisphere"},"data":{"eastern":6,"emphasis":"NE","method":"hemisphere","northern":7,"southern":3,"system":"western","western":4},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Measure the chart's hemisphere emphasis (eastern/western, northern/southern) and the resulting quadrant focus","tags":["Western Astrology"]}},"/v2/western/horoscope/{sign}":{"get":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Zodiac sign: aries, taurus, gemini, cancer, leo, virgo, libra, scorpio, sagittarius, capricorn, aquarius, or pisces.","in":"path","name":"sign","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4995,"balanceBefore":50,"category":"prediction","charged":5,"currency":"USD","endpoint":"/v2/western/horoscope"},"data":{"date":"2026-06-14","element":"Fire","lucky_color":"Red","lucky_number":9,"mood":"Energetic","prediction":"Your pioneering energy is high today...","ruling_planet":"Mars","sign":"aries"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (invalid sign — refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Daily Western horoscope for a Sun sign — a quick same-day reading by sign name.","tags":["Western Astrology"]}},"/v2/western/horoscope/{sign}/advanced":{"get":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Zodiac sign (aries..pisces).","in":"path","name":"sign","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4991,"balanceBefore":50,"category":"prediction","charged":9,"currency":"USD","endpoint":"/v2/western/horoscope-advanced"},"data":{"career":"...","date":"2026-06-14","element":"Fire","health":"...","key_transits":[{"aspect":"Trine","planet":"Mars","sign":"Leo"}],"love":"...","lucky_color":"Red","lucky_number":9,"overview":"With the Sun in Gemini activating your communication sector...","ruling_planet":"Mars","sign":"aries"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 (invalid sign — refunded)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Advanced daily Western horoscope for a Sun sign — richer reading backed by live tropical planetary positions and aspects.","tags":["Western Astrology"]}},"/v2/western/lots/all":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"calculation","charged":3,"currency":"USD","endpoint":"/v2/western/lots/all"},"data":{"lots":[{"degree":22.18,"formula":"Asc + Moon - Sun","longitude":142.18,"name":"Part of Fortune","sign":"Leo"},{"degree":28.4,"formula":"Asc + Sun - Moon","longitude":88.4,"name":"Part of Spirit","sign":"Gemini"},{"degree":12.7,"formula":"Asc + Venus - Saturn","longitude":12.7,"name":"Part of Marriage","sign":"Aries"}],"method":"all_arabian_parts","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Compute the full set of traditional Arabian Parts (Lots) for a birth chart, sect-corrected","tags":["Western Astrology"]}},"/v2/western/lots/fortune":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"calculation","charged":1,"currency":"USD","endpoint":"/v2/western/lots/fortune"},"data":{"degree":22.18,"formula":"Asc + Moon - Sun","longitude":142.18,"method":"lot_of_fortune","name":"Part of Fortune","sign":"Leo","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Compute the Part of Fortune for a birth chart, with sect-correct day/night formula","tags":["Western Astrology"]}},"/v2/western/lots/spirit":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"category":"calculation","charged":1,"currency":"USD","endpoint":"/v2/western/lots/spirit"},"data":{"degree":28.4,"formula":"Asc + Sun - Moon","longitude":88.4,"method":"lot_of_spirit","name":"Part of Spirit","sign":"Gemini","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Compute the Part of Spirit (Lot of Spirit / Daimon) for a birth chart, with sect-correct day/night formula","tags":["Western Astrology"]}},"/v2/western/lunar-return":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"targetDate":"2026-06-14","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"category":"calculation","charged":3,"currency":"USD","endpoint":"/v2/western/lunar-return"},"data":{"daysUntilReturn":7,"method":"lunar_return","returnDate":"2026-06-21","returnDegree":8.42,"returnSign":"Sagittarius","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Find the next Lunar Return — when the transiting Moon returns to its natal longitude — from a target date","tags":["Western Astrology"]}},"/v2/western/midpoints":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/midpoints"},"data":{"method":"midpoints","midpoints":[{"degree":6.7,"midpointLongitude":96.7012,"planet1":"Sun","planet2":"Moon","sign":"Cancer"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Compute the midpoint between every pair of planets in a birth chart, with sign and degree","tags":["Western Astrology"]}},"/v2/western/midpoints/sort":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"maxOrb":2,"targetLongitude":96.7,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/midpoints/sort"},"data":{"method":"midpoints_sorted","midpoints":[{"degree":6.7,"midpointLongitude":96.7012,"orb":0.0,"planet1":"Sun","planet2":"Moon","sign":"Cancer"}],"system":"western","targetLongitude":96.7},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"List the planetary midpoints nearest a target longitude (a midpoint tree), sorted closest first","tags":["Western Astrology"]}},"/v2/western/modality-balance":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*). Active subscription required.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/modality-balance"},"data":{"dominant":"Fixed","dominantCount":5,"method":"modality_balance","modalities":{"Cardinal":{"count":3,"planets":["Moon","Mars","Pluto"]},"Fixed":{"count":5,"planets":["Sun","Venus","Mercury","Saturn","Neptune"]},"Mutable":{"count":2,"planets":["Jupiter","Uranus"]}},"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR (invalid/missing birth data)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 Calculation failed (charge auto-refunded)"}},"summary":"Tally how the planets distribute across the three modalities (Cardinal, Fixed, Mutable) and identify the dominant one","tags":["Western Astrology"]}},"/v2/western/moon-phase":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"charged":1,"currency":"USD","endpoint":"/v2/western/moon-phase"},"data":{"angle":63.21,"emoji":"waxing_crescent","illumination":28.43,"method":"moon_phase","nextFull":"2026-07-10","nextNew":"2026-06-25","phase":"Waxing Crescent","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data (datetime, latitude, longitude)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Get the Moon's phase, illumination percentage, and upcoming new/full Moon dates for a birth chart.","tags":["Western Astrology"]}},"/v2/western/natal-chart":{"post":{"parameters":[{"description":"Live API key (vk_live_* / vk_ent_*). Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 birth datetime with offset, e.g. 1990-05-15T10:30:00+05:30. Alternative: separate date + time fields.","in":"query","name":"datetime","required":false,"schema":{"type":"string"}},{"description":"Body field. Birth date YYYY-MM-DD (used when datetime not given; combined with time).","in":"query","name":"date","required":false,"schema":{"type":"string"}},{"description":"Body field. Birth time HH:MM (defaults to 12:00 noon if omitted; ascendant then approximate).","in":"query","name":"time","required":false,"schema":{"type":"string"}},{"description":"Body field. Birth latitude -90 to 90. Polar (>66.5 abs) rejected.","in":"query","name":"latitude","required":true,"schema":{"type":"number"}},{"description":"Body field. Birth longitude -180 to 180.","in":"query","name":"longitude","required":true,"schema":{"type":"number"}},{"description":"Body field. IANA name (Asia/Kolkata) or UTC offset (+05:30). Defaults to +05:30.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Body field. House system: P=Placidus (default), K=Koch, E=Equal, W=Whole Sign.","in":"query","name":"houseSystem","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","houseSystem":"P","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/natal-chart"},"data":{"ascendant":{"degree":23.27,"longitude":143.27,"nakshatra":"Purva Phalguni","nakshatraPada":2,"sign":4},"datetime":"1990-05-15T05:00:00.000Z","houseSystem":"P","houses":[{"cusp":143.27,"degree":23.27,"house":1,"sign":4}],"julianDay":2448026.7083,"location":{"latitude":28.6139,"longitude":77.209},"midheaven":58.41,"planets":[{"degree":24.32,"distance":1.011,"isRetrograde":false,"latitude":0,"longitude":54.32,"nakshatra":"Rohini","nakshatraPada":3,"planet":"Sun","sign":1,"speed":0.964}],"timezone":"+05:30"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Tropical-zodiac birth chart: planet placements, houses, Rising sign and Midheaven for any birth moment.","tags":["Western Astrology"]}},"/v2/western/out-of-bounds":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"charged":2,"currency":"USD","endpoint":"/v2/western/out-of-bounds"},"data":{"method":"out_of_bounds","planets":[{"declination":18.9123,"isOOB":false,"planet":"Sun","threshold":23.4367},{"declination":24.8841,"isOOB":true,"planet":"Moon","threshold":23.4367},{"declination":21.5012,"isOOB":false,"planet":"Mars","threshold":23.4367}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Identify planets whose declination exceeds the Sun's maximum (out-of-bounds planets) for a birth chart.","tags":["Western Astrology"]}},"/v2/western/parallels":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"orb":1.0,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"charged":2,"currency":"USD","endpoint":"/v2/western/parallels"},"data":{"method":"parallels","parallels":[{"orb":0.42,"planet1":"Sun","planet2":"Venus","type":"parallel"},{"orb":0.78,"planet1":"Moon","planet2":"Saturn","type":"contra-parallel"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Find declination parallels and contra-parallels between planet pairs in a birth chart.","tags":["Western Astrology"]}},"/v2/western/planetary-hours":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"sunrise":6.0,"sunset":18.5,"weekday":3}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"charged":1,"currency":"USD","endpoint":"/v2/western/planetary-hours"},"data":{"hours":[{"end":"07:02","hour":1,"isDaytime":true,"planet":"Mercury","start":"06:00"},{"end":"08:04","hour":2,"isDaytime":true,"planet":"Moon","start":"07:02"},{"end":"19:27","hour":13,"isDaytime":false,"planet":"Mercury","start":"18:30"}],"method":"planetary_hours","system":"western","weekday":3},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Compute the 24 Chaldean-order planetary hours for a day given sunrise, sunset, and weekday.","tags":["Western Astrology"]}},"/v2/western/planetary-return/{planet}":{"post":{"parameters":[{"description":"Planet name (case-insensitive): sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, or pluto.","in":"path","name":"planet","required":true,"schema":{"type":"string"}},{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"targetDate":"2026-06-14","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"charged":3,"currency":"USD","endpoint":"/v2/western/planetary-return"},"data":{"daysUntilReturn":8285,"method":"planetary_return","natalLongitude":287.4521,"orbitalPeriodDays":10759,"planet":"Saturn","returnDate":"2049-02-18","returnDegree":17.45,"returnSign":"Capricorn","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 — planet not found in chart (e.g. unknown {planet})"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Estimate the next date a transiting planet returns to its natal longitude (e.g. Saturn or Jupiter return).","tags":["Western Astrology"]}},"/v2/western/prenatal-eclipse":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"charged":2,"currency":"USD","endpoint":"/v2/western/prenatal-eclipse"},"data":{"approximateDate":"1990-04-25","daysBeforeBirth":20,"method":"prenatal_eclipse","note":"Approximate — not all new/full moons are eclipses. For exact prenatal eclipse, cross-reference with the XALEN Ephemeris eclipse finder.","system":"western","type":"solar"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth date"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Estimate the most recent solar or lunar eclipse before birth (prenatal eclipse) from birth date.","tags":["Western Astrology"]}},"/v2/western/pricing":{"get":{"parameters":[],"responses":{"200":{"content":{"application/json":{"example":{"endpoints":[{"category":"calculation","endpoint":"/v2/western/natal-chart","price":"$0.020","zodiac":"tropical"},{"category":"relationship","endpoint":"/v2/western/synastry","price":"$0.050","zodiac":"tropical"}],"success":true,"summary":{"priceRange":{"max":"$0.130","min":"$0.010"},"system":"Western Astrology (Tropical Zodiac)","totalEndpoints":56}},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"}},"summary":"Public price list for every Western endpoint (no API key, no charge).","tags":["Western Astrology"]}},"/v2/western/primary-directions":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"targetDate":"2026-06-14","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"charged":3,"currency":"USD","endpoint":"/v2/western/primary-directions"},"data":{"arc":36.0822,"method":"primary_directions","planets":[{"arc":36.0822,"degree":0.29,"directedLongitude":90.2925,"name":"Sun","natalLongitude":54.2103,"sign":"Cancer"},{"arc":36.0822,"degree":18.2,"directedLongitude":348.2002,"name":"Moon","natalLongitude":312.118,"sign":"Pisces"}],"system":"western","targetDate":"2026-06-14"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Direct natal planets forward to a target date using the simplified primary-directions arc (1 degree per year).","tags":["Western Astrology"]}},"/v2/western/profections":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"targetDate":"2026-06-14","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"charged":2,"currency":"USD","endpoint":"/v2/western/profections"},"data":{"age":36,"description":"Age 36: 1st house year. Aquarius activated. Time lord: Saturn.","houseFromAsc":1,"method":"profections","profectedSign":"Aquarius","profectedSignIndex":10,"system":"western","timeLord":"Saturn"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Compute the annual profection (activated whole-sign house, sign, and time-lord) for a given age/date.","tags":["Western Astrology"]}},"/v2/western/progression-aspects":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 natal birth datetime.","in":"query","name":"datetime","required":true,"schema":{"type":"string"}},{"description":"Body field. Birth latitude -90 to 90.","in":"query","name":"latitude","required":true,"schema":{"type":"number"}},{"description":"Body field. Birth longitude -180 to 180.","in":"query","name":"longitude","required":true,"schema":{"type":"number"}},{"description":"Body field. IANA name or UTC offset.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 target date. Defaults to now.","in":"query","name":"progressionDate","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"progressionDate":"2026-06-14","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50,"category":"calculation","charged":3,"currency":"USD","endpoint":"/v2/western/progression-aspects"},"data":{"aspects":[{"aspect":{"angle":0,"name":"Conjunction"},"interpretation":{"keywords":["Fusion","Intensity","Blending"],"nature":"Variable (depends on planets)"},"is_applying":true,"orb":0.8,"orb_formatted":"0° 48' 00\"","orb_quality":"tight","planet1":{"id":0,"name":"Sun"},"planet2":{"id":3,"name":"Venus"}}],"progressed_date":"2026-06-14T00:00:00.000Z"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LONGITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Aspects formed by the progressed planets — the inner-development signals for a chosen date.","tags":["Western Astrology"]}},"/v2/western/progression-positions":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 natal birth datetime.","in":"query","name":"datetime","required":true,"schema":{"type":"string"}},{"description":"Body field. Birth latitude -90 to 90.","in":"query","name":"latitude","required":true,"schema":{"type":"number"}},{"description":"Body field. Birth longitude -180 to 180.","in":"query","name":"longitude","required":true,"schema":{"type":"number"}},{"description":"Body field. IANA name or UTC offset.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 target date. Defaults to now.","in":"query","name":"progressionDate","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"progressionDate":"2026-06-14","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50,"category":"calculation","charged":3,"currency":"USD","endpoint":"/v2/western/progression-positions"},"data":{"planets":[{"degree":0.5,"id":1,"is_retrograde":false,"longitude":210.5,"longitude_formatted":"210° 30' 00\"","name":"Moon","sign":{"element":"Air","id":6,"modality":"Cardinal","name":"Libra"}}],"progressed_date":"2026-06-14T00:00:00.000Z"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LONGITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Progressed planetary positions only (secondary progressions) for a chosen date.","tags":["Western Astrology"]}},"/v2/western/progressions":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 natal birth datetime (or date+time).","in":"query","name":"datetime","required":true,"schema":{"type":"string"}},{"description":"Body field. Birth latitude -90 to 90.","in":"query","name":"latitude","required":true,"schema":{"type":"number"}},{"description":"Body field. Birth longitude -180 to 180.","in":"query","name":"longitude","required":true,"schema":{"type":"number"}},{"description":"Body field. IANA name or UTC offset.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 target date to progress the chart to. Defaults to now.","in":"query","name":"progressionDate","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"progressionDate":"2026-06-14","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50,"category":"calculation","charged":3,"currency":"USD","endpoint":"/v2/western/progressions"},"data":{"ascendant":{"longitude":150.2,"longitude_formatted":"150° 12' 00\"","sign":{"id":5,"name":"Virgo"}},"birth_date":"1990-05-15T10:30:00+05:30","houses":[{"cusp":150.2,"degree":0.2,"id":1,"sign":{"id":4,"name":"Leo"}}],"planets":[{"degree":29.7,"id":0,"is_retrograde":false,"longitude":89.7,"longitude_formatted":"89° 42' 00\"","name":"Sun","sign":{"element":"Air","id":2,"modality":"Mutable","name":"Gemini"}}],"progressed_date":"2026-06-14T00:00:00.000Z","type":"secondary"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LONGITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Secondary progression chart (1 day = 1 year of life) — your symbolically evolved planets, houses and Rising sign for a chosen date.","tags":["Western Astrology"]}},"/v2/western/reception":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"charged":2,"currency":"USD","endpoint":"/v2/western/reception"},"data":{"method":"mutual_reception","receptions":[{"planet1":"Mars","planet2":"Venus","sign1":"Taurus","sign2":"Aries","type":"rulership"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Detect mutual receptions (planets sitting in each other's ruling signs) in a birth chart.","tags":["Western Astrology"]}},"/v2/western/relocated":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"newLatitude":40.7128,"newLongitude":-74.006,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"charged":2,"currency":"USD","endpoint":"/v2/western/relocated"},"data":{"ascendant":{"degree":0.34,"longitude":210.34,"sign":"Libra"},"houses":[210.34,238.1,268.7,300.2,332.5,2.1,30.34,58.1,88.7,118.92,152.5,182.1],"method":"relocated_chart","midheaven":118.92,"newLatitude":40.7128,"newLongitude":-74.006,"planets":[{"house":8,"longitude":54.2103,"name":"Sun","sign":"Taurus"},{"house":5,"longitude":312.118,"name":"Moon","sign":"Aquarius"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Recast a birth chart for a new location (relocation/astrocartography move) returning relocated angles, houses, and planets.","tags":["Western Astrology"]}},"/v2/western/retrograde-analysis":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"charged":2,"currency":"USD","endpoint":"/v2/western/retrograde-analysis"},"data":{"method":"retrograde_analysis","planets":[{"isRetrograde":true,"planet":"Mercury","speed":-0.4231,"status":"retrograde"},{"isRetrograde":false,"planet":"Venus","speed":1.1842,"status":"direct"},{"isRetrograde":false,"planet":"Saturn","speed":0.0091,"status":"stationary"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Report retrograde, direct, or stationary status (with speed) for each planet in a birth chart.","tags":["Western Astrology"]}},"/v2/western/sect":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4999,"balanceBefore":50.0,"charged":1,"currency":"USD","endpoint":"/v2/western/sect"},"data":{"description":"Daytime chart: Sun is the sect light, Jupiter the sect benefic, Saturn the sect malefic","isDiurnal":true,"method":"sect","sect":"diurnal","sectBenefic":"Jupiter","sectLight":"Sun","sectMalefic":"Saturn","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Determine whether a chart is diurnal or nocturnal and name its sect light, benefic, and malefic.","tags":["Western Astrology"]}},"/v2/western/solar-arc-directions":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"targetDate":"2026-06-14","timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"charged":3,"currency":"USD","endpoint":"/v2/western/solar-arc"},"data":{"arc":35.5749,"method":"solar_arc","planets":[{"arc":35.5749,"degree":29.79,"directedLongitude":89.7852,"name":"Sun","natalLongitude":54.2103,"sign":"Gemini"},{"arc":35.5749,"degree":17.69,"directedLongitude":347.6929,"name":"Moon","natalLongitude":312.118,"sign":"Pisces"}],"system":"western","targetDate":"2026-06-14"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Apply solar-arc directions (natal Sun rate / Naibod key) to all natal planets for a target date.","tags":["Western Astrology"]}},"/v2/western/solar-return":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 natal birth datetime (or date+time).","in":"query","name":"datetime","required":true,"schema":{"type":"string"}},{"description":"Body field. Birth latitude -90 to 90.","in":"query","name":"latitude","required":true,"schema":{"type":"number"}},{"description":"Body field. Birth longitude -180 to 180.","in":"query","name":"longitude","required":true,"schema":{"type":"number"}},{"description":"Body field. IANA name or UTC offset.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Body field. Solar-return year (e.g. 2026). Defaults to the current year.","in":"query","name":"year","required":false,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50,"category":"calculation","charged":3,"currency":"USD","endpoint":"/v2/western/solar-return"},"data":{"ascendant":{"longitude":205.1,"longitude_formatted":"205° 06' 00\"","sign":{"id":6,"name":"Libra"}},"houses":[{"cusp":205.1,"degree":25.1,"id":1,"sign":{"id":6,"name":"Libra"}}],"interpretation":{"key_themes":["Sun in Taurus: Identity expressed through Stable energy"],"summary":"Solar Return for 2026: themes active from your birthday 2026 to 2027."},"planets":[{"degree":24.32,"id":0,"is_retrograde":false,"longitude":54.32,"name":"Sun","sign":{"element":"Earth","id":1,"modality":"Fixed","name":"Taurus"}}],"return_date":"2026-05-15T09:42:00.000Z","return_year":2026,"type":"solar"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LONGITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Birthday (Solar Return) chart for a given year — the themes, Rising sign and emphasis for your year ahead.","tags":["Western Astrology"]}},"/v2/western/solar-return-aspects":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 natal birth datetime.","in":"query","name":"datetime","required":true,"schema":{"type":"string"}},{"description":"Body field. Birth latitude -90 to 90.","in":"query","name":"latitude","required":true,"schema":{"type":"number"}},{"description":"Body field. Birth longitude -180 to 180.","in":"query","name":"longitude","required":true,"schema":{"type":"number"}},{"description":"Body field. IANA name or UTC offset.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Body field. Solar-return year. Defaults to current year.","in":"query","name":"year","required":false,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50,"category":"calculation","charged":3,"currency":"USD","endpoint":"/v2/western/solar-return-aspects"},"data":{"aspects":[{"aspect":{"angle":60,"name":"Sextile"},"interpretation":{"keywords":["Opportunity","Cooperation","Potential"],"nature":"Harmonious and supportive"},"is_applying":false,"orb":3.2,"orb_quality":"moderate","planet1":{"id":5,"name":"Jupiter"},"planet2":{"id":6,"name":"Saturn"}}],"return_year":2026},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LONGITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Aspects within the Solar Return chart for the requested birthday year.","tags":["Western Astrology"]}},"/v2/western/solar-return-positions":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 natal birth datetime.","in":"query","name":"datetime","required":true,"schema":{"type":"string"}},{"description":"Body field. Birth latitude -90 to 90.","in":"query","name":"latitude","required":true,"schema":{"type":"number"}},{"description":"Body field. Birth longitude -180 to 180.","in":"query","name":"longitude","required":true,"schema":{"type":"number"}},{"description":"Body field. IANA name or UTC offset.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Body field. Solar-return year. Defaults to current year.","in":"query","name":"year","required":false,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"+05:30","year":2026}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50,"category":"calculation","charged":3,"currency":"USD","endpoint":"/v2/western/solar-return-positions"},"data":{"planets":[{"degree":12.6,"id":1,"is_retrograde":false,"longitude":312.6,"name":"Moon","sign":{"element":"Air","id":10,"modality":"Fixed","name":"Aquarius"}}],"return_date":"2026-05-15T09:42:00.000Z","return_year":2026},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LONGITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Solar Return planetary positions only, for the requested birthday year.","tags":["Western Astrology"]}},"/v2/western/speed-analysis":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"charged":2,"currency":"USD","endpoint":"/v2/western/speed-analysis"},"data":{"method":"speed_analysis","planets":[{"averageSpeed":0.986,"planet":"Sun","ratio":0.98,"speed":0.9712,"status":"normal"},{"averageSpeed":13.18,"planet":"Moon","ratio":1.12,"speed":14.812,"status":"normal"},{"averageSpeed":1.38,"planet":"Mercury","ratio":0.31,"speed":-0.4231,"status":"retrograde"}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Classify each planet as fast, slow, stationary, or retrograde relative to its average daily motion.","tags":["Western Astrology"]}},"/v2/western/synastry":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. First person's birth details {datetime|date, latitude, longitude, timezone}. Polar latitudes (>66.5 abs) rejected.","in":"query","name":"person1","required":true,"schema":{"type":"object"}},{"description":"Body field. Second person's birth details {datetime|date, latitude, longitude, timezone}.","in":"query","name":"person2","required":true,"schema":{"type":"object"}}],"requestBody":{"content":{"application/json":{"example":{"person1":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"},"person2":{"datetime":"1992-08-20T14:00:00+05:30","latitude":19.076,"longitude":72.877,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4995,"balanceBefore":50,"category":"relationship","charged":5,"currency":"USD","endpoint":"/v2/western/synastry"},"data":{"aspects":[{"aspect":{"angle":120,"name":"Trine"},"interpretation":{"effect_on_relationship":"Easy understanding and natural compatibility in this area.","nature":"Harmonious and flowing"},"is_applying":true,"orb":1.1,"orb_quality":"tight","planet1":{"id":3,"name":"Venus"},"planet2":{"id":4,"name":"Mars"}}],"interpretation":{"compatibility_factors":{"challenging_aspects":4,"harmonious_aspects":7,"overall":"Generally harmonious"},"key_connections":[{"aspect":"Venus trine Mars","meaning":"Easy understanding and natural compatibility in this area."}],"summary":"Synastry compares two birth charts to reveal relationship dynamics."},"person1":{"planets":[{"id":3,"is_retrograde":false,"longitude":30.1,"name":"Venus","sign":{"element":"Earth","id":1,"modality":"Fixed","name":"Taurus"}}]},"person2":{"planets":[{"id":4,"is_retrograde":false,"longitude":150.4,"name":"Mars","sign":{"id":5,"name":"Virgo"}}]}},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 POLAR_LATITUDE (person1/person2)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Relationship synastry: two birth charts compared, with inter-chart aspects, harmony vs challenge counts and compatibility highlights.","tags":["Western Astrology"]}},"/v2/western/synastry-aspects":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. First person's birth details {datetime|date, latitude, longitude, timezone}.","in":"query","name":"person1","required":true,"schema":{"type":"object"}},{"description":"Body field. Second person's birth details {datetime|date, latitude, longitude, timezone}.","in":"query","name":"person2","required":true,"schema":{"type":"object"}}],"requestBody":{"content":{"application/json":{"example":{"person1":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"},"person2":{"datetime":"1992-08-20T14:00:00+05:30","latitude":19.076,"longitude":72.877,"timezone":"+05:30"}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4995,"balanceBefore":50,"category":"relationship","charged":5,"currency":"USD","endpoint":"/v2/western/synastry-aspects"},"data":{"aspects":[{"aspect":{"angle":0,"name":"Conjunction"},"interpretation":{"effect_on_relationship":"Strong connection and identification with each other in this area of life.","nature":"Variable (depends on planets)"},"is_applying":false,"orb":2.4,"orb_quality":"moderate","planet1":{"id":1,"name":"Moon"},"planet2":{"id":0,"name":"Sun"}}]},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LATITUDE (person1/person2)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Just the inter-chart synastry aspects between two people — the connection points without the full planet lists.","tags":["Western Astrology"]}},"/v2/western/transit-aspects":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 natal birth datetime.","in":"query","name":"datetime","required":true,"schema":{"type":"string"}},{"description":"Body field. Birth latitude -90 to 90.","in":"query","name":"latitude","required":true,"schema":{"type":"number"}},{"description":"Body field. Birth longitude -180 to 180.","in":"query","name":"longitude","required":true,"schema":{"type":"number"}},{"description":"Body field. IANA name or UTC offset.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 moment for transit aspects. Defaults to now.","in":"query","name":"transitDateTime","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/transit-aspects"},"data":{"aspects":[{"aspect":{"angle":90,"name":"Square"},"interpretation":{"keywords":["Tension","Action","Growth"],"meaning":"Creates friction that motivates action and growth.","nature":"Challenging and dynamic"},"is_applying":false,"orb":2.1,"orb_formatted":"2° 06' 00\"","orb_quality":"moderate","planet1":{"id":4,"name":"Mars","signifies":["Action","Energy","Desire","Competition"]},"planet2":{"id":1,"name":"Moon"}}],"transit_datetime":"2026-06-14T00:00:00+05:30"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LONGITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Just the active transit-to-natal aspects for a moment — the timing signals without the full chart payload.","tags":["Western Astrology"]}},"/v2/western/transit-chart":{"post":{"parameters":[{"description":"Live API key. Required on all /v2/* endpoints.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 natal birth datetime (or date+time). The natal chart to compare against.","in":"query","name":"datetime","required":true,"schema":{"type":"string"}},{"description":"Body field. Natal birth latitude -90 to 90.","in":"query","name":"latitude","required":true,"schema":{"type":"number"}},{"description":"Body field. Natal birth longitude -180 to 180.","in":"query","name":"longitude","required":true,"schema":{"type":"number"}},{"description":"Body field. IANA name or UTC offset. Defaults to +05:30.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 moment to compute transits for. Defaults to now.","in":"query","name":"transitDateTime","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"+05:30","transitDateTime":"2026-06-14T00:00:00+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/transit-chart"},"data":{"aspects":[{"aspect":{"angle":120,"name":"Trine"},"is_applying":true,"orb":1.4,"orb_quality":"tight","planet1":{"id":6,"name":"Saturn"},"planet2":{"id":0,"name":"Sun"}}],"interpretation":{"key_aspects":["Transit Saturn trine natal Sun: Natural harmony and ease."],"summary":"Transit charts show how current planetary positions interact with your natal chart."},"natal_chart":{"ascendant":{"longitude":143.27,"sign":{"id":4,"name":"Leo"}},"datetime":"1990-05-15T05:00:00.000Z","houses":[{"cusp":143.27,"degree":23.27,"id":1,"sign":{"id":4,"name":"Leo"}}],"location":{"latitude":28.6139,"longitude":77.209},"midheaven":{"longitude":58.41},"planets":[{"degree":24.32,"id":0,"is_retrograde":false,"longitude":54.32,"longitude_formatted":"54° 19' 12\"","name":"Sun","sign":{"element":"Earth","id":1,"modality":"Fixed","name":"Taurus"},"speed":0.964}]},"transit_datetime":"2026-06-13T18:30:00.000Z","transit_planets":[{"id":6,"is_retrograde":false,"longitude":12.4,"name":"Saturn","sign":{"id":11,"name":"Pisces"}}]},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LONGITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Current (or given-date) transiting planets overlaid on the natal chart, with the active transit-to-natal aspects driving present-day timing.","tags":["Western Astrology"]}},"/v2/western/transit-positions":{"post":{"parameters":[{"description":"Live API key.","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 natal birth datetime (validated even though positions are date-driven).","in":"query","name":"datetime","required":true,"schema":{"type":"string"}},{"description":"Body field. Birth latitude -90 to 90.","in":"query","name":"latitude","required":true,"schema":{"type":"number"}},{"description":"Body field. Birth longitude -180 to 180.","in":"query","name":"longitude","required":true,"schema":{"type":"number"}},{"description":"Body field. IANA name or UTC offset.","in":"query","name":"timezone","required":false,"schema":{"type":"string"}},{"description":"Body field. ISO 8601 moment for positions. Defaults to now.","in":"query","name":"transitDateTime","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00+05:30","latitude":28.6139,"longitude":77.209,"timezone":"+05:30","transitDateTime":"2026-06-14T00:00:00+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50,"category":"calculation","charged":2,"currency":"USD","endpoint":"/v2/western/transit-positions"},"data":{"datetime":"2026-06-13T18:30:00.000Z","planets":[{"degree":23.1,"id":0,"is_retrograde":false,"longitude":83.1,"longitude_formatted":"83° 06' 00\"","name":"Sun","sign":{"element":"Air","id":2,"modality":"Mutable","name":"Gemini"},"speed":0.957}]},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LONGITUDE"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 calculation failed (auto-refunded)"}},"summary":"Current tropical planetary positions (longitude, sign, retrograde) for the requested moment.","tags":["Western Astrology"]}},"/v2/western/void-of-course":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4998,"balanceBefore":50.0,"charged":2,"currency":"USD","endpoint":"/v2/western/void-of-course"},"data":{"currentSign":"Aquarius","degreesUntilSignChange":17.88,"isVoid":false,"lastAspect":"trine Venus","method":"void_of_course_moon","system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Determine whether the Moon is void-of-course, its current sign, last aspect, and degrees until it changes sign.","tags":["Western Astrology"]}},"/v2/western/zodiacal-releasing":{"post":{"parameters":[{"description":"Your Vedika API key (vk_live_* or vk_ent_*).","in":"header","name":"X-API-Key","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"datetime":"1990-05-15T10:30:00","houseSystem":"P","latitude":19.07,"longitude":72.87,"timezone":"+05:30"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"billing":{"balanceAfter":4997,"balanceBefore":50.0,"charged":3,"currency":"USD","endpoint":"/v2/western/zodiacal-releasing"},"data":{"isDiurnal":true,"lotOfFortune":102.3344,"method":"zodiacal_releasing","periods":[{"endDate":"2015-05-15","level":1,"sign":"Cancer","startDate":"1990-05-15","years":25},{"endDate":"2034-05-15","level":1,"sign":"Leo","startDate":"2015-05-15","years":19},{"endDate":"2054-05-15","level":1,"sign":"Virgo","startDate":"2034-05-15","years":20}],"system":"western"},"meta":{"engine":"vedika-intelligence","system":"western","version":"2.1.0","zodiac":"tropical"},"success":true},"schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 VALIDATION_ERROR — invalid/missing birth data"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 INSUFFICIENT_BALANCE — wallet balance below endpoint price"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive — subscription not active"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 — calculation failed (auto-refunded)"}},"summary":"Generate Hellenistic Zodiacal Releasing major (L1) periods from the sect-correct Lot of Fortune.","tags":["Western Astrology"]}},"/v2/widget/birth-chart":{"get":{"parameters":[{"description":"Color theme: light or dark. Defaults to light.","in":"query","name":"theme","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output. Defaults to en. Unsupported codes return 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key as 'Bearer vk_live_...' (preferred). The X-API-Key header is also accepted (deprecated, sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":"<div class=\"vedika-widget\" style=\"max-width: 450px;\"><style>/* inlined theme + form CSS */</style>\n<h3>Birth Chart Calculator</h3>\n<form id=\"vedika-chart-form\" onsubmit=\"return false;\">\n  <label>Date of Birth</label><input type=\"date\" name=\"dob\" required />\n  <label>Time of Birth</label><input type=\"time\" name=\"tob\" required />\n  <div class=\"vedika-row\">\n    <div><label>Latitude</label><input type=\"number\" name=\"lat\" step=\"0.001\" placeholder=\"28.6139\" /></div>\n    <div><label>Longitude</label><input type=\"number\" name=\"lon\" step=\"0.001\" placeholder=\"77.2090\" /></div>\n  </div>\n  <button type=\"submit\">Generate Chart</button>\n</form>\n<p class=\"vedika-muted\">Connect to the Vedika API to display the full birth chart.</p>\n<div class=\"vedika-footer\"><a href=\"https://vedika.io/docs\" target=\"_blank\">API Documentation</a></div>\n</div>","schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LANG_PARAM (unsupported ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (missing or invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 (insufficient wallet balance — billed calls cost at least $0.01)"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (widget generation failed)"}},"summary":"Embeddable birth-chart calculator widget — a self-contained HTML form (date, time, latitude, longitude) ready to wire to the Vedika birth-chart API, themed for iframe embedding.","tags":["Widgets"]}},"/v2/widget/compatibility":{"get":{"parameters":[{"description":"First zodiac sign. Defaults to aries; unknown signs fall back to the Fire element.","in":"query","name":"sign1","required":false,"schema":{"type":"string"}},{"description":"Second zodiac sign. Defaults to leo; unknown signs fall back to the Fire element.","in":"query","name":"sign2","required":false,"schema":{"type":"string"}},{"description":"Color theme: light or dark. Defaults to light.","in":"query","name":"theme","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output. Defaults to en. Unsupported codes return 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key as 'Bearer vk_live_...' (preferred). The X-API-Key header is also accepted (deprecated, sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":"<div class=\"vedika-widget\"><style>/* inlined theme CSS */</style>\n<h3>Aries + Leo Compatibility</h3>\n<div class=\"vedika-card\">\n<p><strong>Score: 82%</strong></p>\n<p>Element harmony: Fire + Fire = <span class=\"vedika-badge\">Harmonious</span></p>\n<p>Natural elemental affinity supports this pairing.</p>\n</div>\n<div class=\"vedika-footer\"><a href=\"https://vedika.io\" target=\"_blank\">Powered by Vedika Intelligence</a></div>\n</div>","schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LANG_PARAM (unsupported ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (missing or invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 (insufficient wallet balance — billed calls cost at least $0.01)"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (widget generation failed)"}},"summary":"Embeddable zodiac compatibility widget — a self-contained HTML card scoring two signs by elemental harmony, themed for iframe embedding on relationship and matchmaking pages.","tags":["Widgets"]}},"/v2/widget/horoscope":{"get":{"parameters":[{"description":"Zodiac sign (aries, taurus, gemini, cancer, leo, virgo, libra, scorpio, sagittarius, capricorn, aquarius, pisces). Defaults to aries; unknown signs return a generic prediction.","in":"query","name":"sign","required":false,"schema":{"type":"string"}},{"description":"Color theme: light or dark. Defaults to light.","in":"query","name":"theme","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output (e.g. hi). Defaults to en. Unsupported codes return 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key as 'Bearer vk_live_...' (preferred). The X-API-Key header is also accepted (deprecated, sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":"<div class=\"vedika-widget\"><style>/* inlined theme CSS */</style>\n<h3>Aries Daily Horoscope</h3>\n<p class=\"vedika-muted\">Saturday, June 14, 2026</p>\n<div class=\"vedika-card\"><p>Energy and initiative drive your day. Take bold steps toward your goals.</p></div>\n<div class=\"vedika-footer\"><a href=\"https://vedika.io\" target=\"_blank\">Powered by Vedika Intelligence</a></div>\n</div>","schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LANG_PARAM (unsupported ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (missing or invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 (insufficient wallet balance — billed calls cost at least $0.01)"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (widget generation failed)"}},"summary":"Embeddable daily horoscope widget — a self-contained, theme-able HTML card with today's prediction for any zodiac sign, ready to drop into an iframe.","tags":["Widgets"]}},"/v2/widget/panchang":{"get":{"parameters":[{"description":"Language for the widget labels: en or hi (Hindi day names and title). Defaults to en. Also drives optional response translation; unsupported codes return 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"Color theme: light or dark. Defaults to light.","in":"query","name":"theme","required":false,"schema":{"type":"string"}},{"description":"API key as 'Bearer vk_live_...' (preferred). The X-API-Key header is also accepted (deprecated, sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":"<div class=\"vedika-widget\"><style>/* inlined theme CSS */</style>\n<h3>Today's Panchang</h3>\n<p class=\"vedika-muted\">June 14, 2026</p>\n<div class=\"vedika-card\"><p><strong>Vara:</strong> Saturday</p></div>\n<div class=\"vedika-card\"><p><strong>Tithi:</strong> Chaturthi</p></div>\n<div class=\"vedika-card\"><p><strong>Nakshatra:</strong> Punarvasu</p></div>\n<div class=\"vedika-footer\"><a href=\"https://vedika.io\" target=\"_blank\">Powered by Vedika Intelligence</a></div>\n</div>","schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LANG_PARAM (unsupported ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (missing or invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 (insufficient wallet balance — billed calls cost at least $0.01)"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (widget generation failed)"}},"summary":"Embeddable daily Panchang widget — a self-contained HTML card showing today's Vedic calendar (Vara, Tithi, Nakshatra), with English and Hindi support, themed for iframe embedding.","tags":["Widgets"]}},"/v2/widget/tarot":{"get":{"parameters":[{"description":"Color theme: light or dark. Defaults to light.","in":"query","name":"theme","required":false,"schema":{"type":"string"}},{"description":"Optional language code for translated output. Defaults to en. Unsupported codes return 400.","in":"query","name":"lang","required":false,"schema":{"type":"string"}},{"description":"API key as 'Bearer vk_live_...' (preferred). The X-API-Key header is also accepted (deprecated, sunset 2026-10-20).","in":"header","name":"Authorization","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":"<div class=\"vedika-widget\"><style>/* inlined theme CSS */</style>\n<h3>Tarot Card of the Day</h3>\n<div class=\"vedika-card\">\n<p><strong>The Lovers</strong></p>\n<p>Love choices and meaningful connections</p>\n</div>\n<p class=\"vedika-muted\">June 14, 2026</p>\n<div class=\"vedika-footer\"><a href=\"https://vedika.io\" target=\"_blank\">Powered by Vedika Intelligence</a></div>\n</div>","schema":{"$ref":"#/components/schemas/StandardResponse"}}},"description":"Success"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"400 INVALID_LANG_PARAM (unsupported ?lang= code)"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"401 (missing or invalid API key)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"402 (insufficient wallet balance — billed calls cost at least $0.01)"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"403 subscription_inactive"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"500 (widget generation failed)"}},"summary":"Embeddable tarot card-of-the-day widget — a self-contained HTML card showing today's tarot card and its meaning, themed light or dark for iframe embedding.","tags":["Widgets"]}}},"security":[{"ApiKeyAuth":[]}],"servers":[{"description":"Production","url":"https://api.vedika.io"},{"description":"Sandbox (free, no auth)","url":"https://api.vedika.io/sandbox"}],"tags":[{"name":"Vedic Astrology"},{"name":"Western Astrology"},{"name":"Tarot"},{"name":"Chinese Astrology"},{"name":"Matchmaking"},{"name":"Daily Horoscope"},{"name":"Crystals"},{"name":"Human Design"},{"name":"Spirituality"},{"name":"Health"},{"name":"I Ching"},{"name":"Lifestyle"},{"name":"Career"},{"name":"Biorhythm"},{"name":"Dreams"},{"name":"Angel Numbers"},{"name":"Calculators"},{"name":"Lenormand"},{"name":"Palmistry"},{"name":"Runes"},{"name":"Oracle"},{"name":"Widgets"},{"name":"Geocode"},{"name":"AI Query"},{"name":"Calendar"},{"name":"Voice"}],"x-vedika-surface":{"provider_contract_source":"/openapi.json","provider_vastu_logical_operations":147,"total_public_ops":853}}