Trident APIs

Create global submission

Runs the complete Mosaic submission pipeline (Shell → Full → Quote → Bind) in a single request, orchestrated by an internal state machine.

You send one payload — the platform handles all lifecycle stages internally. There is no need to make separate calls for shell, full, quote, or bind.

The shell step runs synchronously and returns policyNo, policyKey, and policyActivityKey in the response. The full, quote, and bind steps continue asynchronously — poll GET /submission/global/{policyNo}/status to track progress.

Payload structure

Block Purpose Required?
fullRequest Shell (account / policy / producer) + Full (underwriting) data Yes
quoteRequest Pricing, sections, coverages, lines (includes bind-time & FON attributes per section/line) Recommended
bindRequest Policy-level bind data (insured enrichment, NAICS, sanction check, surplus broker, FON activity) Recommended

Response timing

The shell step typically completes within 35–40 seconds. Full, quote, and bind steps complete asynchronously.

post
https://trident-api.connecttrident.com/submission/global

Body

application/json

Container carrying the submission bodies for the TridentGlobalSubmission state machine: fullRequest (required; includes shell+full data), quoteRequest (quote + merged section-level bind attributes, optional), and bindRequest (policy-level bind, no sections, optional). Each object is forwarded verbatim to its matching step — use the same JSON the standalone endpoints accept.

GlobalSubmissionRequest

Single-call submission payload. Combines Shell + Full + Quote + Bind data so external consumers send everything once — the platform executes each stage internally in sequence.

fullRequest is required and carries the insured/policy/producer identifiers (shell) plus underwriting enrichment (full). quoteRequest carries all pricing, section, and line data, including bind-time attributes for each section and line. bindRequest carries the policy-level bind attributes that are not tied to a specific section or line.

fullRequestobjectrequired

Required. Shell (Step 1) and Full (Step 2) data combined.

Required fields: underWriter (id), insuredRevenueTurnover.

Required shell fields (first submission): insured, producer, policy (effectiveDate, expiryDate, currency, product, territory), directAssumed, typeOfBilling, division, writtenLine, sectionIdentifier, referenceType, typeOfPlacementBespoke.

Optional fields: producingUnderwriter (id), typeOfLayer (id), producingCompany (id), lloydsIndustrialSector (id).

Per-line fields (ourRole, signedLinePercentage) belong in quoteRequest.lines[].

Show Child Parameters
quoteRequestobject

Quote, FON, and bind attributes at the section and line level.

Required quote fields: sections (array, at least one), summaryCurrency (code), typeOfCyberClauseStatus (id), uSClassification (id), revTurnover (number).

Each entry in sections[] carries coverage lines, deductions, deductibles, reinstatements, regulatory coding, and bind-time attributes (instalmentbasis, paymentDays, firstDue, premiumBasis, typeofClaimBasis, taxDeductions).

Each entry in lines[] represents an agency line and carries submission fields (underWriter, typeOfBilling, division, writtenLine, producingCompany, sBFClass), quote fields (ourRole, signedLinePercentage, producingUnderwriter, lloydsPlatform, bureauLead, isThirdPartyCapacityDeployed), FON fields (brokerOrderPercent, signedOrderPercent, policyLineReference), and bind fields (claimsAgreementParty, defenseCostsCovered, leaderPercent, leaderReference, actualDateWritten, dateSigned, policyLineReferenceOverride). Syndicate lines and derived fields (originating division/office, global-risk cross-reference, inclusive line) are handled by Trident.

Show Child Parameters
bindRequestobject

Policy-level bind attributes —

Key required fields: naicsCode, prebindSanctionCheckComplete.

Supply insured for bind-time enrichment (occupation, mailing address, TINs). Supply surplusBroker when risk premium originates from the United States. Supply fon for FON activity attributes (CY LOB only).

claimsAgreementParty is a per-line attribute — supply it on each entry in quoteRequest.lines[], not here.

Section/line attributes (premiumBasis, typeofClaimBasis, instalmentbasis, leaderPercent, etc.) are carried in quoteRequest — not repeated here.

Show Child Parameters

Response

application/json

Base step succeeded; the full step is running asynchronously.

GlobalSubmissionResponse

Minimal response returned after the base Step Function completes.

submissionIdstring(uuid)

Correlation id for tracing the background full + quote executions in logs

Example:9b3f7c1c-1f0a-4e2d-9d7c-2e3a8b4c6d2e

