pkg

package
v1.2.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 7, 2024 License: Apache-2.0 Imports: 12 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BulkJobRecord

type BulkJobRecord struct {
	ID                              string  `json:"id"`
	Operation                       string  `json:"operation"`
	Object                          string  `json:"object"`
	CreatedById                     string  `json:"createdById"`
	CreatedDate                     string  `json:"createdDate"`
	SystemModstamp                  string  `json:"systemModstamp"`
	State                           string  `json:"state"`
	ConcurrencyMode                 string  `json:"concurrencyMode"`
	ContentType                     string  `json:"contentType"`
	ApiVersion                      float64 `json:"apiVersion"`
	LineEnding                      string  `json:"lineEnding"`
	ColumnDelimiter                 string  `json:"columnDelimiter"`
	NumberRecordsProcessed          int64   `json:"numberRecordsProcessed"`
	Retries                         int64   `json:"retries"`
	TotalProcessingTimeMilliseconds int64   `json:"totalProcessingTime"`
}

type CollectionsDeleteRequest

type CollectionsDeleteRequest struct {
	AllOrNone bool     `json:"allOrNone"`
	Ids       []string `json:"ids"`
}

CollectionsDeleteRequest is used by the CollectionsDeleteObjects method when interacting with the composite collections api

type CollectionsRequest

type CollectionsRequest struct {
	AllOrNone bool `json:"allOrNone"`
	// the use of json.RawMessage here is to avoid the need to unmarshal the
	// provided records json and remarshal it.
	Records []json.RawMessage `json:"records"`
}

CollectionsRequest is used by the CollectionsCreateObjects and CollectionsUpdateObjects methods when interacting with the composite collections api

type CollectionsResponseError

type CollectionsResponseError struct {
	StatusCode string   `json:"statusCode"`
	Message    string   `json:"message"`
	Fields     []string `json:"fields"`
}

CollectionsResponseError is the error response item for a single object in the response from the collections api

type CollectionsResponseItem

type CollectionsResponseItem struct {
	Id      string                     `json:"id"`
	Success bool                       `json:"success"`
	Errors  []CollectionsResponseError `json:"errors"`
}

CollectionsResponseItem is the response item for a single object in the response from the collections api

type CompositeObject

type CompositeObject struct {
	// SalesforceId is only used for UpdateObjects and DeleteObjects
	SalesforceId string
	// ReferenceId is used to correlate the response to the request
	ReferenceId string
	// ObjectType is the salesforce object type, e.g. "Account"
	ObjectType string
	// Body is the json body to send to salesforce
	Body []byte
}

CompositeObject is a type used for input into CreateObjects. Contains all the information that the library needs to build a CompositeRequest to send to salesforce

type CompositeRequest

type CompositeRequest struct {
	AllOrNone        bool                  `json:"allOrNone"`
	CompositeRequest []CompositeSubRequest `json:"compositeRequest"`
}

CompositeRequest is used by the CreateObjects method when interacting with the salesforce API

ref: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/requests_composite.htm

type CompositeResponse

type CompositeResponse struct {
	CompositeResponse []CompositeSubResponse `json:"compositeResponse"`
}

type CompositeSubRequest

type CompositeSubRequest struct {
	// the use of json.RawMessage here is to avoid the need to unmarshal the
	// body from json and remarshal it.
	Body        json.RawMessage `json:"body,omitempty"`
	HttpHeaders interface{}     `json:"httpHeaders,omitempty"`
	Method      string          `json:"method"`
	ReferenceId string          `json:"referenceId"`
	Url         string          `json:"url"`
}

type CompositeSubResponse

type CompositeSubResponse struct {
	Body           CompositeSubResponseBody `json:"body"`
	HttpStatusCode int                      `json:"httpStatusCode"`
	ReferenceId    string                   `json:"referenceId"`
}

type CompositeSubResponseBody

type CompositeSubResponseBody struct {
	Id      string `json:"id"`
	Success bool   `json:"success"`
	// TODO strongly type this when we figure out the possibilities. the docs
	// don't specify what this field is supposed to be
	Errors []interface{} `json:"errors"`
}

type Config

type Config struct {
	BaseUrl        string `valid:"url,required"`
	ApiVersion     string `valid:"required"`
	ClientId       string `valid:"required"`
	ClientSecret   string `valid:"required"`
	Username       string `valid:"required"`
	Password       string `valid:"required"`
	GrantType      string `valid:"required"`
	FastHTTPClient *fasthttp.Client
}

