Skip to content

Create an opportunity

client.Opportunity.New(ctx, body) (*OpportunityCreateResponse, error)
POST/v1/opportunities

Creates a new opportunity record. The $name and $stage fields and the $account relationship are required.

After creation, Lightfield automatically generates an opportunity summary in the background. The $opportunityStatus field is read-only and cannot be set via the API. The $task and $note relationships are also read-only — manage them via the $opportunity relationship on the task, or the $account/$opportunity note relationships instead.

Supports idempotency via the Idempotency-Key header.

To avoid duplicates, we recommend a find-or-create pattern — use list filtering to check if a record exists before creating.

Required scope: opportunities:create

Rate limit category: Write

ParametersExpand Collapse
body OpportunityNewParams
Fields param.Field[map[string, OpportunityNewParamsFieldUnion]]

Field values for the new opportunity. System fields use a $ prefix (e.g. $name, $stage); custom attributes use their bare slug. Required: $name (string) and $stage (option ID or label). Fields of type SINGLE_SELECT or MULTI_SELECT accept either an option ID or label from the field’s typeConfiguration.options — call the definitions endpoint to discover available fields and options. See Fields and relationships for value type details.

map[string, OpportunityNewParamsFieldUnion]
One of the following:
string
float64
bool
type OpportunityNewParamsFieldArray []string
type OpportunityNewParamsFieldAddress struct{…}
City stringOptional

City name.

Country stringOptional

2-letter ISO 3166-1 alpha-2 country code.

Latitude float64Optional

Latitude coordinate.

Longitude float64Optional

Longitude coordinate.

PostalCode stringOptional

Postal or ZIP code.

State stringOptional

State or province.

Street stringOptional

Street address line 1.

Street2 stringOptional

Street address line 2.

type OpportunityNewParamsFieldFullName struct{…}
FirstName stringOptional

The contact’s first name.

LastName stringOptional

The contact’s last name.

Relationships param.Field[map[string, OpportunityNewParamsRelationshipUnion]]

Relationships to set on the new opportunity. System relationships use a $ prefix (e.g. $account, $owner); custom relationships use their bare slug. $account is required. Each value is a single entity ID or an array of IDs. Call the definitions endpoint to list available relationship keys.

map[string, OpportunityNewParamsRelationshipUnion]
One of the following:
string
type OpportunityNewParamsRelationshipArray []string
ReturnsExpand Collapse
type OpportunityCreateResponse struct{…}
ID string

Unique identifier for the entity.

CreatedAt string

ISO 8601 timestamp of when the entity was created.

Fields map[string, OpportunityCreateResponseField]

Map of field names to their typed values. System fields are prefixed with $ (e.g. $name, $email); custom attributes use their bare slug.

Value OpportunityCreateResponseFieldValueUnion

The field value, or null if unset.

One of the following:
string
float64
bool
type OpportunityCreateResponseFieldValueArray []string
type OpportunityCreateResponseFieldValueAddress struct{…}
City stringOptional

City name.

Country stringOptional

2-letter ISO 3166-1 alpha-2 country code.

Latitude float64Optional

Latitude coordinate.

Longitude float64Optional

Longitude coordinate.

PostalCode stringOptional

Postal or ZIP code.

State stringOptional

State or province.

Street stringOptional

Street address line 1.

Street2 stringOptional

Street address line 2.

type OpportunityCreateResponseFieldValueFullName struct{…}
FirstName stringOptional

The contact’s first name.

LastName stringOptional

The contact’s last name.

ValueType string

The data type of the field.

