Compartilhar via


Elead Sales Opportunities (Preview)

Elead Sales Opportunities API searches for and retrieves existing sales opportunity information in the Elead CRM. Opportunity information includes details related to the sales team, source, vehicle of interest and vehicle trade information.This API includes the following capabilities and features for managing opportunity-related information.

This connector is available in the following products and regions:

Service Class Regions
Logic Apps Standard All Logic Apps regions except the following:
     -   Azure Government regions
     -   Azure China regions
     -   US Department of Defense (DoD)
Power Automate Premium All Power Automate regions except the following:
     -   US Government (GCC)
     -   US Government (GCC High)
     -   China Cloud operated by 21Vianet
     -   US Department of Defense (DoD)
Power Apps Premium All Power Apps regions except the following:
     -   US Government (GCC)
     -   US Government (GCC High)
     -   China Cloud operated by 21Vianet
     -   US Department of Defense (DoD)
Contact
Name CDK Global
URL https://serviceconnect.support.cdk.com
Email mbd_support@cdk.com
Connector Metadata
Publisher CDK Global
Website https://fortellis.io
Privacy policy https://fortellis.io/privacy
Categories Data

What does this API do?

This API searches for and retrieves existing sales opportunity information in the Elead CRM. Opportunity information includes details related to the sales team, source, vehicle of interest and vehicle trade information.

Intended Audience

This API is for dealers and vendor partners who manage opportunities and opportunity-related emails.

Capabilities and Features

This API includes the following capabilities and features for managing opportunity-related information.

  • Search and retrieve previously submitted opportunities across all sources
  • Query sales leads by customer Id, date ranges or by date and time
  • Retrieve an opportunity by Elead Id
  • Create new opportunities for existing customer records
  • Add a comment to an opportunity
  • Add, edit and delete vehicles of interest and vehicle trade records
  • Reassign the primary salesperson on the team
  • Reassign the primary BDC agent on the team
  • Send an email on the dealer or vendor partner's behalf
  • Add a salesperson to an opportunity sales team
  • Remove a salesperson from an opportunity sales team
  • Update opportunity sub status
  • Add, remove, and retrieve opportunity sales steps

Pre-requisites

You will need the following to proceed

  • To use the connector, you need to be a Fortellis user
  • You need to create a solution in Fortellis to generate client id and secret to be used while calling the APIs

Detailed Documentation can be found at

https://apidocs.fortellis.io/specs/3c6d6b40-7215-4a81-a087-4f956bb36ec9

Throttling Limits

Name Calls Renewal Period
API calls per connection 100 60 seconds

Actions

Add comment to opportunity

Adds a comment to the specified opportunity

Add salesperson to opportunity

Adds a salesperson to the specified opportunity

Add trade-in to opportunity

Adds a trade-in to the specified opportunity

Add vehicle sought to opportunity

Adds a vehicle sought to the specified opportunity

Create new opportunity

Creates a new opportunity

Query sales opportunities by date range

Retrieve sales opportunities by date range

Query sales opportunities since the provided date and time

Retrieve sales opportunities by the provided date/time (within the past 7 days)

Reassign the primary bdc agent for the specified opportunity

Reassigns the primary bdc agent for the specified opportunity

Reassign the primary salesperson for the specified opportunity

Reassigns the primary salesperson for the specified opportunity

Remove salesperson from opportunity

Removes a salesperson from the specified opportunity

Remove trade-in from opportunity

Removes the specified trade-in from the opportunity

Remove vehicle sought from opportunity

Removes the specified vehicle sought from the opportunity

Send an email and create the corresponding activity

Sends an email and creates the corresponding activity

Add comment to opportunity

Adds a comment to the specified opportunity

Parameters

Name Key Required Type Description
Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

opportunityId
opportunityId True uuid

Unique identifier of the opportunity

comment
comment True string

Comments to be added to the specified opportunity

Add salesperson to opportunity

Adds a salesperson to the specified opportunity

Parameters

Name Key Required Type Description
Opportunity Id
opportunityId True string

Format - uuid.

Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

id
id True uuid

Unique identifier of this salesperson