type DescribeObjectResponse

type DescribeObjectResponse struct {
	Name   string                         `json:"name"`
	Fields []DescribeObjectResponseFields `json:"fields"`
}

DescribeObjectResponse is a simplified struct representation of the json response from the "sObject Describe" API call. Currently only contains the "name" and "fields" fields.

type DescribeObjectResponseFields

type DescribeObjectResponseFields struct {
	Name       string `json:"name"`
	Type       string `json:"type"`
	Calculated bool   `json:"calculated"`
	Createable bool   `json:"createable"`
}

DescribeObjectResponseFields is a nested struct for the Fields field in the "sObject Describe" API response

type GetBulkQueryJobResultsResponse

type GetBulkQueryJobResultsResponse struct {
	NumberOfRecords int
	Locator         string
	Body            []byte
}

type Limit

type Limit struct {
	Max       int `json:"Max"`
	Remaining int `json:"Remaining"`
}

type LimitsResponse

type LimitsResponse struct {
	AnalyticsExternalDataSizeMB                 Limit               `json:"AnalyticsExternalDataSizeMB"`
	ConcurrentAsyncGetReportInstances           Limit               `json:"ConcurrentAsyncGetReportInstances"`
	ConcurrentEinsteinDataInsightsStoryCreation Limit               `json:"ConcurrentEinsteinDataInsightsStoryCreation"`
	ConcurrentEinsteinDiscoveryStoryCreation    Limit               `json:"ConcurrentEinsteinDiscoveryStoryCreation"`
	ConcurrentSyncReportRuns                    Limit               `json:"ConcurrentSyncReportRuns"`
	DailyAnalyticsDataflowJobExecutions         Limit               `json:"DailyAnalyticsDataflowJobExecutions"`
	DailyAnalyticsUploadedFilesSizeMB           Limit               `json:"DailyAnalyticsUploadedFilesSizeMB"`
	DailyApiRequests                            Limit               `json:"DailyApiRequests"`
	DailyAsyncApexExecutions                    Limit               `json:"DailyAsyncApexExecutions"`
	DailyAsyncApexTests                         Limit               `json:"DailyAsyncApexTests"`
	DailyBulkApiBatches                         Limit               `json:"DailyBulkApiBatches"`
	DailyBulkV2QueryFileStorageMB               Limit               `json:"DailyBulkV2QueryFileStorageMB"`
	DailyBulkV2QueryJobs                        Limit               `json:"DailyBulkV2QueryJobs"`
	DailyDeliveredPlatformEvents                Limit               `json:"DailyDeliveredPlatformEvents"`
	DailyDurableGenericStreamingApiEvents       Limit               `json:"DailyDurableGenericStreamingApiEvents"`
	DailyDurableStreamingApiEvents              Limit               `json:"DailyDurableStreamingApiEvents"`
	DailyEinsteinDataInsightsStoryCreation      Limit               `json:"DailyEinsteinDataInsightsStoryCreation"`
	DailyEinsteinDiscoveryOptimizationJobRuns   Limit               `json:"DailyEinsteinDiscoveryOptimizationJobRuns"`
	DailyEinsteinDiscoveryPredictAPICalls       Limit               `json:"DailyEinsteinDiscoveryPredictAPICalls"`
	DailyEinsteinDiscoveryPredictionsByCDC      Limit               `json:"DailyEinsteinDiscoveryPredictionsByCDC"`
	DailyEinsteinDiscoveryStoryCreation         Limit               `json:"DailyEinsteinDiscoveryStoryCreation"`
	DailyFunctionsApiCallLimit                  Limit               `json:"DailyFunctionsApiCallLimit"`
	DailyGenericStreamingApiEvents              Limit               `json:"DailyGenericStreamingApiEvents"`
	DailyStandardVolumePlatformEvents           Limit               `json:"DailyStandardVolumePlatformEvents"`
	DailyStreamingApiEvents                     Limit               `json:"DailyStreamingApiEvents"`
	DailyWorkflowEmails                         Limit               `json:"DailyWorkflowEmails"`
	DataStorageMB                               Limit               `json:"DataStorageMB"`
	DurableStreamingApiConcurrentClients        Limit               `json:"DurableStreamingApiConcurrentClients"`
	FileStorageMB                               Limit               `json:"FileStorageMB"`
	HourlyAsyncReportRuns                       Limit               `json:"HourlyAsyncReportRuns"`
	HourlyDashboardRefreshes                    Limit               `json:"HourlyDashboardRefreshes"`
	HourlyDashboardResults                      Limit               `json:"HourlyDashboardResults"`
	HourlyDashboardStatuses                     Limit               `json:"HourlyDashboardStatuses"`
	HourlyLongTermIdMapping                     Limit               `json:"HourlyLongTermIdMapping"`
	HourlyManagedContentPublicRequests          Limit               `json:"HourlyManagedContentPublicRequests"`
	HourlyODataCallout                          Limit               `json:"HourlyODataCallout"`
	HourlyPublishedPlatformEvents               Limit               `json:"HourlyPublishedPlatformEvents"`
	HourlyPublishedStandardVolumePlatformEvents Limit               `json:"HourlyPublishedStandardVolumePlatformEvents"`
	HourlyShortTermIdMapping                    Limit               `json:"HourlyShortTermIdMapping"`
	HourlySyncReportRuns                        Limit               `json:"HourlySyncReportRuns"`
	HourlyTimeBasedWorkflow                     Limit               `json:"HourlyTimeBasedWorkflow"`
	MassEmail                                   Limit               `json:"MassEmail"`
	MonthlyEinsteinDiscoveryStoryCreation       Limit               `json:"MonthlyEinsteinDiscoveryStoryCreation"`
	MonthlyPlatformEventsUsageEntitlement       Limit               `json:"MonthlyPlatformEventsUsageEntitlement"`
	Package2VersionCreates                      Limit               `json:"Package2VersionCreates"`
	Package2VersionCreatesWithoutValidation     Limit               `json:"Package2VersionCreatesWithoutValidation"`
	PermissionSets                              PermissionSetsLimit `json:"PermissionSets"`
	PrivateConnectOutboundCalloutHourlyLimitMB  Limit               `json:"PrivateConnectOutboundCalloutHourlyLimitMB"`
	PublishCallbackUsageInApex                  Limit               `json:"PublishCallbackUsageInApex"`
	SingleEmail                                 Limit               `json:"SingleEmail"`
	StreamingApiConcurrentClients               Limit               `json:"StreamingApiConcurrentClients"`
}