One of the following:
const OpportunityCreateResponseFieldValueTypeAddress OpportunityCreateResponseFieldValueType = "ADDRESS"
const OpportunityCreateResponseFieldValueTypeCheckbox OpportunityCreateResponseFieldValueType = "CHECKBOX"
const OpportunityCreateResponseFieldValueTypeCurrency OpportunityCreateResponseFieldValueType = "CURRENCY"
const OpportunityCreateResponseFieldValueTypeDatetime OpportunityCreateResponseFieldValueType = "DATETIME"
const OpportunityCreateResponseFieldValueTypeEmail OpportunityCreateResponseFieldValueType = "EMAIL"
const OpportunityCreateResponseFieldValueTypeFullName OpportunityCreateResponseFieldValueType = "FULL_NAME"
const OpportunityCreateResponseFieldValueTypeMarkdown OpportunityCreateResponseFieldValueType = "MARKDOWN"
const OpportunityCreateResponseFieldValueTypeMultiSelect OpportunityCreateResponseFieldValueType = "MULTI_SELECT"
const OpportunityCreateResponseFieldValueTypeNumber OpportunityCreateResponseFieldValueType = "NUMBER"
const OpportunityCreateResponseFieldValueTypeSingleSelect OpportunityCreateResponseFieldValueType = "SINGLE_SELECT"
const OpportunityCreateResponseFieldValueTypeSocialHandle OpportunityCreateResponseFieldValueType = "SOCIAL_HANDLE"
const OpportunityCreateResponseFieldValueTypeTelephone OpportunityCreateResponseFieldValueType = "TELEPHONE"
const OpportunityCreateResponseFieldValueTypeText OpportunityCreateResponseFieldValueType = "TEXT"
const OpportunityCreateResponseFieldValueTypeURL OpportunityCreateResponseFieldValueType = "URL"
Relationships map[string, OpportunityCreateResponseRelationship]

Map of relationship names to their associated entities. System relationships are prefixed with $ (e.g. $owner, $contact).

Cardinality string

Whether the relationship is has_one or has_many.

ObjectType string

The type of the related object (e.g. account, contact).

Values []string

IDs of the related entities.

UpdatedAt string

ISO 8601 timestamp of when the entity was last updated, or null.

ExternalID stringOptional

External identifier for the entity, or null if unset.

Create an opportunity

package main

import (
  "context"
  "fmt"

  "github.com/Lightfld/lightfield-go"
  "github.com/Lightfld/lightfield-go/option"
)

func main() {
  client := githubcomlightfldlightfieldgo.NewClient(
    option.WithAPIKey("My API Key"),
  )
  opportunityCreateResponse, err := client.Opportunity.New(context.TODO(), githubcomlightfldlightfieldgo.OpportunityNewParams{
    Fields: map[string]githubcomlightfldlightfieldgo.OpportunityNewParamsFieldUnion{
    "foo": githubcomlightfldlightfieldgo.OpportunityNewParamsFieldUnion{
      OfString: githubcomlightfldlightfieldgo.String("string"),
    },
    },
    Relationships: map[string]githubcomlightfldlightfieldgo.OpportunityNewParamsRelationshipUnion{
    "foo": githubcomlightfldlightfieldgo.OpportunityNewParamsRelationshipUnion{
      OfString: githubcomlightfldlightfieldgo.String("string"),
    },
    },
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", opportunityCreateResponse.ID)
}
{
  "id": "id",
  "createdAt": "createdAt",
  "fields": {
    "foo": {
      "value": "string",
      "valueType": "ADDRESS"
    }
  },
  "httpLink": "httpLink",
  "relationships": {
    "foo": {
      "cardinality": "cardinality",
      "objectType": "objectType",
      "values": [
        "string"
      ]
    }
  },
  "updatedAt": "updatedAt",
  "externalId": "externalId"
}
Returns Examples
{
  "id": "id",
  "createdAt": "createdAt",
  "fields": {
    "foo": {
      "value": "string",
      "valueType": "ADDRESS"
    }
  },
  "httpLink": "httpLink",
  "relationships": {
    "foo": {
      "cardinality": "cardinality",
      "objectType": "objectType",
      "values": [
        "string"
      ]
    }
  },
  "updatedAt": "updatedAt",
  "externalId": "externalId"
}