policyNostring

Policy number produced by the base submission step

Example:Q0038456

policyKeystring

Policy key produced by the base submission step, propagated to the async steps

Example:20894

policyActivityKeystring

Policy activity key produced by the base submission step

Example:45632

statusstring

ACCEPTED means the full step is running in background; FAILED means the base step failed

Allowed values:ACCEPTEDFAILED

Example:ACCEPTED

messagestring

Human-readable message

Example:Base submission succeeded. The full step is running asynchronously.

post/submission/global

Body

{ "fullRequest": { "insured": { "companyName": "Veritas Capital Test 2", "domicileCountry": "United States", "domicileState": "New York", "mailingAddress1": "1123 Cedar Street", "mailingAddressCity": "Green Bay", "email": "noemail@example.com", "zip": "75039" }, "producer": { "id": "2000556" }, "policy": { "effectiveDate": "2026-01-01", "expiryDate": "2027-01-01", "currency": { "code": "USD" }, "product": { "id": "4" }, "territory": { "code": "GBR" } }, "directAssumed": { "id": "1" }, "typeOfBilling": { "id": "1" }, "division": { "id": "2" }, "writtenLine": 100, "sectionIdentifier": { "id": "1" }, "referenceType": { "id": "2" }, "class": { "code": "CY" }, "producingCompany": { "id": "2" }, "typeOfPlacementBespoke": { "id": "1" }, "underWriter": { "id": "2001685" }, "producingUnderwriter": { "id": "2001685" }, "mosaicOccupation": { "id": "792" }, "insuredRevenueTurnover": 0, "typeOfLayer": { "id": "1" }, "lloydsIndustrialSector": { "id": "10" }, "sBFClass": { "id": "7" }, "policyDescription": "UAT Test", "marketSource": { "id": "7" } }, "quoteRequest": { "summaryCurrency": { "code": "USD" }, "typeOfCyberClauseStatus": { "id": "1" }, "uSClassification": { "id": "3" }, "uMR": "B1234CYB2026020", "noOfEmployees": 150, "revTurnover": 10000, "noOfPIIRecords": 300000, "productTemplateSectionToAdd": "Directors and Officers", "bindProbability": { "id": 5 }, "sections": [ { "description": "Cyber Liability Third Party", "gELR": 50, "100%BenchmarkPrm": 50000, "typeOfLayer": { "id": "1" }, "riskCurrency": { "code": "USD" }, "solvencyIIClass": { "id": "13" }, "typeOfLimitBasis": { "id": "1" }, "excess": 0, "100%Limit": 1000000, "agreement": { "agreement": "AGR1000255", "agreementActivity": "AGR1000255-26-02", "agreementSection": "1" }, "coverage": [ { "code": "SPL", "limitCurrency": { "code": "USD" }, "limitOccurrence": 500000, "limitAggregate": 500000, "premium": 15000, "premiumSplit%": 50, "premiumCurrency": { "code": "USD" }, "settlementCcy": { "code": "USD" }, "premiumBasis": { "id": "1" }, "typeofClaimBasis": { "id": "3" } } ], "deduction": [ { "deduction": { "id": "3" }, "deductionRate": 30, "deductionCode": { "code": "BK" }, "typeOfDeductionPayable": { "id": "1" }, "manualOverride": true, "amountOfPremium": 15000 }, { "deduction": { "id": "53" }, "deductionRate": 20, "deductionCode": { "code": "PC" }, "typeOfDeductionPayable": { "id": "2" }, "manualOverride": true, "amountOfPremium": 25000 } ], "deductible": { "typeOfDeductible": { "id": "1" }, "deductionBasis": { "id": "1" }, "manualOverride": true, "amountOfPremium": 15000 }, "conditions": [ { "typeOfClause": { "id": "1" }, "clauseCode": "LSW 3001", "clauseTitle": "Cyber affirmation clause", "clauseNo": 2 } ], "reinstatements": { "reinstatementsApplicable": true, "unlimitedReinstatements": false, "noOfReinstatements": 1, "availableReinstatements": 1, "proRata": true, "reinstatementPercent": 100 }, "regulatoryCoding": [ { "code": "1E", "codeSplitPc": 50, "gELR": 50, "overrideAgreementRiskCode": true } ], "riskAdjustedRateChange": 5, "instalmentbasis": { "id": "8" }, "paymentDays": 30, "firstDue": "2026-08-01", "taxDeductions": [ { "typeOfTax": { "id": "5" }, "country": { "code": "US" } } ] }, { "description": "Cyber Liability First Party", "gELR": 50, "100%BenchmarkPrm": 50000, "typeOfLayer": { "id": "1" }, "riskCurrency": { "code": "USD" }, "solvencyIIClass": { "id": "13" }, "typeOfLimitBasis": { "id": "1" }, "excess": 1000000, "100%Limit": 1000000, "agreement": { "agreement": "AGR1000255", "agreementActivity": "AGR1000255-26-02", "agreementSection": "1" }, "coverage": [ { "code": "BRC", "limitCurrency": { "code": "USD" }, "limitOccurrence": 500000, "limitAggregate": 500000, "premium": 15000, "premiumSplit%": 50, "premiumCurrency": { "code": "USD" }, "settlementCcy": { "code": "USD" }, "premiumBasis": { "id": "1" }, "typeofClaimBasis": { "id": "3" } } ], "deduction": [ { "deduction": { "id": "3" }, "deductionRate": 30, "deductionCode": { "code": "BK" }, "typeOfDeductionPayable": { "id": "1" }, "manualOverride": true, "amountOfPremium": 15000 }, { "deduction": { "id": "53" }, "deductionRate": 20, "deductionCode": { "code": "PC" }, "typeOfDeductionPayable": { "id": "2" }, "manualOverride": true, "amountOfPremium": 25000 } ], "deductible": { "typeOfDeductible": { "id": "1" }, "deductionBasis": { "id": "1" }, "manualOverride": true, "amountOfPremium": 15000 }, "conditions": [ { "typeOfClause": { "id": "1" }, "clauseCode": "CW3", "clauseTitle": "Type 3 Cyber War Clause", "clauseNo": 2 } ], "reinstatements": { "reinstatementsApplicable": true, "unlimitedReinstatements": false, "noOfReinstatements": 1, "availableReinstatements": 1, "proRata": true, "reinstatementPercent": 80 }, "regulatoryCoding": [ { "code": "1E", "codeSplitPc": 50, "gELR": 50, "overrideAgreementRiskCode": true } ], "riskAdjustedRateChange": 5, "instalmentbasis": { "id": "8" }, "paymentDays": 30, "firstDue": "2026-08-01", "taxDeductions": [ { "typeOfTax": { "id": "5" }, "country": { "code": "US" } } ] }, { "description": "Electronic Fraud", "gELR": 50, "100%BenchmarkPrm": 50000, "typeOfLayer": { "id": "1" }, "riskCurrency": { "code": "USD" }, "solvencyIIClass": { "id": "13" }, "typeOfLimitBasis": { "id": "1" }, "excess": 0, "100%Limit": 1000000, "agreement": { "agreement": "AGR1000255", "agreementActivity": "AGR1000255-26-02", "agreementSection": "1" }, "coverage": [ { "code": "FFT", "limitCurrency": { "code": "USD" }, "limitOccurrence": 500000, "limitAggregate": 500000, "premium": 15000, "premiumSplit%": 50, "premiumCurrency": { "code": "USD" }, "settlementCcy": { "code": "USD" }, "premiumBasis": { "id": "1" }, "typeofClaimBasis": { "id": "3" } } ], "deduction": [ { "deduction": { "id": "3" }, "deductionRate": 30, "deductionCode": { "code": "BK" }, "typeOfDeductionPayable": { "id": "1" }, "manualOverride": true, "amountOfPremium": 15000 }, { "deduction": { "id": "53" }, "deductionRate": 20, "deductionCode": { "code": "PC" }, "typeOfDeductionPayable": { "id": "2" }, "manualOverride": true, "amountOfPremium": 25000 } ], "deductible": { "typeOfDeductible": { "id": "1" }, "deductionBasis": { "id": "1" }, "manualOverride": true, "amountOfPremium": 15000 }, "conditions": [ { "typeOfClause": { "id": "1" }, "clauseCode": "CW3", "clauseCondition": "Type 3 Cyber War Clause", "clauseNo": 2 } ], "reinstatements": { "reinstatementsApplicable": true, "unlimitedReinstatements": false, "noOfReinstatements": 1, "availableReinstatements": 1, "proRata": true, "reinstatementPercent": 100 }, "regulatoryCoding": [ { "code": "1E", "codeSplitPc": 50, "gELR": 50, "overrideAgreementRiskCode": true } ], "riskAdjustedRateChange": 5, "instalmentbasis": { "id": "8" }, "paymentDays": 30, "firstDue": "2026-08-01", "taxDeductions": [ { "typeOfTax": { "id": "5" }, "country": { "code": "US" } } ] }, { "description": "TRIA", "gELR": 50, "100%BenchmarkPrm": 50000, "typeOfLayer": { "id": "1" }, "riskCurrency": { "code": "USD" }, "solvencyIIClass": { "id": "13" }, "typeOfLimitBasis": { "id": "1" }, "excess": 0, "100%Limit": 1000000, "agreement": { "agreement": "AGR1000255", "agreementActivity": "AGR1000255-26-02", "agreementSection": "1" }, "coverage": [ { "code": "TRI", "limitCurrency": { "code": "USD" }, "limitOccurrence": 500000, "limitAggregate": 500000, "premium": 15000, "premiumSplit%": 50, "premiumCurrency": { "code": "USD" }, "settlementCcy": { "code": "USD" }, "premiumBasis": { "id": "1" }, "typeofClaimBasis": { "id": "3" } } ], "deduction": [ { "deduction": { "id": "3" }, "deductionRate": 30, "deductionCode": { "code": "BK" }, "typeOfDeductionPayable": { "id": "1" }, "manualOverride": true, "amountOfPremium": 15000 }, { "deduction": { "id": "53" }, "deductionRate": 20, "deductionCode": { "code": "PC" }, "typeOfDeductionPayable": { "id": "2" }, "manualOverride": true, "amountOfPremium": 25000 } ], "deductible": { "typeOfDeductible": { "id": "1" }, "deductionBasis": { "id": "1" }, "manualOverride": true, "amountOfPremium": 15000 }, "conditions": [ { "typeOfClause": { "id": "1" }, "clauseCode": "LSW 3001", "clauseCondition": "Cyber affirmation clause", "clauseNo": 2 } ], "reinstatements": { "reinstatementsApplicable": true, "unlimitedReinstatements": false, "noOfReinstatements": 1, "availableReinstatements": 1, "proRata": true, "reinstatementPercent": 100 }, "regulatoryCoding": [ { "code": "1E", "codeSplitPc": 50, "gELR": 50, "overrideAgreementRiskCode": true } ], "riskAdjustedRateChange": 5, "instalmentbasis": { "id": "8" }, "paymentDays": 30, "firstDue": "2026-08-01", "taxDeductions": [ { "typeOfTax": { "id": "5" }, "country": { "code": "US" } } ] } ], "lines": [ { "underWriter": { "id": "2001685" }, "typeOfBilling": { "id": "1" }, "division": { "id": "2" }, "writtenLine": 100, "sBFClass": { "id": "7" }, "producingUnderwriter": { "id": "2001685" }, "ourRole": { "id": "1" }, "bureauLead": { "id": "1" }, "leadingInsurer": { "id": "1" }, "lloydsPlatform": { "id": "1" }, "isThirdPartyCapacityDeployed": true, "syndicateCapitalManagement": { "code": "ACR" }, "signedLinePercentage": 100, "claimsAgreementParty": true, "defenseCostsCovered": true, "actualDateWritten": "2026-02-15", "dateSigned": "2026-02-15" } ] }, "bindRequest": { "prebindSanctionCheckComplete": true, "mosaicOccupation": { "id": "792" }, "obligor": "ABank", "territory": { "code": "USA" }, "typeofRIBasis": { "id": "1" }, "tailEffectiveDate": "2026-01-01", "insured": { "occupationSource": { "id": "3" }, "issuanceAddressSameAsInsured": true, "policyholderType": { "id": "2" }, "assetsUnderManagement": 500000000, "assetSize": 1000000000 }, "surplusBroker": { "typeofAdmitted": { "id": "1" }, "brokerLicense": "SL-CA-12345", "producerHomeState": { "id": "01" }, "slaNumber": "AB123-26-00001" }, "fon": { "jurisdictionCountry": { "code": "USA" }, "jurisdictionState": { "code": "CA" }, "riskRegulatoryLocation": { "code": "USA" } } } }
 