LimitsResponse is the response from the limits endpoint https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_limits.htm?q=limits

type ListBulkJobsResponse

type ListBulkJobsResponse struct {
	Done           bool            `json:"done"`
	Records        []BulkJobRecord `json:"records"`
	NextRecordsUrl string          `json:"nextRecordsUrl"`
}

type ObjectResponse

type ObjectResponse struct {
	Id      string
	Errors  []string
	Success bool
}

type PermissionSetsLimit

type PermissionSetsLimit struct {
	Max          int   `json:"Max"`
	Remaining    int   `json:"Remaining"`
	CreateCustom Limit `json:"CreateCustom"`
}

type SalesforceCredentials

type SalesforceCredentials struct {
	AccessToken string `json:"access_token"`
	InstanceUrl string `json:"instance_url"`
	Id          string `json:"id"`
	TokenType   string `json:"token_type"`
	IssuedAt    int    `json:"issued_at,string"`
	Signature   string `json:"signature"`
}

SalesforceCredentials represents the response from salesforce's /services/oauth2/token endpoint to get an access token

type SalesforceUtils

type SalesforceUtils struct {
	Config         Config
	Credentials    SalesforceCredentials
	FastHTTPClient *fasthttp.Client
}

SalesforceUtils is the struct that holds config and credentials

func NewSalesforceUtils

func NewSalesforceUtils(authenticate bool, config Config) (*SalesforceUtils, error)

NewSalesforceUtils creates a new instance of SalesforceUtils with the given configuration. If any configuration is not set, it will look up the value from environment variables instead. If the configuration is inavlid, an error will be returned.

func (*SalesforceUtils) Authenticate

func (s *SalesforceUtils) Authenticate() error

Authenticate authenticates with salesforce, storing the resulting credentials on the SalesforceUtils object

func (*SalesforceUtils) CollectionsCreateObjects

func (s *SalesforceUtils) CollectionsCreateObjects(recordsJsonBytes [][]byte) (response []CollectionsResponseItem, err error)

CollectionsCreateObjects creates objects in salesforce using the composite "collections" api. this implementation requires that you marshal your objects to json yourself with an attributes field to your object to define the type.

ex:

{
  "attributes" : {"type" : "Account"},
  "Name" : "Example"
  ...
}