isPrimary
isPrimary True boolean

true/false whether this is the primary salesperson for the given opportunity

isPositionPrimary
isPositionPrimary True boolean

true/false whether this is the primary salesperson for this position on the given opportunity

positionCode
positionCode True string

Position code for this salesperson on the given opportunity

Returns

Add trade-in to opportunity

Adds a trade-in to the specified opportunity

Parameters

Name Key Required Type Description
Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

opportunityId
opportunityId True uuid

Unique identifier for the opportunity

year
year integer

Year of this vehicle trade-in

make
make string

Make of this vehicle trade-in

model
model string

Model of this vehicle trade-in

trim
trim string

Trim of this vehicle trade-in

vin
vin string

VIN of this vehicle trade-in

estimatedMileage
estimatedMileage integer

Estimated mileage of this vehicle trade-in

interiorColor
interiorColor string

Interior color of this vehicle trade-in

exteriorColor
exteriorColor string

Exterior color of this vehicle trade-in

Returns

Add vehicle sought to opportunity

Adds a vehicle sought to the specified opportunity

Parameters

Name Key Required Type Description
Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

opportunityId
opportunityId True uuid

Unique opportunity identifier

isNew
isNew True boolean

true/false whether the vehicle sought is new

yearFrom
yearFrom integer

Starting year range for this vehicle sought

yearTo
yearTo integer

Ending year range for this vehicle sought

make
make string

Make of the vehicle sought

model
model string

Model of the vehicle sought

trim
trim string

Trim of the vehicle sought

vin
vin string

VIN of the vehicle sought

priceFrom
priceFrom double

Starting price range of the vehicle sought

priceTo
priceTo double

Ending price range of the vehicle sought

maxMileage
maxMileage integer

Max mileage of the vehicle sought

stockNumber
stockNumber string

Stock number of the vehicle sought

isPrimary
isPrimary True boolean

true/false whether this vehicle sought is the primary for the specified opportunity

Returns

Create new opportunity

Creates a new opportunity

Parameters

Name Key Required Type Description
Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

customerId
customerId True uuid

Unique identifier of the customer

dateIn
dateIn date-time

Date and time that the opportunity came in

source
source True string

Source name for this opportunity

subSource
subSource string

Subsource name for this opportunity

status
status string

Current status of this opportunity

subStatus
subStatus string

Substatus of this opportunity

upType
upType True string

Up type for this opportunity

comments
comments string
isNew
isNew True boolean

true/false whether the vehicle sought is new

yearFrom
yearFrom integer

Starting year range for this vehicle sought

yearTo
yearTo integer

Ending year range for this vehicle sought

make
make string

Make of the vehicle sought

model
model string

Model of the vehicle sought

trim
trim string

Trim of the vehicle sought

vin
vin string

VIN of the vehicle sought

priceFrom
priceFrom double

Starting price range of the vehicle sought

priceTo
priceTo double

Ending price range of the vehicle sought

maxMileage
maxMileage integer

Max mileage of the vehicle sought

stockNumber
stockNumber string

Stock number of the vehicle sought

isPrimary
isPrimary True boolean

true/false whether this vehicle sought is the primary for the specified opportunity

year
year integer

Year of this vehicle trade-in

make
make string

Make of this vehicle trade-in

model
model string

Model of this vehicle trade-in

trim
trim string

Trim of this vehicle trade-in

vin
vin string

VIN of this vehicle trade-in

estimatedMileage
estimatedMileage integer

Estimated mileage of this vehicle trade-in

interiorColor
interiorColor string

Interior color of this vehicle trade-in

exteriorColor
exteriorColor string

Exterior color of this vehicle trade-in

name
name True string

Name of the sales step

id
id True uuid

Unique identifier of this salesperson

isPrimary
isPrimary True boolean

true/false whether this is the primary salesperson for the given opportunity

isPositionPrimary
isPositionPrimary True boolean

true/false whether this is the primary salesperson for this position on the given opportunity

positionCode
positionCode True string

Position code for this salesperson on the given opportunity

Returns

Query sales opportunities by date range