application/json

Get global submission status

Returns the per-step status (base / full / quote / bind) plus the attempt counters and last error messages for a submission. Updated by a background reconciler as the asynchronous steps complete.

get
https://trident-api.connecttrident.com/submission/global/{policyNo}/status

Path Parameters

policyNostringrequired

Policy number returned by POST /submission/global

Example:Q0038456

Response

application/json

Status row found.

SubmissionStatus

Persisted per-step status for a global submission.

submissionIdstring(uuid)

Example:9b3f7c1c-1f0a-4e2d-9d7c-2e3a8b4c6d2e

policyNostring

Example:Q0038456

overallStatusstring

Allowed values:PENDINGRUNNINGBASE_OKFULL_OKQUOTE_OKSUCCESSFAILED

Example:BASE_OK

currentStepstring

Allowed values:BASEFULLQUOTEBINDDONE

Example:FULL

executionArnstring

Example:arn:aws:states:us-east-2:123456789012:execution:TridentGlobalSubmission:fresh-9b3f7c1c-...

policyKeystring

Example:20894

policyActivityKeystring

Example:45632

baseStatusstring

Allowed values:PENDINGSUCCESSFAILED

Example:SUCCESS

baseAttemptsinteger

Example:1

baseErrorstring | null
baseOutputJsonstring | null

