The PLS service is the bridge between PLS-POLE / PLS-CADD and the Universal Pole Model. It accepts .pol files (with optional .loa context) and generates PLS-oriented output using a .frm-catalog-driven path: a UPM crossarm is matched to the closest of 68 RUS framing codes (scored on phase count, tangent/deadend/angle, pin-vs-post, neutral-on-arm), and a non-exploded donor POL is cloned with the framing code, pole class, and azimuth patched. Output is a single .pls.zip containing the POL + LOA + .cri + .wnd so PLS-CADD imports with no missing-sidecar warnings.

Direct REST access requires Tier B onboarding. URLs and bearer-token credentials are issued during embedder onboarding — until then, route equivalent calls through the Overhead gateway →. Email hello@epcstudio.io to start.

Endpoints

POST /parse

Parse a PLS payload into the Universal Pole Model. Accepts the .pol file body and, optionally, a companion .loa payload that supplies load-case context the .pol alone doesn’t carry.

curl https://$VERTICAL_AI_BASE_URL/parse \
  -H "Authorization: Bearer $VERTICAL_AI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "pol": "<base64 .pol body>",
    "loa": "<base64 .loa body>"
  }'

Returns one Universal Pole Model. Cross-pole conductor identifiers are preserved where the source file supplies them.

POST /generate

Generate PLS-oriented output from a Universal Pole Model. Returns a payload suitable for round-tripping back into PLS-POLE.

Round-trip workflow

Same shape as the SPIDA flow:

  1. POST /parse your existing .pol (with optional .loa)
  2. Run analysis (clearance, sag, framing) against the resulting pole model
  3. Apply approved HITL fix proposals
  4. POST /generate to get a new PLS payload with the corrected geometry

Coverage notes

  • Tangent, deadend, double-deadend, suspension-angle, and guyed (tg-*) framings are covered with their RUS framing codes
  • Transformer + streetlight equipment ride as additional framing references
  • Neutral-on-PMI and comm-PMI configurations supported via their own framing refs
  • LOA conductor set:phase tags + wire (x, y, z) positions are pulled directly from the patched POL’s STRUCT FILE so PLS-CADD sees consistent geometry between the structure and the loads
  • .wir cable-file parser (V9 / V11 / V14 / V15) lets the LOA generator pull real conductor specs (weight / area / RBS) from a customer-supplied cable directory instead of hardcoded defaults

If you hit a gap that blocks your workflow, please email hello@epcstudio.io.

See also