Retrieve sales opportunities by date range

Parameters

Name Key Required Type Description
Page
page integer

Format - int32.

Page Size
pageSize integer

Format - int32.

Date From
dateFrom string

Format - date-time (as date-time in RFC3339).

Date To
dateTo string

Format - date-time (as date-time in RFC3339).

Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

Returns

Query sales opportunities since the provided date and time

Retrieve sales opportunities by the provided date/time (within the past 7 days)

Parameters

Name Key Required Type Description
Page
page integer

Format - int32.

Page Size
pageSize integer

Format - int32.

Date From
dateFrom string

Format - date-time (as date-time in RFC3339).

Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

Returns

Reassign the primary bdc agent for the specified opportunity

Reassigns the primary bdc agent for the specified opportunity

Parameters

Name Key Required Type Description
Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

Reassign Primary BDC Agent Request
reassignPrimaryBDCAgentRequest

reassign primary BDC agent request body

Reassign the primary salesperson for the specified opportunity

Reassigns the primary salesperson for the specified opportunity

Parameters

Name Key Required Type Description
Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

Reassign Primary Sales Person Request
reassignPrimarySalesPersonRequest

reassign primary sales person request body

Remove salesperson from opportunity

Removes a salesperson from the specified opportunity

Parameters

Name Key Required Type Description
Opportunity Id
opportunityId True string

Format - uuid.

Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

salespersonId
salespersonId True uuid

Unique identifier of the salesperson

positionCode
positionCode True string

Position code for this salesperson on the given opportunity

Remove trade-in from opportunity

Removes the specified trade-in from the opportunity

Parameters

Name Key Required Type Description
TradeIn Id
tradeInId True string

Format - uuid.

Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

Remove vehicle sought from opportunity

Removes the specified vehicle sought from the opportunity

Parameters

Name Key Required Type Description
Vehicle Sought Id
vehicleSoughtId True string

Format - uuid.

Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

Send an email and create the corresponding activity

Sends an email and creates the corresponding activity

Parameters

Name Key Required Type Description
Client Id
client_id True string

A client ID that should be unique to developer/solution provider building the solution.

Client Secret
client_secret True string

A client secret that should be unique to developer/solution provider building the solution.

Subscription Id
subscription_id True string

A correlation ID that should be returned back to the caller to indicate the return of the given request.

Accept
Accept string

Accept Header

Accept-Charset
Accept-Charset string

Accept-Charset Header

Accept-Encoding
Accept-Encoding string

Accept-Encoding Header

Accept-Language
Accept-Language string

Accept-Language Header

If-Match
If-Match string

If-Match Header

If-None-Match
If-None-Match string

If-None-Match Header

Prefer
Prefer string

Preference of the customer

Request Id
Request-Id True string

Format - guid. A correlation ID that should be returned back to the caller to indicate the return of the given request

opportunityId
opportunityId True uuid

Unique idenitifer of the opportunity

from
from True string

Sender's Email address

recipients
recipients True array of string

A collection of recipient email addresses

carbonCopies
carbonCopies array of string

A collection of carbon copy email addresses

subject
subject True string

Subject of the email

body
body True string

Body of the email

isHtml
isHtml True boolean

Is the body in HTML format?

Returns

Definitions

LinkDescriptionObject

Name Path Type Description
href
href string

The target URI

rel
rel string

The link relation type

method
method string

The HTTP verb that MUST be used to make a request to the target of the link

title
title string

The title that describes the object

SearchOpportunitiesResponse

Name Path Type Description
items
items array of Opportunity

A collection of opportunities

totalItems
totalItems integer

Total number of opportunities for the given query

totalPages
totalPages integer

Total number of pages of opportunities for the given query

pageNumber
pageNumber integer

Current page number for this set of paged results

pageSize
pageSize integer

Page size for this set of paged results

links
links array of LinkDescriptionObject

A collection of HATEOAS links

SearchDeltaOpportunitiesResponse

Name Path Type Description
items
items array of Opportunity

A collection of opportunities

totalItems
totalItems integer

Total number of opportunities for the given query

totalPages
totalPages integer