Raw JSON output of the base step (audit)

fullStatusstring

Allowed values:PENDINGSUCCESSFAILED

Example:PENDING

fullAttemptsinteger

Example:0

fullErrorstring | null
fullOutputJsonstring | null
quoteStatusstring

Allowed values:PENDINGSUCCESSFAILED

Example:PENDING

quoteAttemptsinteger

Example:0

quoteErrorstring | null
quoteOutputJsonstring | null
bindStatusstring

Allowed values:PENDINGSUCCESSFAILED

Example:PENDING

bindAttemptsinteger

Example:0

bindErrorstring | null
bindOutputJsonstring | null
createdAtstring(date-time)

Example:2026-05-04T12:34:56.789Z

updatedAtstring(date-time)

Example:2026-05-04T12:35:01.123Z

get/submission/global/{policyNo}/status
 
application/json

Retry a failed global submission

Starts a new state machine execution that resumes from the failed step (current_step on the status row). The original {base, full, quote, bind} payload is read back from the failed execution’s input via DescribeExecution; policyKey / policyActivityKey produced by the successful base step are taken from the status row.

Only allowed when overall_status = FAILED.

post
https://trident-api.connecttrident.com/submission/global/{policyNo}/retry

Path Parameters

policyNostringrequired

Policy number of the failed submission

