Create a co-sell opportunity

Creates an opportunity in Tackle and asynchronously dispatches a
Google Cloud Channel opportunities.create request. The response
contains the newly minted Tackle-side id and the requestId of
the dispatched cloud operation; poll
GET /api/opportunities/{id} or
GET /api/opportunities/{id}/events to observe the cloud outcome.

The tackle-operation-id header selects the sub-operation:

  • createOpportunity (default): the state value in the
    request body is honored as-is. Requires
    cosell:CreateOpportunity. If the body's state is
    SUBMITTED, cosell:StartEngagement is additionally
    required.
  • createDraftOpportunity: the body's state must be
    DRAFT; any other value produces a 400. Requires
    cosell:CreateOpportunity.

qualificationInfo.legalLanguageAccepted must be true.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params

Tackle's opportunity payload. Mirrors the Google Cloud Channel
Opportunity (v1alpha1) schema and adds a $tkl-metadata
block carrying Tackle-specific state — CRM linkage,
attribute-syncing subscription ID, and Salesforce sync error
summary.

$tkl-metadata
object

Tackle-specific metadata attached to every opportunity. Carried in
the $tkl-metadata key of the payload.

string

Resource name of the opportunity in the form
opportunities/{opportunity_id}. Populated by Google Cloud
Channel after the first successful create; integrators
should treat this field as read-only — values supplied on
create or update are ignored.

string

Output only. Display name for the customer organization as
resolved by Google Cloud Channel. May be normalized or
disambiguated relative to the
customerInfo.customerDetails.organizationName value
submitted on create.

string
enum

Lifecycle state of the opportunity:

  • STATE_UNSPECIFIED — placeholder default; should not be
    sent on requests.
  • DRAFT — saved but not yet submitted to Google. Settable
    by integrators.
  • SUBMITTED — submitted to Google for review. Settable by
    integrators (requires cosell:StartEngagement).
  • ACCEPTED — Google has accepted the opportunity. Set by
    Google.
  • NOT_ACCEPTED — Google has declined the opportunity. Set
    by Google.

Defaults to DRAFT when omitted on create.

Allowed:
string

Output only. Reason the opportunity was not accepted.

string
enum

Sales stage of the opportunity. The STAGE_UNSPECIFIED,
MIGRATION_IMPL, CLOSED_LOST, and CLOSED_ADMIN values
are set only by the API on the integrator's behalf based on
other fields (for example, partnerInfo.partnerReadyToClose);
they cannot be set directly. The remaining values
(QUALIFY, REFINE, TECH_EVAL_SOL_DEV,
PROPOSAL_NEGOTIATION) can be set on update only after the
opportunity is ACCEPTED.

  • QUALIFY — initial qualification.
  • REFINE — qualification refined; deal scope being shaped.
  • TECH_EVAL_SOL_DEV — technical evaluation / solution
    development.
  • PROPOSAL_NEGOTIATION — proposal and negotiation.
  • MIGRATION_IMPL — migration / implementation; corresponds
    to closed-won.
  • CLOSED_LOST — opportunity closed as lost.
  • CLOSED_ADMIN — administratively closed.
string

Output only. Name of the Google field sales representative
(FSR) who owns the opportunity inside Google.

string

Output only. Email of the Google field sales representative
(FSR) who owns the opportunity inside Google.

string

Output only. Email associated with the creator of the
opportunity. For opportunities created via this API, this
is the email associated with the integrator's M2M client
credentials (see the Authentication section in the spec
description). For opportunities created elsewhere (such as
the Tackle UI), this is the human user's email.

string
enum

Indicates the origin of the opportunity:

  • SOURCE_UNKNOWN — origin not recorded; should not be
    observed on supported responses.
  • GOOGLE — sourced by a Google sales user.
  • GOOGLE_BDR — sourced by a Google Business Development
    Representative.
  • GOOGLE_PROGRAMMATIC — generated by a Google automated
    system.
  • PARTNER — sourced by the partner (the integrator). The
    API forces this value on opportunities created via this
    spec.
Allowed:
opportunityInfo
object
required

Contains details about the opportunity.

qualificationInfo
object
required

Qualification information for the opportunity.

customerInfo
object

Customer information provided during opportunity creation.

isvSolutionConnectInfo
object

Information for an opportunity that goes through Google's ISV
Solution Connect program.

partnerInfo
object

Partner information populated after the opportunity is accepted.

salesCycle
object

Information on the sales cycle.

winLossInfo
object

Win / loss details. Populated after the opportunity is closed.
Output only.

opportunityLines
array of objects

Output only. Populated after the opportunity is accepted.

opportunityLines
opportunityTeamMembers
array of objects

Output only. Populated after the opportunity is accepted.

opportunityTeamMembers
customerContacts
array of objects

Output only. Populated after the opportunity is accepted.

customerContacts
rebateExtensions
array of objects

Output only.

rebateExtensions
date-time

Output only. Timestamp when the opportunity was created.

date-time

Output only. Timestamp when the opportunity was last updated.

string

Output only. Opportunity ID in Google's legacy Partner
Advantage Portal. Useful for integrators reconciling Cloud
Channel opportunities with records that originated in
Partner Advantage; can be ignored by integrators that work
only with Cloud Channel.

string
enum

Indicates if the opportunity is a regular / ISV / 2-tier deal. If
not specified, treated as REGULAR. Cannot be edited after the
opportunity is accepted.

Allowed:
string

Optional. User email that created the opportunity through an
integrator. Only used for integrator-created opportunities. Can
only be set on create and cannot be edited thereafter.

Headers
string
enum

Selects the create sub-operation. Defaults to
createOpportunity when omitted. Any other value (including
update-side operations such as updateOpportunity or
submitOpportunity) is rejected with a 400 Bad Request.

Allowed:
Responses

Language
Credentials
Bearer
MTM JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json