Total number of pages of opportunities for the given query

pageNumber
pageNumber integer

Current page number for this set of paged results

pageSize
pageSize integer

Page size for this set of paged results

links
links array of LinkDescriptionObject

A collection of HATEOAS links

Opportunity

Name Path Type Description
id
id uuid

Unique identifier for this opportunity

customer
customer OpportunityCustomer
dateIn
dateIn date-time

Date and time that the opportunity came in

source
source string

Source name for this opportunity

subSource
subSource string

Subsource name for this opportunity

status
status string

Current status of this opportunity

subStatus
subStatus string

Substatus of this opportunity

upType
upType string

Up type for this opportunity

soughtVehicles
soughtVehicles array of OpportunityVehicleSought

A collection of vehicles sought for this opportunity

tradeIns
tradeIns array of OpportunityVehicleTradeIn

A collection of vehicle trade-ins for this opportunity

salesTeam
salesTeam array of OpportunitySalesperson

A collection of sales team members and their positions for this opportunity

links
links array of LinkDescriptionObject

A collection of HATEOAS links for this opportunity

OpportunityCustomer

Name Path Type Description
id
id uuid

Unique identifier for this customer

links
links array of LinkDescriptionObject

A collection of HATEOAS links for this customer

OpportunityVehicleSought

Name Path Type Description
id
id uuid

Unique identifier for this vehicle sought

isNew
isNew boolean

true/false whether the vehicle sought is new

yearFrom
yearFrom integer

Starting year range for this vehicle sought

yearTo
yearTo integer

Ending year range for this vehicle sought

make
make string

Make of the vehicle sought

model
model string

Model of the vehicle sought

trim
trim string

Trim of the vehicle sought

vin
vin string

VIN of the vehicle sought

priceFrom
priceFrom double

Starting price range of the vehicle sought

priceTo
priceTo double

Ending price range of the vehicle sought

maxMileage
maxMileage integer

Max mileage of the vehicle sought

stockNumber
stockNumber string

Stock number of the vehicle sought

isPrimary
isPrimary boolean

true/false whether this vehicle sought is the primary for the given opportunity

OpportunityVehicleTradeIn

Name Path Type Description
id
id uuid

Unique identifier for this vehicle trade-in

year
year integer

Year of this vehicle trade-in

make
make string

Make of this vehicle trade-in

model
model string

Model of this vehicle trade-in

trim
trim string

Trim of this vehicle trade-in

vin
vin string

VIN of this vehicle trade-in

estimatedMileage
estimatedMileage integer

Estimated mileage of this vehicle trade-in

interiorColor
interiorColor string

Interior color of this vehicle trade-in

exteriorColor
exteriorColor string

Exterior color of this vehicle trade-in

OpportunitySalesperson

Name Path Type Description
id
id uuid

Unique identifier of this salesperson

firstName
firstName string

First name of this salesperson

lastName
lastName string

Last name of this salesperson

isPrimary
isPrimary boolean

true/false whether this is the primary salesperson for the given opportunity

isPositionPrimary
isPositionPrimary boolean

true/false whether this is the primary salesperson for this position on the given opportunity

positionName
positionName string

Position name for this salesperson on the given opportunity

positionCode
positionCode string

Position code for this salesperson on the given opportunity

links
links array of LinkDescriptionObject

A collection of HATEOAS links for this salesperson

Salesperson

Name Path Type Description
id
id uuid

Unique identifier of this salesperson

isPrimary
isPrimary boolean

true/false whether this is the primary salesperson for the given opportunity

isPositionPrimary
isPositionPrimary boolean

true/false whether this is the primary salesperson for this position on the given opportunity

positionCode
positionCode string

Position code for this salesperson on the given opportunity

SendEmailResponse

Name Path Type Description
activityId
activityId uuid

Unique identifier of the activity

CreateOpportunityResponse

Name Path Type Description
opportunity
opportunity Opportunity
isDuplicate
isDuplicate boolean

true/false whether the given opportunity was determined to be a duplicate

opportunityActivityId
opportunityActivityId uuid

Unique identifier of the activity for the specified opportunity