Example:Q0038456

Response

application/json

Retry accepted; new execution started.

GlobalSubmissionResponse

Minimal response returned after the base Step Function completes.

submissionIdstring(uuid)

Correlation id for tracing the background full + quote executions in logs

Example:9b3f7c1c-1f0a-4e2d-9d7c-2e3a8b4c6d2e

policyNostring

Policy number produced by the base submission step

Example:Q0038456

policyKeystring

Policy key produced by the base submission step, propagated to the async steps

Example:20894

policyActivityKeystring

Policy activity key produced by the base submission step

Example:45632

statusstring

ACCEPTED means the full step is running in background; FAILED means the base step failed

Allowed values:ACCEPTEDFAILED

Example:ACCEPTED

messagestring

Human-readable message

Example:Base submission succeeded. The full step is running asynchronously.

post/submission/global/{policyNo}/retry
 
application/json

CORS preflight for Upload Document

Handles CORS preflight requests for the file upload endpoint

options
https://trident-api.connecttrident.com/submission/global/uploadDocument

Response

200

CORS preflight successful

options/submission/global/uploadDocument
 
200

Upload document

Uploads a document to the DMS for a specific policy. Supports file uploads to designated locations within the policy’s DMS folder structure.

put
https://trident-api.connecttrident.com/submission/global/uploadDocument

Query Parameters

policyIdstringrequired

Unique identifier of the policy

Example:20740

locationstring

Folder location within the DMS structure where the document should be uploaded. Spaces and special characters (%20 for space, %26 for &) are URL-encoded and will be decoded.

Example:Supporting Documents

policyReferencestring

Reference identifier for the policy (e.g., quote reference)

Example:F0022390

Body

multipart/form-data

File to be uploaded to the DMS

filestringrequired

File to be uploaded

Response

text/plain

Document uploaded successfully

string
put/submission/global/uploadDocument

Body

{ "file": "file" }
 
text/plain