Canopy Connect · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Reference Whitelabel API
11 actions
11 updates
phrasing
extends
openapi/canopy-whitelabel-api-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Canopy Connect's API. It is a proposal applied on top of the contract, not a document Canopy Connect publishes.
What the actions change
x-apievangelist-phrasing
Targets 11
$.info
$.paths['/tos'].get
$.paths['/widget/pull/consentAndConnect'].post
$.paths['/widget/pull/consentAndDocuments'].post
$.paths['/widget/pull/{pullId}/connect'].post
$.paths['/carriers'].get
$.paths['/carriers/{carrierId}'].get
$.paths['/widget/pull/{pullId}/idv'].post
$.paths['/widget/pull/{pullId}/idvoptions'].post
$.paths['/widget/pull/reconnectToken'].post
$.paths['/widget/pull/{pullId}/servicingAction'].post
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Reference Whitelabel API
version: 1.0.0
extends: openapi/canopy-whitelabel-api-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-10-01'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 10
- target: $.paths['/tos'].get
update:
x-apievangelist-phrasing:
intent: Get the current terms of service
effect: read
questions:
- Which terms version should my white-label consent screen show?
- Where do I get the terms of service HTML for my own branded flow?
instructions:
- text: Fetch the current terms of service version and HTML.
- text: Get the terms text to display before asking for consent.
method: generated
generated: '2026-10-01'
- target: $.paths['/widget/pull/consentAndConnect'].post
update:
x-apievangelist-phrasing:
intent: Record consent, create a pull and log in to a carrier
effect: write
questions:
- How do I start a pull with my own UI by submitting consent and the user's carrier login?
- Can I save my own metadata on a pull when it's created?
- Can a new pull be started specifically to request servicing actions?
instructions:
- text: Create a pull on widget {alias} for carrier {carrier} with username token {username}, consent from {device} on terms {version} with wording {language}.
slots:
alias: requestBody.public_alias
carrier: requestBody.insurerName
username: requestBody.insurerUsername
device: requestBody.device_identifier
version: requestBody.terms_version
language: requestBody.consent_language
- text: Connect to carrier {carrier} with username token {username} and password token {password}.
slots:
carrier: requestBody.insurerName
username: requestBody.insurerUsername
password: requestBody.insurerPassword
method: generated
generated: '2026-10-01'
- target: $.paths['/widget/pull/consentAndDocuments'].post
update:
x-apievangelist-phrasing:
intent: Record consent, create a pull and upload documents
effect: write
questions:
- Can a consumer upload their insurance documents instead of logging in to their carrier?
- What are the file size limits when uploading policy documents to a new pull?
instructions:
- text: Create a pull on widget {alias} with documents {documents}, consent from {device} on terms {version} with wording {language}.
slots:
alias: requestBody.public_alias
documents: requestBody.documents
device: requestBody.device_identifier
version: requestBody.terms_version
language: requestBody.consent_language
- text: Upload {documents} as carrier {carrier} policy documents.
slots:
documents: requestBody.documents
carrier: requestBody.insurerName
method: generated
generated: '2026-10-01'
- target: $.paths['/widget/pull/{pullId}/connect'].post
update:
x-apievangelist-phrasing:
intent: Reauthenticate a pull with new credentials
effect: write
questions:
- What do I do when a pull says it's not authenticated?
- How do I resubmit a consumer's carrier login for an existing pull?
instructions:
- text: Reconnect pull {pull} using JWT {jwt} with carrier {carrier} and username token {username}.
slots:
pull: path.pullId
jwt: header.pull-jwt
carrier: requestBody.insurerName
username: requestBody.insurerUsername
- text: Retry login on pull {pull} with password token {password}.
slots:
pull: path.pullId
password: requestBody.insurerPassword
method: generated
generated: '2026-10-01'
- target: $.paths['/carriers'].get
update:
x-apievangelist-phrasing:
intent: List supported insurance carriers
effect: read
questions:
- Which insurance carriers can consumers connect to?
- Can I list only carriers that support particular products like auto or home?
- How do I get the carriers enabled for my widget?
instructions:
- text: List supported carriers.
- text: List carriers that offer {products}.
slots:
products: query.products
- text: Show the carriers available on widget {alias}.
slots:
alias: query.public_alias
method: generated
generated: '2026-10-01'
- target: $.paths['/carriers/{carrierId}'].get
update:
x-apievangelist-phrasing:
intent: Get one supported carrier
effect: read
questions:
- How do I look up the details of a single insurance carrier?
- What UI attributes are returned for a specific carrier?
instructions:
- text: Get carrier {carrier}.
slots:
carrier: path.carrierId
- text: Show carrier {carrier} as configured on widget {alias}.
slots:
carrier: path.carrierId
alias: query.public_alias
method: generated
generated: '2026-10-01'
- target: $.paths['/widget/pull/{pullId}/idv'].post
update:
x-apievangelist-phrasing:
intent: Submit an MFA code for a pull
effect: write
questions:
- How do I pass along the verification code a carrier texted the consumer?
- What happens when a pull is waiting on identity verification?
instructions:
- text: Submit MFA code {code} for pull {pull} with JWT {jwt}.
slots:
code: requestBody.mfaValue
pull: path.pullId
jwt: header.pull-jwt
- text: Send verification code {code} to finish logging in pull {pull}.
slots:
code: requestBody.mfaValue
pull: path.pullId
method: generated
generated: '2026-10-01'
- target: $.paths['/widget/pull/{pullId}/idvoptions'].post
update:
x-apievangelist-phrasing:
intent: Choose how to receive an MFA code
effect: write
questions:
- Can the consumer pick whether the carrier sends the code by text or email?
- What do I send when a pull asks for identity verification options?
instructions:
- text: Select MFA option {option} for pull {pull} with JWT {jwt}.
slots:
option: requestBody.optionKey
pull: path.pullId
jwt: header.pull-jwt
- text: Choose delivery method {option} for the verification code on pull {pull}.
slots:
option: requestBody.optionKey
pull: path.pullId
method: generated
generated: '2026-10-01'
- target: $.paths['/widget/pull/reconnectToken'].post
update:
x-apievangelist-phrasing:
intent: Reconnect a monitored pull with a token
effect: write
questions:
- How does a consumer resume a monitored connection that needs their input?
- What do I do with a reconnect token in my own flow?
instructions:
- text: Reconnect the monitored pull using token {token}.
slots:
token: requestBody.reconnect_token
- text: Redeem reconnect token {token} so the user can fix their connection.
slots:
token: requestBody.reconnect_token
method: generated
generated: '2026-10-01'
- target: $.paths['/widget/pull/{pullId}/servicingAction'].post
update:
x-apievangelist-phrasing:
intent: Confirm or reject a servicing action
effect: write
questions:
- How does a consumer approve a requested change on their policy?
- Can the user decline a servicing action instead of confirming it?
instructions:
- text: Confirm servicing action {action} on pull {pull} with JWT {jwt}.
slots:
action: requestBody.servicing_action_id
pull: path.pullId
jwt: header.pull-jwt
- text: Set servicing action {action} on pull {pull} to confirmed {confirmed}.
slots:
action: requestBody.servicing_action_id
pull: path.pullId
confirmed: requestBody.is_confirmed
method: generated
generated: '2026-10-01'