ref: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_sobjects_collections_create.htm

func (*SalesforceUtils) CollectionsDeleteObjects

func (s *SalesforceUtils) CollectionsDeleteObjects(ids []string) (response []CollectionsResponseItem, err error)

CollectionsDeleteObjects deletes objects in salesforce using the composite "collections" api. all that is required is the IDs of the objects to delete.

func (*SalesforceUtils) CollectionsUpdateObjects

func (s *SalesforceUtils) CollectionsUpdateObjects(recordsJsonBytes [][]byte) (response []CollectionsResponseItem, err error)

CollectionsUpdateObjects updates objects in salesforce using the composite "collections" api. this implementation requires that you marshal your objects to json yourself with an attributes field to your object to define the type. the objects must also have an id field.

ex:

{
  "attributes" : {"type" : "Account"},
  "id" : "001RM0000068xVCYAY",
  "Name" : "Example"
  ...
}

ref: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_sobjects_collections_update.htm

func (*SalesforceUtils) CompositeCreateObjects

func (s *SalesforceUtils) CompositeCreateObjects(objects []CompositeObject) (response CompositeResponse, err error)

CompositeCreateObjects creates a list of objects in salesforce using the composite api ref: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_composite_post.htm

func (*SalesforceUtils) CompositeDeleteObjects

func (s *SalesforceUtils) CompositeDeleteObjects(objects []CompositeObject) (response CompositeResponse, err error)

CompositeDeleteObjects deletes a list of objects from salesforce using the composite api ref: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_composite_post.htm

func (*SalesforceUtils) CompositeUpdateObjects

func (s *SalesforceUtils) CompositeUpdateObjects(objects []CompositeObject) (response CompositeResponse, err error)

CompositeUpdateObjects updates a list of objects in salesforce using the composite api ref: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_composite_post.htm

func (*SalesforceUtils) CompositeUpsertObjects

func (s *SalesforceUtils) CompositeUpsertObjects(objects []CompositeObject) (response CompositeResponse, err error)

CompositeUpsertObjects creates or updates a list of objects in salesforce using the composite api. determines update vs create based on the existence of the salesforce id ref: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_composite_post.htm

func (*SalesforceUtils) CreateBulkQueryAllJob

func (s *SalesforceUtils) CreateBulkQueryAllJob(query string) (BulkJobRecord, error)

func (*SalesforceUtils) CreateBulkQueryJob

func (s *SalesforceUtils) CreateBulkQueryJob(query string) (BulkJobRecord, error)

func (*SalesforceUtils) CreateObject

func (s *SalesforceUtils) CreateObject(typeName string, jsonBytes []byte) (response ObjectResponse, err error)

func (*SalesforceUtils) DeleteObject

func (s *SalesforceUtils) DeleteObject(typeName, id string) error

func (*SalesforceUtils) DescribeObject

func (s *SalesforceUtils) DescribeObject(typeName string) (response DescribeObjectResponse, err error)

DescribeObject describes the object type, returning all of the field and types

func (*SalesforceUtils) ExecuteSoqlQuery

func (s *SalesforceUtils) ExecuteSoqlQuery(query string) (SoqlResponse, error)

func (*SalesforceUtils) ExecuteSoqlQueryAll

func (s *SalesforceUtils) ExecuteSoqlQueryAll(query string) (SoqlResponse, error)

func (*SalesforceUtils) GetBulkQueryJob

func (s *SalesforceUtils) GetBulkQueryJob(queryJobID string) (response BulkJobRecord, err error)

func (*SalesforceUtils) GetBulkQueryJobResults

func (s *SalesforceUtils) GetBulkQueryJobResults(queryJobID string, locator string) (response GetBulkQueryJobResultsResponse, err error)

func (*SalesforceUtils) GetLimits

func (s *SalesforceUtils) GetLimits() (*LimitsResponse, error)

func (*SalesforceUtils) GetNextRecords

func (s *SalesforceUtils) GetNextRecords(nextRecordsUrl string) (response SoqlResponse, err error)

func (*SalesforceUtils) ListBulkJobs

func (s *SalesforceUtils) ListBulkJobs() (response ListBulkJobsResponse, err error)

func (*SalesforceUtils) UpdateObject

func (s *SalesforceUtils) UpdateObject(typeName, id string, jsonBytes []byte) error

type SoqlResponse

type SoqlResponse struct {
	Done           bool
	TotalSize      int
	Records        []interface{}
	NextRecordsUrl string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL