diff --git a/NAMESPACE b/NAMESPACE index f517d6ba..77cebe81 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -37,6 +37,7 @@ export(rforcecom.bulkAction) export(rforcecom.bulkQuery) export(rforcecom.create) export(rforcecom.delete) +export(rforcecom.getObjectDescription) export(rforcecom.getServerTimestamp) export(rforcecom.login) export(rforcecom.query) @@ -63,6 +64,7 @@ export(sf_delete) export(sf_delete_job_bulk) export(sf_delete_metadata) export(sf_describe_metadata) +export(sf_describe_object_fields) export(sf_describe_objects) export(sf_end_job_bulk) export(sf_get_job_bulk) diff --git a/NEWS.md b/NEWS.md index 329d7dab..d1f6034a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,11 +2,12 @@ ### Features - * Nothing Yet! + * Add **RForcecom** backward compatibile version of `rforcecom.getObjectDescription()` + * Add `sf_describe_object_fields()` which is a tidyier version of `rforcecom.getObjectDescription()` ### Bug Fixes - * Nothing Yet! + * Fix bug where Username/Password authenticated sessions where not working with api_type = "Bulk 1.0" --- diff --git a/R/compatibility.R b/R/compatibility.R index 2f0ceccc..863bb380 100644 --- a/R/compatibility.R +++ b/R/compatibility.R @@ -269,6 +269,27 @@ rforcecom.retrieve <- function(session, objectName, return(resultSet) } +#' salesforcer's backwards compatible version of rforcecom.getObjectDescription +#' +#' @importFrom purrr map_df +#' @template session +#' @template objectName +#' @return Object descriptions +#' @note This function returns a data.frame with one row per field for an object. +#' @export +rforcecom.getObjectDescription <- function(session, objectName){ + + .Deprecated("sf_describe_objects") + + obj_dat <- sf_describe_objects(object_names = objectName, + api_type="SOAP")[[1]] + + obj_fields <- map_df(obj_dat[names(obj_dat) == "fields"], + as.data.frame, + stringsAsFactors=FALSE) + return(obj_fields) +} + #' Run Bulk Action #' #' This function is a convenience wrapper for submitting bulk API jobs diff --git a/R/read-metadata.R b/R/read-metadata.R index 5e4c0782..b4a3f67e 100644 --- a/R/read-metadata.R +++ b/R/read-metadata.R @@ -1,6 +1,6 @@ #' Read Object or Field Metadata from Salesforce #' -#' This function takes a a request of named elements in Salesforce and +#' This function takes a request of named elements in Salesforce and #' returns their metadata #' #' @importFrom XML newXMLNode addChildren xmlParse xmlToList @@ -66,3 +66,32 @@ sf_read_metadata <- function(metadata_type, object_names, verbose=FALSE){ return(resultset) } + +#' Describe Object Fields +#' +#' This function takes the name of an object in Salesforce and returns a description +#' of the fields on that object by returning a tibble with one row per field. +#' +#' @importFrom readr type_convert cols +#' @importFrom dplyr as_tibble +#' @template object_name +#' @note The tibble only contains the fields that the user can view, as defined by +#' the user's field-level security settings. +#' @return A \code{tbl_df} containing one row per field for the requested object. +#' @examples +#' \dontrun{ +#' acct_fields <- sf_describe_object_fields('Account') +#' } +#' @export +sf_describe_object_fields <- function(object_name){ + + stopifnot(length(object_name) == 1) + + # suppress deprecation warnings + suppressWarnings(obj_fields_dat <- rforcecom.getObjectDescription(objectName=object_name)) + obj_fields_dat <- obj_fields_dat %>% + as_tibble() %>% + type_convert(col_types=cols()) + + return(obj_fields_dat) +} \ No newline at end of file diff --git a/README.Rmd b/README.Rmd index 3a69e771..2cfaa75b 100644 --- a/README.Rmd +++ b/README.Rmd @@ -29,7 +29,7 @@ Bulk 2.0, and Metadata APIs. Package features include: * Retrieve and modify metadata (Custom Objects, Fields, etc.) using the Metadata API with: * `sf_describe_objects()`, `sf_create_metadata()`, `sf_update_metadata()` * Utilize backwards compatible functions for the **RForcecom** package, such as: - * `rforcecom.login()`, `rforcecom.query()`, `rforcecom.create()`, `rforcecom.update()` + * `rforcecom.login()`, `rforcecom.getObjectDescription()`, `rforcecom.query()`, `rforcecom.create()` * Basic utility calls (`sf_user_info()`, `sf_server_timestamp()`, `sf_list_objects()`) ## Table of Contents @@ -232,21 +232,34 @@ read_obj_result[[1]][first_two_fields_idx] The data is returned as a list because object definitions are highly nested representations. You may notice that we are missing some really specific details, such as, the picklist -values of a field with type "Picklist". You can get that information using the function -`sf_describe_object()` function which is actually part of the REST and SOAP APIs. -It is recommended that you try out the various metadata functions `sf_read_metadata()`, -`sf_list_metadata()`, `sf_describe_metadata()`, and `sf_describe_objects()` in order -to see which information best suits your use case. +values of a field with type "Picklist". You can get that information using the +`sf_describe_object_fields()` or `sf_describe_objects()` functions which are based +on calls from REST and SOAP APIs. Here is an example using `sf_describe_object_fields()` +where we get a `tbl_df` with one row for each field on the Account object: + +```{r soap-describe-object-fields} +acct_fields <- sf_describe_object_fields('Account') +acct_fields %>% select(name, label, length, soapType, type) +``` + +If you prefer to be more precise about collecting and formatting the field data you +can work directly with the nested lists that the APIs return. In this example we +look at the picklist values of fields on the Account object. ```{r rest-describe-objects} describe_obj_result <- sf_describe_objects(object_names=c('Account', 'Contact')) +# confirm that the Account object is queryable describe_obj_result[[1]][c('label', 'queryable')] -# show the first two returned fields of the Account object -the_type_field <- describe_obj_result[[1]][[58]] -the_type_field$name +# show the different picklist values for the Account Type field +the_type_field <- describe_obj_result[[1]][[59]] +the_type_field$label map_df(the_type_field[which(names(the_type_field) == "picklistValues")], as_tibble) ``` +It is recommended that you try out the various metadata functions `sf_read_metadata()`, +`sf_list_metadata()`, `sf_describe_metadata()`, and `sf_describe_objects()` in order +to see which information best suits your use case. + Where the Metadata API really shines is when it comes to CRUD operations on metadata. In this example we will create an object, add fields to it, then delete that object. diff --git a/_pkgdown.yml b/_pkgdown.yml index a9525226..e74b8916 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -65,6 +65,7 @@ reference: - '`sf_retrieve_metadata`' - '`sf_describe_metadata`' - '`sf_describe_objects`' + - '`sf_describe_object_fields`' - title: Salesforce Org Utility Functions desc: Functions used for basic calls to understand the org. contents: @@ -74,3 +75,17 @@ reference: - '`sf_list_resources`' - '`sf_list_api_limits`' - '`sf_list_objects`' + - title: Backward Compatibility with RForcecom + desc: Functions that mirror RForcecom to ease code transitions between salesforcer and RForcecom + contents: + - '`rforcecom.login`' + - '`rforcecom.getServerTimestamp`' + - '`rforcecom.getObjectDescription`' + - '`rforcecom.create`' + - '`rforcecom.update`' + - '`rforcecom.upsert`' + - '`rforcecom.delete`' + - '`rforcecom.retrieve`' + - '`rforcecom.search`' + - '`rforcecom.query`' + - '`rforcecom.bulkQuery`' diff --git a/docs/CONDUCT.html b/docs/CONDUCT.html index f764040f..b91de2d7 100644 --- a/docs/CONDUCT.html +++ b/docs/CONDUCT.html @@ -21,16 +21,28 @@ + + + - + + + + + + + + + + @@ -40,23 +52,16 @@ - + + - - - - - @@ -126,7 +131,7 @@ @@ -175,10 +180,16 @@

Contributor Code of Conduct

diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html index acb77a10..3e68e4e1 100644 --- a/docs/LICENSE-text.html +++ b/docs/LICENSE-text.html @@ -21,16 +21,28 @@ + + + - + + + + + + + + + + @@ -40,23 +52,16 @@ - + + - - - - - @@ -126,7 +131,7 @@ @@ -169,10 +174,16 @@

License

diff --git a/docs/articles/getting-started.html b/docs/articles/getting-started.html index 46d5eac9..926a7b10 100644 --- a/docs/articles/getting-started.html +++ b/docs/articles/getting-started.html @@ -8,24 +8,23 @@ Getting Started • salesforcer - - + + + + + gtag('config', 'UA-98603021-2'); +
@@ -91,7 +90,7 @@ @@ -111,7 +110,8 @@

Steven M. Mortimer

2018-03-12

- Source: vignettes/getting-started.Rmd + Source: vignettes/getting-started.Rmd +
@@ -147,8 +147,8 @@

#> # A tibble: 2 x 2 #> id success #> <chr> <chr> -#> 1 0036A00000Sp4e9QAB true -#> 2 0036A00000Sp4eAQAR true +#> 1 0036A00000cIQYKQA4 true +#> 2 0036A00000cIQYLQA4 true

@@ -161,8 +161,8 @@

#> # A tibble: 2 x 3 #> Id FirstName LastName #> <chr> <chr> <chr> -#> 1 0036A00000Sp4e9QAB Test Contact-Create-1 -#> 2 0036A00000Sp4eAQAR Test Contact-Create-2

+#> 1 0036A00000cIQYKQA4 Test Contact-Create-1 +#> 2 0036A00000cIQYLQA4 Test Contact-Create-2

@@ -181,8 +181,8 @@

#> # A tibble: 2 x 4 #> Id Account FirstName LastName #> * <chr> <lgl> <chr> <chr> -#> 1 0036A00000Sp4e9QAB NA Test Contact-Create-1 -#> 2 0036A00000Sp4eAQAR NA Test Contact-Create-2

+#> 1 0036A00000cIQYKQA4 NA Test Contact-Create-1 +#> 2 0036A00000cIQYLQA4 NA Test Contact-Create-2

@@ -198,8 +198,8 @@

#> # A tibble: 2 x 2 #> id success #> <chr> <chr> -#> 1 0036A00000Sp4e9QAB true -#> 2 0036A00000Sp4eAQAR true

+#> 1 0036A00000cIQYKQA4 true +#> 2 0036A00000cIQYLQA4 true

@@ -210,8 +210,8 @@

#> # A tibble: 2 x 3 #> id success errors #> <chr> <lgl> <list> -#> 1 0036A00000Sp4e9QAB TRUE <list [0]> -#> 2 0036A00000Sp4eAQAR TRUE <list [0]>

+#> 1 0036A00000cIQYKQA4 TRUE <list [0]> +#> 2 0036A00000cIQYLQA4 TRUE <list [0]>

@@ -238,9 +238,9 @@

#> # A tibble: 3 x 3 #> created id success #> <chr> <chr> <chr> -#> 1 false 0036A00000Sp4eEQAR true -#> 2 false 0036A00000Sp4eFQAR true -#> 3 true 0036A00000Sp4eBQAR true

+#> 1 false 0036A00000cIQYPQA4 true +#> 2 false 0036A00000cIQYQQA4 true +#> 3 true 0036A00000cIQYUQA4 true

@@ -270,10 +270,16 @@

diff --git a/docs/articles/index.html b/docs/articles/index.html index e9624ead..f920ed06 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -21,16 +21,28 @@ + + + - + + + + + + + + + + @@ -40,23 +52,16 @@ - + + - - - - - @@ -126,7 +131,7 @@ @@ -173,10 +178,16 @@

All vignettes

diff --git a/docs/articles/transitioning-from-RForcecom.html b/docs/articles/transitioning-from-RForcecom.html index 6dda4f52..afd22211 100644 --- a/docs/articles/transitioning-from-RForcecom.html +++ b/docs/articles/transitioning-from-RForcecom.html @@ -8,24 +8,23 @@ Transitioning from RForcecom • salesforcer - - + + + + + gtag('config', 'UA-98603021-2'); +
@@ -91,7 +90,7 @@ @@ -111,7 +110,8 @@

Steven M. Mortimer

2018-03-12

- Source: vignettes/transitioning-from-RForcecom.Rmd + Source: vignettes/transitioning-from-RForcecom.Rmd +
@@ -154,13 +154,13 @@

result1 <- RForcecom::rforcecom.create(session, objectName=object, fields) result1 #> id success -#> 1 0036A00000Sp4eOQAR true +#> 1 0036A00000cIQYZQA4 true # replicated in salesforcer package result2 <- salesforcer::rforcecom.create(session, objectName=object, fields) result2 #> id success -#> 1 0036A00000Sp4eTQAR true

+#> 1 0036A00000cIQYeQAO true

Here is an example showing the reduction in code of using salesforcer if you would like to create multiple records.

n <- 2
 new_contacts <- tibble(FirstName = rep("Test", n),
@@ -176,8 +176,8 @@ 

} rforcecom_results #> id success -#> 1 0036A00000Sp4eKQAR true -#> 2 0036A00000Sp4eYQAR true +#> 1 0036A00000cIQYjQAO true +#> 2 0036A00000cIQYoQAO true # the better way in salesforcer to do multiple records salesforcer_results <- sf_create(new_contacts, object_name="Contact") @@ -185,8 +185,8 @@

#> # A tibble: 2 x 2 #> id success #> <chr> <chr> -#> 1 0036A00000Sp4edQAB true -#> 2 0036A00000Sp4eeQAB true

+#> 1 0036A00000cIQYtQAO true +#> 2 0036A00000cIQYuQAO true

@@ -227,6 +227,78 @@

#> 3 0036A00000RUqb0QAD NA #> 4 0036A00000RUqedQAD NA #> 5 0036A00000RUqeeQAD NA

+ +
+

+Describe

+

The RForcecom package has the function rforcecom.getObjectDescription() which returns a data.frame with one row per field on an object. The same function in salesforcer is named sf_describe_object_fields() and also has better printing and datatype casting by using tibbles.

+
# the RForcecom way
+result1 <- RForcecom::rforcecom.getObjectDescription(session, objectName='Account')
+
+# backwards compatible in the salesforcer package
+result2 <- salesforcer::rforcecom.getObjectDescription(session, objectName='Account')
+
+# the better way in salesforcer to get object fields
+result3 <- salesforcer::sf_describe_object_fields('Account')
+result3
+#> # A tibble: 67 x 166
+#>    aggregatable autoNumber byteLength calculated caseSensitive createable
+#>    <chr>        <chr>           <dbl> <chr>      <chr>         <chr>     
+#>  1 true         false             18. false      false         false     
+#>  2 false        false              0. false      false         false     
+#>  3 true         false             18. false      false         false     
+#>  4 true         false            765. false      false         true      
+#>  5 true         false            120. false      false         true      
+#>  6 true         false             18. false      false         true      
+#>  7 true         false            765. false      false         true      
+#>  8 true         false            120. false      false         true      
+#>  9 true         false            240. false      false         true      
+#> 10 true         false             60. false      false         true      
+#> # ... with 57 more rows, and 160 more variables: custom <chr>,
+#> #   defaultedOnCreate <chr>, deprecatedAndHidden <chr>, digits <dbl>,
+#> #   filterable <chr>, groupable <chr>, idLookup <chr>, label <chr>,
+#> #   length <dbl>, name <chr>, nameField <chr>, namePointing <chr>,
+#> #   nillable <chr>, permissionable <chr>, polymorphicForeignKey <chr>,
+#> #   precision <dbl>, queryByDistance <chr>, restrictedPicklist <chr>,
+#> #   scale <dbl>, searchPrefilterable <chr>, soapType <chr>,
+#> #   sortable <chr>, type <chr>, unique <chr>, updateable <chr>,
+#> #   defaultValue.text <chr>, defaultValue..attrs <chr>, referenceTo <chr>,
+#> #   relationshipName <chr>, compoundFieldName <chr>, extraTypeInfo <chr>,
+#> #   picklistValues.active <chr>, picklistValues.defaultValue <chr>,
+#> #   picklistValues.label <chr>, picklistValues.value <chr>,
+#> #   picklistValues.active.1 <chr>, picklistValues.defaultValue.1 <chr>,
+#> #   picklistValues.label.1 <chr>, picklistValues.value.1 <chr>,
+#> #   picklistValues.active.2 <chr>, picklistValues.defaultValue.2 <chr>,
+#> #   picklistValues.label.2 <chr>, picklistValues.value.2 <chr>,
+#> #   picklistValues.active.3 <chr>, picklistValues.defaultValue.3 <chr>,
+#> #   picklistValues.label.3 <chr>, picklistValues.value.3 <chr>,
+#> #   picklistValues.active.4 <chr>, picklistValues.defaultValue.4 <chr>,
+#> #   picklistValues.label.4 <chr>, picklistValues.value.4 <chr>,
+#> #   picklistValues.active.5 <chr>, picklistValues.defaultValue.5 <chr>,
+#> #   picklistValues.label.5 <chr>, picklistValues.value.5 <chr>,
+#> #   picklistValues.active.6 <chr>, picklistValues.defaultValue.6 <chr>,
+#> #   picklistValues.label.6 <chr>, picklistValues.value.6 <chr>,
+#> #   picklistValues.active.7 <chr>, picklistValues.defaultValue.7 <chr>,
+#> #   picklistValues.label.7 <chr>, picklistValues.value.7 <chr>,
+#> #   picklistValues.active.8 <chr>, picklistValues.defaultValue.8 <chr>,
+#> #   picklistValues.label.8 <chr>, picklistValues.value.8 <chr>,
+#> #   picklistValues.active.9 <chr>, picklistValues.defaultValue.9 <chr>,
+#> #   picklistValues.label.9 <chr>, picklistValues.value.9 <chr>,
+#> #   picklistValues.active.10 <chr>, picklistValues.defaultValue.10 <chr>,
+#> #   picklistValues.label.10 <chr>, picklistValues.value.10 <chr>,
+#> #   picklistValues.active.11 <chr>, picklistValues.defaultValue.11 <chr>,
+#> #   picklistValues.label.11 <chr>, picklistValues.value.11 <chr>,
+#> #   picklistValues.active.12 <chr>, picklistValues.defaultValue.12 <chr>,
+#> #   picklistValues.label.12 <chr>, picklistValues.value.12 <chr>,
+#> #   picklistValues.active.13 <chr>, picklistValues.defaultValue.13 <chr>,
+#> #   picklistValues.label.13 <chr>, picklistValues.value.13 <chr>,
+#> #   picklistValues.active.14 <chr>, picklistValues.defaultValue.14 <chr>,
+#> #   picklistValues.label.14 <chr>, picklistValues.value.14 <chr>,
+#> #   picklistValues.active.15 <chr>, picklistValues.defaultValue.15 <chr>,
+#> #   picklistValues.label.15 <chr>, picklistValues.value.15 <chr>,
+#> #   picklistValues.active.16 <chr>, picklistValues.defaultValue.16 <chr>,
+#> #   picklistValues.label.16 <chr>, picklistValues.value.16 <chr>,
+#> #   picklistValues.active.17 <chr>, …

In the future more features will be migrated from RForcecom to make the transition as seamless as possible.

@@ -252,10 +324,16 @@

diff --git a/docs/articles/working-with-bulk-api.html b/docs/articles/working-with-bulk-api.html index a0a4dc4f..1ecaf33e 100644 --- a/docs/articles/working-with-bulk-api.html +++ b/docs/articles/working-with-bulk-api.html @@ -8,24 +8,23 @@ Working with Bulk API • salesforcer - - + + + + + gtag('config', 'UA-98603021-2'); +
@@ -91,7 +90,7 @@ @@ -111,7 +110,8 @@

Steven M. Mortimer

2018-03-12

- Source: vignettes/working-with-bulk-api.Rmd + Source: vignettes/working-with-bulk-api.Rmd +
@@ -134,19 +134,19 @@

#> # A tibble: 2 x 3 #> id success errors #> <chr> <lgl> <list> -#> 1 0036A00000Sp4eiQAB TRUE <list [0]> -#> 2 0036A00000Sp4ejQAB TRUE <list [0]> +#> 1 0036A00000cIQZ3QAO TRUE <list [0]> +#> 2 0036A00000cIQZ4QAO TRUE <list [0]> # Bulk bulk_created_records <- sf_create(new_contacts, object_name="Contact", api_type="Bulk 1.0") bulk_created_records #> # A tibble: 2 x 4 #> Id Success Created Error #> <chr> <chr> <chr> <lgl> -#> 1 0036A00000Sp4enQAB true true NA -#> 2 0036A00000Sp4eoQAB true true NA +#> 1 0036A00000cIQZ8QAO true true NA +#> 2 0036A00000cIQZ9QAO true true NA

There are some differences in the way each API returns response information; however, the end result is exactly the same for these two calls. Also, note that this package utilizes the Bulk 2.0 API for most bulk calls except for bulk queries since Salesforce has not yet implemented it in 2.0.

-

Here is a simple workflow of adding, querying, and deleting records using the Bulk API.

-
# just add api_type="Bulk" to most calls!
+

Here is a simple workflow of adding, querying, and deleting records using the Bulk 1.0 API.

+
# just add api_type="Bulk 1.0" or api_type="Bulk 2.0" to most calls!
 # create bulk
 object <- "Contact"
 n <- 2
@@ -157,8 +157,8 @@ 

#> # A tibble: 2 x 4 #> Id Success Created Error #> <chr> <chr> <chr> <lgl> -#> 1 0036A00000Sp4esQAB true true NA -#> 2 0036A00000Sp4etQAB true true NA +#> 1 0036A00000cIQZIQA4 true true NA +#> 2 0036A00000cIQZJQA4 true true NA # query bulk my_soql <- sprintf("SELECT Id, @@ -173,8 +173,8 @@

#> # A tibble: 2 x 3 #> Id FirstName LastName #> <chr> <chr> <chr> -#> 1 0036A00000Sp4esQAB Test Contact-Create-1 -#> 2 0036A00000Sp4etQAB Test Contact-Create-2 +#> 1 0036A00000cIQZIQA4 Test Contact-Create-1 +#> 2 0036A00000cIQZJQA4 Test Contact-Create-2 # delete bulk deleted_records <- sf_delete(queried_records$Id, object_name=object, api_type="Bulk 1.0") @@ -182,8 +182,8 @@

#> # A tibble: 2 x 4 #> Id Success Created Error #> <chr> <chr> <chr> <lgl> -#> 1 0036A00000Sp4esQAB true false NA -#> 2 0036A00000Sp4etQAB true false NA

+#> 1 0036A00000cIQZIQA4 true false NA +#> 2 0036A00000cIQZJQA4 true false NA
@@ -208,10 +208,16 @@

diff --git a/docs/authors.html b/docs/authors.html index acd37a62..2a779f2d 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -21,16 +21,28 @@ + + + - + + + + + + + + + + @@ -40,23 +52,16 @@ - + + - - - - - @@ -126,7 +131,7 @@ @@ -184,10 +189,16 @@

Authors

diff --git a/docs/docsearch.css b/docs/docsearch.css new file mode 100644 index 00000000..e5f1fe1d --- /dev/null +++ b/docs/docsearch.css @@ -0,0 +1,148 @@ +/* Docsearch -------------------------------------------------------------- */ +/* + Source: https://github.com/algolia/docsearch/ + License: MIT +*/ + +.algolia-autocomplete { + display: block; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1 +} + +.algolia-autocomplete .ds-dropdown-menu { + width: 100%; + min-width: none; + max-width: none; + padding: .75rem 0; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .1); + box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175); +} + +@media (min-width:768px) { + .algolia-autocomplete .ds-dropdown-menu { + width: 175% + } +} + +.algolia-autocomplete .ds-dropdown-menu::before { + display: none +} + +.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] { + padding: 0; + background-color: rgb(255,255,255); + border: 0; + max-height: 80vh; +} + +.algolia-autocomplete .ds-dropdown-menu .ds-suggestions { + margin-top: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion { + padding: 0; + overflow: visible +} + +.algolia-autocomplete .algolia-docsearch-suggestion--category-header { + padding: .125rem 1rem; + margin-top: 0; + font-size: 1.3em; + font-weight: 500; + color: #00008B; + border-bottom: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--wrapper { + float: none; + padding-top: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column { + float: none; + width: auto; + padding: 0; + text-align: left +} + +.algolia-autocomplete .algolia-docsearch-suggestion--content { + float: none; + width: auto; + padding: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--content::before { + display: none +} + +.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header { + padding-top: .75rem; + margin-top: .75rem; + border-top: 1px solid rgba(0, 0, 0, .1) +} + +.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column { + display: block; + padding: .1rem 1rem; + margin-bottom: 0.1; + font-size: 1.0em; + font-weight: 400 + /* display: none */ +} + +.algolia-autocomplete .algolia-docsearch-suggestion--title { + display: block; + padding: .25rem 1rem; + margin-bottom: 0; + font-size: 0.9em; + font-weight: 400 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--text { + padding: 0 1rem .5rem; + margin-top: -.25rem; + font-size: 0.8em; + font-weight: 400; + line-height: 1.25 +} + +.algolia-autocomplete .algolia-docsearch-footer { + width: 110px; + height: 20px; + z-index: 3; + margin-top: 10.66667px; + float: right; + font-size: 0; + line-height: 0; +} + +.algolia-autocomplete .algolia-docsearch-footer--logo { + background-image: url("data:image/svg+xml;utf8,"); + background-repeat: no-repeat; + background-position: 50%; + background-size: 100%; + overflow: hidden; + text-indent: -9000px; + width: 100%; + height: 100%; + display: block; + transform: translate(-8px); +} + +.algolia-autocomplete .algolia-docsearch-suggestion--highlight { + color: #FF8C00; + background: rgba(232, 189, 54, 0.1) +} + + +.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight { + box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5) +} + +.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { + background-color: rgba(192, 192, 192, .15) +} diff --git a/docs/docsearch.js b/docs/docsearch.js new file mode 100644 index 00000000..b35504cd --- /dev/null +++ b/docs/docsearch.js @@ -0,0 +1,85 @@ +$(function() { + + // register a handler to move the focus to the search bar + // upon pressing shift + "/" (i.e. "?") + $(document).on('keydown', function(e) { + if (e.shiftKey && e.keyCode == 191) { + e.preventDefault(); + $("#search-input").focus(); + } + }); + + $(document).ready(function() { + // do keyword highlighting + /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ + var mark = function() { + + var referrer = document.URL ; + var paramKey = "q" ; + + if (referrer.indexOf("?") !== -1) { + var qs = referrer.substr(referrer.indexOf('?') + 1); + var qs_noanchor = qs.split('#')[0]; + var qsa = qs_noanchor.split('&'); + var keyword = ""; + + for (var i = 0; i < qsa.length; i++) { + var currentParam = qsa[i].split('='); + + if (currentParam.length !== 2) { + continue; + } + + if (currentParam[0] == paramKey) { + keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); + } + } + + if (keyword !== "") { + $(".contents").unmark({ + done: function() { + $(".contents").mark(keyword); + } + }); + } + } + }; + + mark(); + }); +}); + +/* Search term highlighting ------------------------------*/ + +function matchedWords(hit) { + var words = []; + + var hierarchy = hit._highlightResult.hierarchy; + // loop to fetch from lvl0, lvl1, etc. + for (var idx in hierarchy) { + words = words.concat(hierarchy[idx].matchedWords); + } + + var content = hit._highlightResult.content; + if (content) { + words = words.concat(content.matchedWords); + } + + // return unique words + var words_uniq = [...new Set(words)]; + return words_uniq; +} + +function updateHitURL(hit) { + + var words = matchedWords(hit); + var url = ""; + + if (hit.anchor) { + url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; + } else { + url = hit.url + '?q=' + escape(words.join(" ")); + } + + return url; +} diff --git a/docs/docsearch.json b/docs/docsearch.json index 790a2142..aeb7d456 100644 --- a/docs/docsearch.json +++ b/docs/docsearch.json @@ -1,14 +1,94 @@ { "index_name": "salesforcer", - "start_urls": "https://stevenmmortimer.github.io/salesforcer", - "sitemap_urls": "https://stevenmmortimer.github.io/salesforcer/sitemap.xml", + "start_urls": [ + { + "url": "https://stevenmmortimer.github.io/salesforcer/index.html", + "selectors_key": "homepage", + "tags": [ + "homepage" + ] + }, + { + "url": "https://stevenmmortimer.github.io/salesforcer/reference", + "selectors_key": "reference", + "tags": [ + "reference" + ] + }, + { + "url": "https://stevenmmortimer.github.io/salesforcer/articles", + "selectors_key": "articles", + "tags": [ + "articles" + ] + } + ], + "stop_urls": [ + "/reference/$", + "/reference/index.html", + "/articles/$", + "/articles/index.html" + ], + "sitemap_urls": [ + "https://stevenmmortimer.github.io/salesforcer/sitemap.xml" + ], "selectors": { - "lvl0": ".contents h1", - "lvl1": ".contents h2", - "lvl2": ".contents h3, .contents th, .contents dt", - "lvl3": ".contents h4", - "lvl4": ".contents h5", - "text": ".contents p, .contents li, .usage, .template-article .contents .pre" + "homepage": { + "lvl0": { + "selector": ".contents h1", + "default_value": "salesforcer Home page" + }, + "lvl1": { + "selector": ".contents h2" + }, + "lvl2": { + "selector": ".contents h3", + "default_value": "Context" + }, + "lvl3": ".ref-arguments td, .ref-description", + "text": ".contents p, .contents li, .contents .pre" + }, + "reference": { + "lvl0": { + "selector": ".contents h1" + }, + "lvl1": { + "selector": ".contents .name", + "default_value": "Argument" + }, + "lvl2": { + "selector": ".ref-arguments th", + "default_value": "Description" + }, + "lvl3": ".ref-arguments td, .ref-description", + "text": ".contents p, .contents li" + }, + "articles": { + "lvl0": { + "selector": ".contents h1" + }, + "lvl1": { + "selector": ".contents .name" + }, + "lvl2": { + "selector": ".contents h2, .contents h3", + "default_value": "Context" + }, + "text": ".contents p, .contents li, .tempate-article .contents .pre" + } }, - "selectors_exclude": ".dont-index" + "selectors_exclude": [ + ".dont-index" + ], + "min_indexed_level": 2, + "custom_settings": { + "separatorsToIndex": "_", + "attributesToRetrieve": [ + "hierarchy", + "content", + "anchor", + "url", + "url_without_anchor" + ] + } } diff --git a/docs/index.html b/docs/index.html index 105d4a34..12522f48 100644 --- a/docs/index.html +++ b/docs/index.html @@ -8,8 +8,10 @@ An Implementation of 'Salesforce' APIs Using Tidy Principles • salesforcer - - + + + + + gtag('config', 'UA-98603021-2'); +
@@ -97,7 +96,7 @@ @@ -133,7 +132,7 @@
  • Utilize backwards compatible functions for the RForcecom package, such as:
  • @@ -216,8 +215,8 @@

    #> # A tibble: 2 x 2 #> id success #> <chr> <chr> -#> 1 0036A00000Sp4duQAB true -#> 2 0036A00000Sp4dvQAB true

    +#> 1 0036A00000cIQXRQA4 true +#> 2 0036A00000cIQXSQA4 true

    @@ -236,8 +235,8 @@

    #> # A tibble: 2 x 4 #> Id Account FirstName LastName #> * <chr> <lgl> <chr> <chr> -#> 1 0036A00000Sp4duQAB NA Test Contact-Create-1 -#> 2 0036A00000Sp4dvQAB NA Test Contact-Create-2

    +#> 1 0036A00000cIQXRQA4 NA Test Contact-Create-1 +#> 2 0036A00000cIQXSQA4 NA Test Contact-Create-2

    @@ -253,8 +252,8 @@

    #> # A tibble: 2 x 2 #> id success #> <chr> <chr> -#> 1 0036A00000Sp4duQAB true -#> 2 0036A00000Sp4dvQAB true

    +#> 1 0036A00000cIQXRQA4 true +#> 2 0036A00000cIQXSQA4 true

    @@ -318,18 +317,36 @@

    #> #> $fields$type #> [1] "Picklist"

    -

    The data is returned as a list because object definitions are highly nested representations. You may notice that we are missing some really specific details, such as, the picklist values of a field with type “Picklist”. You can get that information using the function sf_describe_object() function which is actually part of the REST and SOAP APIs. It is recommended that you try out the various metadata functions sf_read_metadata(), sf_list_metadata(), sf_describe_metadata(), and sf_describe_objects() in order to see which information best suits your use case.

    +

    The data is returned as a list because object definitions are highly nested representations. You may notice that we are missing some really specific details, such as, the picklist values of a field with type “Picklist”. You can get that information using the sf_describe_object_fields() or sf_describe_objects() functions which are based on calls from REST and SOAP APIs. Here is an example using sf_describe_object_fields() where we get a tbl_df with one row for each field on the Account object:

    +
    acct_fields <- sf_describe_object_fields('Account')
    +acct_fields %>% select(name, label, length, soapType, type)
    +#> # A tibble: 67 x 5
    +#>    name              label                   length soapType    type     
    +#>    <chr>             <chr>                    <dbl> <chr>       <chr>    
    +#>  1 Id                Account ID                 18. tns:ID      id       
    +#>  2 IsDeleted         Deleted                     0. xsd:boolean boolean  
    +#>  3 MasterRecordId    Master Record ID           18. tns:ID      reference
    +#>  4 Name              Account Name              255. xsd:string  string   
    +#>  5 Type              Account Type               40. xsd:string  picklist 
    +#>  6 ParentId          Parent Account ID          18. tns:ID      reference
    +#>  7 BillingStreet     Billing Street            255. xsd:string  textarea 
    +#>  8 BillingCity       Billing City               40. xsd:string  string   
    +#>  9 BillingState      Billing State/Province     80. xsd:string  string   
    +#> 10 BillingPostalCode Billing Zip/Postal Code    20. xsd:string  string   
    +#> # ... with 57 more rows
    +

    If you prefer to be more precise about collecting and formatting the field data you can work directly with the nested lists that the APIs return. In this example we look at the picklist values of fields on the Account object.

    describe_obj_result <- sf_describe_objects(object_names=c('Account', 'Contact'))
    +# confirm that the Account object is queryable
     describe_obj_result[[1]][c('label', 'queryable')]
     #> $label
     #> [1] "Account"
     #> 
     #> $queryable
     #> [1] "true"
    -# show the first two returned fields of the Account object
    -the_type_field <- describe_obj_result[[1]][[58]]
    -the_type_field$name
    -#> [1] "Type"
    +# show the different picklist values for the Account Type field
    +the_type_field <- describe_obj_result[[1]][[59]]
    +the_type_field$label
    +#> [1] "Account Type"
     map_df(the_type_field[which(names(the_type_field) == "picklistValues")], as_tibble)
     #> # A tibble: 7 x 4
     #>   active defaultValue label                      value                    
    @@ -341,6 +358,7 @@ 

    #> 5 true false Installation Partner Installation Partner #> 6 true false Technology Partner Technology Partner #> 7 true false Other Other

    +

    It is recommended that you try out the various metadata functions sf_read_metadata(), sf_list_metadata(), sf_describe_metadata(), and sf_describe_objects() in order to see which information best suits your use case.

    Where the Metadata API really shines is when it comes to CRUD operations on metadata. In this example we will create an object, add fields to it, then delete that object.

    # create an object
     base_obj_name <- "Custom_Account1"
    @@ -451,10 +469,16 @@ 

    Dev status

    diff --git a/docs/news/index.html b/docs/news/index.html index 39317c6f..67cba3f6 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -21,16 +21,28 @@ + + + - + + + + + + + + + + @@ -40,23 +52,16 @@ - + + - - - - - @@ -126,7 +131,7 @@ @@ -151,14 +156,17 @@

    Features

    Bug Fixes


    @@ -301,10 +309,16 @@

    Contents

    diff --git a/docs/pkgdown.css b/docs/pkgdown.css index fcd97bb2..6ca2f37a 100644 --- a/docs/pkgdown.css +++ b/docs/pkgdown.css @@ -217,3 +217,16 @@ a.sourceLine:hover { .hasCopyButton:hover button.btn-copy-ex { visibility: visible; } + +/* mark.js ----------------------------*/ + +mark { + background-color: rgba(255, 255, 51, 0.5); + border-bottom: 2px solid rgba(255, 153, 51, 0.3); + padding: 1px; +} + +/* vertical spacing after htmlwidgets */ +.html-widget { + margin-bottom: 10px; +} diff --git a/docs/pkgdown.js b/docs/pkgdown.js index 362b060f..de9bd724 100644 --- a/docs/pkgdown.js +++ b/docs/pkgdown.js @@ -1,101 +1,110 @@ -$(function() { - - $("#sidebar") - .stick_in_parent({offset_top: 40}) - .on('sticky_kit:bottom', function(e) { - $(this).parent().css('position', 'static'); - }) - .on('sticky_kit:unbottom', function(e) { - $(this).parent().css('position', 'relative'); +/* http://gregfranko.com/blog/jquery-best-practices/ */ +(function($) { + $(function() { + + $("#sidebar") + .stick_in_parent({offset_top: 40}) + .on('sticky_kit:bottom', function(e) { + $(this).parent().css('position', 'static'); + }) + .on('sticky_kit:unbottom', function(e) { + $(this).parent().css('position', 'relative'); + }); + + $('body').scrollspy({ + target: '#sidebar', + offset: 60 }); - $('body').scrollspy({ - target: '#sidebar', - offset: 60 - }); - - $('[data-toggle="tooltip"]').tooltip(); - - var cur_path = paths(location.pathname); - $("#navbar ul li a").each(function(index, value) { - if (value.text == "Home") - return; - if (value.getAttribute("href") === "#") - return; + $('[data-toggle="tooltip"]').tooltip(); + + var cur_path = paths(location.pathname); + var links = $("#navbar ul li a"); + var max_length = -1; + var pos = -1; + for (var i = 0; i < links.length; i++) { + if (links[i].getAttribute("href") === "#") + continue; + var path = paths(links[i].pathname); + + var length = prefix_length(cur_path, path); + if (length > max_length) { + max_length = length; + pos = i; + } + } - var path = paths(value.pathname); - if (is_prefix(cur_path, path)) { - // Add class to parent
  • , and enclosing
  • if in dropdown - var menu_anchor = $(value); + // Add class to parent
  • , and enclosing
  • if in dropdown + if (pos >= 0) { + var menu_anchor = $(links[pos]); menu_anchor.parent().addClass("active"); menu_anchor.closest("li.dropdown").addClass("active"); } }); -}); -function paths(pathname) { - var pieces = pathname.split("/"); - pieces.shift(); // always starts with / + function paths(pathname) { + var pieces = pathname.split("/"); + pieces.shift(); // always starts with / - var end = pieces[pieces.length - 1]; - if (end === "index.html" || end === "") - pieces.pop(); - return(pieces); -} + var end = pieces[pieces.length - 1]; + if (end === "index.html" || end === "") + pieces.pop(); + return(pieces); + } -function is_prefix(needle, haystack) { - if (needle.length > haystack.lengh) - return(false); + function prefix_length(needle, haystack) { + if (needle.length > haystack.length) + return(0); - // Special case for length-0 haystack, since for loop won't run - if (haystack.length === 0) { - return(needle.length === 0); - } + // Special case for length-0 haystack, since for loop won't run + if (haystack.length === 0) { + return(needle.length === 0 ? 1 : 0); + } - for (var i = 0; i < haystack.length; i++) { - if (needle[i] != haystack[i]) - return(false); - } + for (var i = 0; i < haystack.length; i++) { + if (needle[i] != haystack[i]) + return(i); + } - return(true); -} + return(haystack.length); + } -/* Clipboard --------------------------*/ + /* Clipboard --------------------------*/ -function changeTooltipMessage(element, msg) { - var tooltipOriginalTitle=element.getAttribute('data-original-title'); - element.setAttribute('data-original-title', msg); - $(element).tooltip('show'); - element.setAttribute('data-original-title', tooltipOriginalTitle); -} + function changeTooltipMessage(element, msg) { + var tooltipOriginalTitle=element.getAttribute('data-original-title'); + element.setAttribute('data-original-title', msg); + $(element).tooltip('show'); + element.setAttribute('data-original-title', tooltipOriginalTitle); + } -if(Clipboard.isSupported()) { - $(document).ready(function() { - var copyButton = ""; + if(Clipboard.isSupported()) { + $(document).ready(function() { + var copyButton = ""; - $(".examples").addClass("hasCopyButton"); + $(".examples, div.sourceCode").addClass("hasCopyButton"); - // Insert copy buttons: - $(copyButton).prependTo(".hasCopyButton"); + // Insert copy buttons: + $(copyButton).prependTo(".hasCopyButton"); - // Initialize tooltips: - $('.btn-copy-ex').tooltip({container: 'body'}); + // Initialize tooltips: + $('.btn-copy-ex').tooltip({container: 'body'}); - // Initialize clipboard: - var clipboardBtnCopies = new Clipboard('[data-clipboard-copy]', { - text: function(trigger) { - return trigger.parentNode.textContent; - } - }); + // Initialize clipboard: + var clipboardBtnCopies = new Clipboard('[data-clipboard-copy]', { + text: function(trigger) { + return trigger.parentNode.textContent; + } + }); - clipboardBtnCopies.on('success', function(e) { - changeTooltipMessage(e.trigger, 'Copied!'); - e.clearSelection(); - }); + clipboardBtnCopies.on('success', function(e) { + changeTooltipMessage(e.trigger, 'Copied!'); + e.clearSelection(); + }); - clipboardBtnCopies.on('error', function() { - changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); + clipboardBtnCopies.on('error', function() { + changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); + }); }); - }); -} - + } +})(window.jQuery || window.$) diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 60ec576d..f71b8530 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -1,6 +1,6 @@ pandoc: 1.19.2.1 -pkgdown: 0.1.0.9000 -pkgdown_sha: 21b9e469e4bd7f443bf0bbf194d47760c174463e +pkgdown: 1.1.0 +pkgdown_sha: ~ articles: getting-started: getting-started.html transitioning-from-RForcecom: transitioning-from-RForcecom.html diff --git a/docs/reference/VERB_n.html b/docs/reference/VERB_n.html index d0d1667c..39a4a2db 100644 --- a/docs/reference/VERB_n.html +++ b/docs/reference/VERB_n.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Generic implementation of HTTP methods with retries and authentication

    +
    VERB_n(VERB, n = 5)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/build_metadata_xml_from_list.html b/docs/reference/build_metadata_xml_from_list.html index 68c5c77f..0bbbfdff 100644 --- a/docs/reference/build_metadata_xml_from_list.html +++ b/docs/reference/build_metadata_xml_from_list.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    This function converts a list of metadata to XML

    +
    build_metadata_xml_from_list(input_data, metatype = NULL, root_name = NULL,
       ns = c(character(0)), root = NULL)
    @@ -213,10 +221,16 @@

    Contents

    diff --git a/docs/reference/build_soap_xml_from_list.html b/docs/reference/build_soap_xml_from_list.html index 949cd567..157b83b3 100644 --- a/docs/reference/build_soap_xml_from_list.html +++ b/docs/reference/build_soap_xml_from_list.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Parse data into XML format

    +
    build_soap_xml_from_list(input_data, operation = c("create", "retrieve",
       "update", "upsert", "delete", "search", "query", "queryMore",
    @@ -239,10 +247,16 @@ 

    Contents

    diff --git a/docs/reference/catch_errors.html b/docs/reference/catch_errors.html index 92434390..612a127b 100644 --- a/docs/reference/catch_errors.html +++ b/docs/reference/catch_errors.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Function to catch and print HTTP errors

    +
    catch_errors(x)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/get_os.html b/docs/reference/get_os.html index fc5acc48..792e662f 100644 --- a/docs/reference/get_os.html +++ b/docs/reference/get_os.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function determines whether the system running the R code is Windows, Mac, or Linux

    +
    get_os()
    @@ -205,10 +213,16 @@

    Contents

    diff --git a/docs/reference/index.html b/docs/reference/index.html index e852fefd..82b25950 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -21,16 +21,28 @@ + + + - + + + + + + + + + + @@ -40,23 +52,16 @@ - + + - - - - - @@ -126,7 +131,7 @@ @@ -146,6 +151,7 @@

    Reference

    + @@ -158,7 +164,7 @@

    sf_auth()

    @@ -172,13 +178,13 @@

    sf_query()

    - + @@ -192,31 +198,31 @@

    sf_create()

    - + - + - + - + @@ -230,65 +236,71 @@

    sf_create_metadata()

    - + - + - + - + - + - + - + - + - + + + + + @@ -298,42 +310,116 @@

    sf_user_info()

    - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Perform SOQL Query

    sf_search()

    Create Records

    sf_retrieve()

    Retrieve Records By Id

    sf_update()

    Update Records

    sf_upsert()

    Upsert Records

    sf_delete()

    Create Object or Field Metadata in Salesforce

    sf_update_metadata()

    Update Object or Field Metadata in Salesforce

    sf_upsert_metadata()

    Upsert Object or Field Metadata in Salesforce

    sf_delete_metadata()

    Delete Object or Field Metadata in Salesforce

    sf_rename_metadata()

    Rename Metadata Elements in Salesforce

    sf_read_metadata()

    Read Object or Field Metadata from Salesforce

    sf_list_metadata()

    List All Objects of a Certain Metadata Type in Salesforce

    sf_retrieve_metadata()

    Make A Request to Retrieve the Metadata

    sf_describe_metadata()

    Describe the Metadata in an Organization

    sf_describe_objects()

    SObject Basic Information

    +

    sf_describe_object_fields()

    +

    Describe Object Fields

    Return Current User Info

    sf_server_timestamp()

    Salesforce Server Timestamp

    sf_list_rest_api_versions()

    List REST API Versions

    sf_list_resources()

    List the Resources for an API

    sf_list_api_limits()

    List the Limits for an API

    sf_list_objects()

    List Organization Objects and their Metadata

    +

    Backward Compatibility with RForcecom

    +

    Functions that mirror RForcecom to ease code transitions between salesforcer and RForcecom

    +
    +

    rforcecom.login()

    +

    salesforcer's backwards compatible version of rforcecom.login

    +

    rforcecom.getServerTimestamp()

    +

    salesforcer's backwards compatible version of rforcecom.getServerTimestamp

    +

    rforcecom.getObjectDescription()

    +

    salesforcer's backwards compatible version of rforcecom.getObjectDescription

    +

    rforcecom.create()

    +

    salesforcer's backwards compatible version of rforcecom.create

    +

    rforcecom.update()

    +

    salesforcer's backwards compatible version of rforcecom.update

    +

    rforcecom.upsert()

    +

    salesforcer's backwards compatible version of rforcecom.upsert

    +

    rforcecom.delete()

    +

    salesforcer's backwards compatible version of rforcecom.delete

    +

    rforcecom.retrieve()

    +

    salesforcer's backwards compatible version of rforcecom.retrieve

    +

    rforcecom.search()

    +

    salesforcer's backwards compatible version of rforcecom.search

    +

    rforcecom.query()

    +

    salesforcer's backwards compatible version of rforcecom.query

    +

    rforcecom.bulkQuery()

    +

    salesforcer's backwards compatible version of rforcecom.bulkQuery

    @@ -346,6 +432,7 @@

    Contents

  • CRUD Functions
  • Metadata Functions
  • Salesforce Org Utility Functions
  • +
  • Backward Compatibility with RForcecom
  • @@ -367,10 +454,16 @@

    Contents

    diff --git a/docs/reference/is_legit_token.html b/docs/reference/is_legit_token.html index 56711bbf..d2b2918c 100644 --- a/docs/reference/is_legit_token.html +++ b/docs/reference/is_legit_token.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Check that token appears to be legitimate

    +
    is_legit_token(x, verbose = FALSE)
    @@ -179,10 +187,16 @@

    Contents

    diff --git a/docs/reference/make_base_metadata_url.html b/docs/reference/make_base_metadata_url.html index 724305d0..34b57322 100644 --- a/docs/reference/make_base_metadata_url.html +++ b/docs/reference/make_base_metadata_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Base Metadata API URL Generator

    +
    make_base_metadata_url()
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_base_rest_url.html b/docs/reference/make_base_rest_url.html index 66d35705..08d8fbc5 100644 --- a/docs/reference/make_base_rest_url.html +++ b/docs/reference/make_base_rest_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Base REST API URL Generator

    +
    make_base_rest_url()
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_base_soap_url.html b/docs/reference/make_base_soap_url.html index d99bdca4..e905e965 100644 --- a/docs/reference/make_base_soap_url.html +++ b/docs/reference/make_base_soap_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Base SOAP API URL Generator

    +
    make_base_soap_url()
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_bulk_batch_details_url.html b/docs/reference/make_bulk_batch_details_url.html index c76439e9..37b97146 100644 --- a/docs/reference/make_bulk_batch_details_url.html +++ b/docs/reference/make_bulk_batch_details_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Bulk Batch Details URL Generator

    +
    make_bulk_batch_details_url(job_id, batch_id, api_type = c("Bulk 1.0"))
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_bulk_batch_status_url.html b/docs/reference/make_bulk_batch_status_url.html index 23e6dfd6..c4114f7e 100644 --- a/docs/reference/make_bulk_batch_status_url.html +++ b/docs/reference/make_bulk_batch_status_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Bulk Batch Status URL Generator

    +
    make_bulk_batch_status_url(job_id, batch_id, api_type = c("Bulk 1.0"))
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_bulk_batches_url.html b/docs/reference/make_bulk_batches_url.html index b61ab076..e21ea33e 100644 --- a/docs/reference/make_bulk_batches_url.html +++ b/docs/reference/make_bulk_batches_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Bulk Batches URL Generator

    +
    make_bulk_batches_url(job_id, api_type = c("Bulk 1.0", "Bulk 2.0"))
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_bulk_create_job_url.html b/docs/reference/make_bulk_create_job_url.html index bc54e3bd..31c28599 100644 --- a/docs/reference/make_bulk_create_job_url.html +++ b/docs/reference/make_bulk_create_job_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Bulk Create Job URL Generator

    +
    make_bulk_create_job_url(api_type = c("Bulk 1.0", "Bulk 2.0"))
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_bulk_delete_job_url.html b/docs/reference/make_bulk_delete_job_url.html index cc697d3b..6cf9a221 100644 --- a/docs/reference/make_bulk_delete_job_url.html +++ b/docs/reference/make_bulk_delete_job_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Bulk Delete Job Generic URL Generator

    +
    make_bulk_delete_job_url(job_id, api_type = c("Bulk 2.0"))
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_bulk_end_job_generic_url.html b/docs/reference/make_bulk_end_job_generic_url.html index dc6c46e0..968a6c97 100644 --- a/docs/reference/make_bulk_end_job_generic_url.html +++ b/docs/reference/make_bulk_end_job_generic_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Bulk End Job Generic URL Generator

    +
    make_bulk_end_job_generic_url(job_id, api_type = c("Bulk 1.0", "Bulk 2.0"))
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_bulk_get_job_url.html b/docs/reference/make_bulk_get_job_url.html index 173aefdb..e54137fe 100644 --- a/docs/reference/make_bulk_get_job_url.html +++ b/docs/reference/make_bulk_get_job_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Bulk Delete Job Generic URL Generator

    +
    make_bulk_get_job_url(job_id, api_type = c("Bulk 1.0", "Bulk 2.0"))
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_bulk_job_records_url.html b/docs/reference/make_bulk_job_records_url.html index 83305f4c..7249cc82 100644 --- a/docs/reference/make_bulk_job_records_url.html +++ b/docs/reference/make_bulk_job_records_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Bulk Job Records URL Generator

    +
    make_bulk_job_records_url(job_id, record_type = c("successfulResults",
       "failedResults", "unprocessedRecords"), api_type = c("Bulk 2.0"))
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/make_bulk_query_result_url.html b/docs/reference/make_bulk_query_result_url.html index a619be4c..b50c5bcd 100644 --- a/docs/reference/make_bulk_query_result_url.html +++ b/docs/reference/make_bulk_query_result_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Bulk Query Result URL Generator

    +
    make_bulk_query_result_url(job_id, batch_id, result_id,
       api_type = c("Bulk 1.0"))
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/make_bulk_query_url.html b/docs/reference/make_bulk_query_url.html index d91b9c22..c1a4c7b5 100644 --- a/docs/reference/make_bulk_query_url.html +++ b/docs/reference/make_bulk_query_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Bulk Query URL Generator

    +
    make_bulk_query_url(job_id, api_type = c("Bulk 1.0"))
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_chatter_users_url.html b/docs/reference/make_chatter_users_url.html index ab896a49..1e2b163c 100644 --- a/docs/reference/make_chatter_users_url.html +++ b/docs/reference/make_chatter_users_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Chatter Users URL Generator

    +
    make_chatter_users_url()
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_composite_batch_url.html b/docs/reference/make_composite_batch_url.html index 97e65f0a..79220d4a 100644 --- a/docs/reference/make_composite_batch_url.html +++ b/docs/reference/make_composite_batch_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Composite Batch URL Generator

    +
    make_composite_batch_url()
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_composite_url.html b/docs/reference/make_composite_url.html index 1f85488f..81e1f4eb 100644 --- a/docs/reference/make_composite_url.html +++ b/docs/reference/make_composite_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Composite URL Generator

    +
    make_composite_url()
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_describe_objects_url.html b/docs/reference/make_describe_objects_url.html index 8777c4ec..78b348e0 100644 --- a/docs/reference/make_describe_objects_url.html +++ b/docs/reference/make_describe_objects_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Describe Objects URL Generator

    +
    make_describe_objects_url(object)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_login_url.html b/docs/reference/make_login_url.html index 03699e84..1c580e82 100644 --- a/docs/reference/make_login_url.html +++ b/docs/reference/make_login_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Login URL Generator

    +
    make_login_url(login_url)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_parameterized_search_url.html b/docs/reference/make_parameterized_search_url.html index fb24feba..42e04298 100644 --- a/docs/reference/make_parameterized_search_url.html +++ b/docs/reference/make_parameterized_search_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    Parameterized Search URL Generator

    Parameterized Search URL Generator

    +
    make_parameterized_search_url(search_string = NULL, params = NULL)
     
    @@ -190,10 +198,16 @@ 

    Contents

    diff --git a/docs/reference/make_query_url.html b/docs/reference/make_query_url.html index cdf6bb76..89a82bf9 100644 --- a/docs/reference/make_query_url.html +++ b/docs/reference/make_query_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Query URL Generator

    +
    make_query_url(soql, queryall, next_records_url)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_search_url.html b/docs/reference/make_search_url.html index e82345c8..294d0eca 100644 --- a/docs/reference/make_search_url.html +++ b/docs/reference/make_search_url.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Search URL Generator

    +
    make_search_url(search_string)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/make_soap_xml_skeleton.html b/docs/reference/make_soap_xml_skeleton.html index 2b3c31dc..dea26885 100644 --- a/docs/reference/make_soap_xml_skeleton.html +++ b/docs/reference/make_soap_xml_skeleton.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Create XML in preparate for sending to the SOAP API

    +
    make_soap_xml_skeleton(soap_headers = list(), metadata_ns = FALSE)
    @@ -224,10 +232,16 @@

    Contents

    diff --git a/docs/reference/metadata_type_validator.html b/docs/reference/metadata_type_validator.html index e6cc8aab..3c6638e1 100644 --- a/docs/reference/metadata_type_validator.html +++ b/docs/reference/metadata_type_validator.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    A function to create a variety of objects that are part of the Metadata API service Below is a list of objects and their required components to be created with this function:

    +
    metadata_type_validator(obj_type, obj_data)
    @@ -9192,10 +9200,16 @@

    Contents

    diff --git a/docs/reference/parameterized_search_control.html b/docs/reference/parameterized_search_control.html index 2ed64279..b3491f6c 100644 --- a/docs/reference/parameterized_search_control.html +++ b/docs/reference/parameterized_search_control.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    A function for allowing finer grained control over how a search is performed when not using SOSL

    +
    parameterized_search_control(objects = NULL, fields_scope = c("ALL", "NAME",
       "EMAIL", "PHONE", "SIDEBAR"), fields = NULL, overall_limit = 2000,
    @@ -239,10 +247,16 @@ 

    Contents

    diff --git a/docs/reference/rDELETE.html b/docs/reference/rDELETE.html index 14778e7f..3a56484e 100644 --- a/docs/reference/rDELETE.html +++ b/docs/reference/rDELETE.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    DELETEs with retries and authentication

    +
    rDELETE(url, headers = character(0), ...)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/rGET.html b/docs/reference/rGET.html index e801e44d..ae52731b 100644 --- a/docs/reference/rGET.html +++ b/docs/reference/rGET.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    GETs with retries and authentication

    +
    rGET(url, headers = character(0), ...)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/rPATCH.html b/docs/reference/rPATCH.html index 1c4ba5ae..b42a7067 100644 --- a/docs/reference/rPATCH.html +++ b/docs/reference/rPATCH.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    PATCHs with retries and authentication

    +
    rPATCH(url, headers = character(0), ...)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/rPOST.html b/docs/reference/rPOST.html index af3e9563..18bbfda6 100644 --- a/docs/reference/rPOST.html +++ b/docs/reference/rPOST.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    POSTs with retries and authentication

    +
    rPOST(url, headers = character(0), ...)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/rPUT.html b/docs/reference/rPUT.html index 920eaa42..fab2b623 100644 --- a/docs/reference/rPUT.html +++ b/docs/reference/rPUT.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    PUTs with retries and authentication

    +
    rPUT(url, headers = character(0), ...)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/rforcecom.bulkAction.html b/docs/reference/rforcecom.bulkAction.html index 1a0c1c93..205d15da 100644 --- a/docs/reference/rforcecom.bulkAction.html +++ b/docs/reference/rforcecom.bulkAction.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    This function is a convenience wrapper for submitting bulk API jobs

    +
    rforcecom.bulkAction(session, operation = c("insert", "delete", "upsert",
       "update", "hardDelete"), data, object, external_id_fieldname = NULL,
    @@ -250,10 +258,16 @@ 

    Contents

    diff --git a/docs/reference/rforcecom.bulkQuery.html b/docs/reference/rforcecom.bulkQuery.html index ce216b2d..a1602d7f 100644 --- a/docs/reference/rforcecom.bulkQuery.html +++ b/docs/reference/rforcecom.bulkQuery.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    salesforcer's backwards compatible version of rforcecom.bulkQuery

    +
    rforcecom.bulkQuery(session, soqlQuery, object, interval_seconds = 5,
       max_attempts = 100, verbose = FALSE)
    @@ -221,10 +229,16 @@

    Contents

    diff --git a/docs/reference/rforcecom.create.html b/docs/reference/rforcecom.create.html index f6439913..7900f7b0 100644 --- a/docs/reference/rforcecom.create.html +++ b/docs/reference/rforcecom.create.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    salesforcer's backwards compatible version of rforcecom.create

    +
    rforcecom.create(session, objectName, fields)
    @@ -208,10 +216,16 @@

    Contents

    diff --git a/docs/reference/rforcecom.delete.html b/docs/reference/rforcecom.delete.html index 4674ebd9..fc8eb249 100644 --- a/docs/reference/rforcecom.delete.html +++ b/docs/reference/rforcecom.delete.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    salesforcer's backwards compatible version of rforcecom.delete

    +
    rforcecom.delete(session, objectName, id)
    @@ -208,10 +216,16 @@

    Contents

    diff --git a/docs/reference/rforcecom.getObjectDescription.html b/docs/reference/rforcecom.getObjectDescription.html new file mode 100644 index 00000000..0ed48014 --- /dev/null +++ b/docs/reference/rforcecom.getObjectDescription.html @@ -0,0 +1,237 @@ + + + + + + + + +salesforcer's backwards compatible version of rforcecom.getObjectDescription — rforcecom.getObjectDescription • salesforcer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + + +
    + +

    salesforcer's backwards compatible version of rforcecom.getObjectDescription

    + +
    + +
    rforcecom.getObjectDescription(session, objectName)
    + +

    Arguments

    + + + + + + + + + + +
    session

    list; a list containing "sessionID", "instanceURL", and " +apiVersion" as returned by RForcecom::rforcecom.login(). This argument is +ignored in all backward compatible calls because the authorization credentials +are stored in an environment internal to the salesforcer package, so it is no longer +necessary to pass the session in each function call.

    objectName

    character; the name of the Salesforce object that the +function is operating against (e.g. "Account", "Contact", "CustomObject__c")

    + +

    Value

    + +

    Object descriptions

    + +

    Note

    + +

    This function returns a data.frame with one row per field for an object.

    + + +
    + +
    + +
    + + +
    +

    Site built with pkgdown.

    +
    + +
    +
    + + + + + + + + + diff --git a/docs/reference/rforcecom.getServerTimestamp.html b/docs/reference/rforcecom.getServerTimestamp.html index fc19b734..1b115d97 100644 --- a/docs/reference/rforcecom.getServerTimestamp.html +++ b/docs/reference/rforcecom.getServerTimestamp.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    salesforcer's backwards compatible version of rforcecom.getServerTimestamp

    +
    rforcecom.getServerTimestamp(session)
    @@ -193,10 +201,16 @@

    Contents

    diff --git a/docs/reference/rforcecom.login.html b/docs/reference/rforcecom.login.html index f44d8599..63844177 100644 --- a/docs/reference/rforcecom.login.html +++ b/docs/reference/rforcecom.login.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    salesforcer's backwards compatible version of rforcecom.login

    +
    rforcecom.login(username, password,
       loginURL = "https://login.salesforce.com/", apiVersion = "35.0")
    @@ -213,10 +221,16 @@

    Contents

    diff --git a/docs/reference/rforcecom.query.html b/docs/reference/rforcecom.query.html index 638ee005..34dd6529 100644 --- a/docs/reference/rforcecom.query.html +++ b/docs/reference/rforcecom.query.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    salesforcer's backwards compatible version of rforcecom.query

    +
    rforcecom.query(session, soqlQuery, queryAll = FALSE)
    @@ -208,10 +216,16 @@

    Contents

    diff --git a/docs/reference/rforcecom.retrieve.html b/docs/reference/rforcecom.retrieve.html index 7918cd5b..526beb93 100644 --- a/docs/reference/rforcecom.retrieve.html +++ b/docs/reference/rforcecom.retrieve.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    salesforcer's backwards compatible version of rforcecom.retrieve

    +
    rforcecom.retrieve(session, objectName, fields, limit = NULL, id = NULL,
       offset = NULL, order = NULL, inverse = NULL, nullsLast = NULL)
    @@ -232,10 +240,16 @@

    Contents

    diff --git a/docs/reference/rforcecom.search.html b/docs/reference/rforcecom.search.html index 4beb925b..c9528607 100644 --- a/docs/reference/rforcecom.search.html +++ b/docs/reference/rforcecom.search.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    salesforcer's backwards compatible version of rforcecom.search

    +
    rforcecom.search(session, queryString)
    @@ -197,10 +205,16 @@

    Contents

    diff --git a/docs/reference/rforcecom.update.html b/docs/reference/rforcecom.update.html index e82e1ad2..9cead755 100644 --- a/docs/reference/rforcecom.update.html +++ b/docs/reference/rforcecom.update.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    salesforcer's backwards compatible version of rforcecom.update

    +
    rforcecom.update(session, objectName, id, fields)
    @@ -212,10 +220,16 @@

    Contents

    diff --git a/docs/reference/rforcecom.upsert.html b/docs/reference/rforcecom.upsert.html index a8b62ad3..b09a1ba6 100644 --- a/docs/reference/rforcecom.upsert.html +++ b/docs/reference/rforcecom.upsert.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    salesforcer's backwards compatible version of rforcecom.upsert

    +
    rforcecom.upsert(session, objectName, externalIdField, externalId, fields)
    @@ -216,10 +224,16 @@

    Contents

    diff --git a/docs/reference/salesforcer.html b/docs/reference/salesforcer.html index 7116c343..bf014e42 100644 --- a/docs/reference/salesforcer.html +++ b/docs/reference/salesforcer.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    An R package connecting to Salesforce APIs using tidy principles

    +

    Details

    @@ -187,10 +195,16 @@

    Contents

    diff --git a/docs/reference/salesforcer_state.html b/docs/reference/salesforcer_state.html index 7221b02f..a78224d2 100644 --- a/docs/reference/salesforcer_state.html +++ b/docs/reference/salesforcer_state.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Return the package's .state environment variable

    +
    salesforcer_state()
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/session_id_available.html b/docs/reference/session_id_available.html index 6e7a5da0..539f5332 100644 --- a/docs/reference/session_id_available.html +++ b/docs/reference/session_id_available.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    Check if a session_id is available in salesforcer's internal .state environment.

    +
    session_id_available(verbose = TRUE)
    @@ -193,10 +201,16 @@

    Contents

    diff --git a/docs/reference/sf_abort_job_bulk.html b/docs/reference/sf_abort_job_bulk.html index 933d3fb8..c0312f4f 100644 --- a/docs/reference/sf_abort_job_bulk.html +++ b/docs/reference/sf_abort_job_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    This function aborts a Job in the Salesforce Bulk API

    +
    sf_abort_job_bulk(job_id, api_type = c("Bulk 2.0"), verbose = FALSE)
    @@ -218,10 +226,16 @@

    Contents

    diff --git a/docs/reference/sf_access_token.html b/docs/reference/sf_access_token.html index 4839aafc..e20d516c 100644 --- a/docs/reference/sf_access_token.html +++ b/docs/reference/sf_access_token.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Return access_token attribute of OAuth 2.0 Token

    +
    sf_access_token(verbose = FALSE)
    @@ -202,10 +210,16 @@

    Contents

    diff --git a/docs/reference/sf_auth.html b/docs/reference/sf_auth.html index 1710b636..e21e18d4 100644 --- a/docs/reference/sf_auth.html +++ b/docs/reference/sf_auth.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -47,23 +59,16 @@ - + + - - - - - @@ -133,7 +138,7 @@ @@ -148,9 +153,11 @@
    +

    Log in using Basic (Username-Password) or OAuth 2.0 authenticaion. OAuth does not require sharing passwords, but will require authorizing salesforcer @@ -159,6 +166,7 @@

    Log in to Salesforce

    permission to operate on your behalf. By default, these user credentials are cached in a file named .httr-oauth-salesforcer in the current working directory.

    +
    sf_auth(username = NULL, password = NULL, security_token = NULL,
       login_url = getOption("salesforcer.login_url"), token = NULL,
    @@ -216,7 +224,7 @@ 

    Examp # log in using basic authentication (username-password) sf_auth(username = "test@gmail.com", password = "test_password", - security_token = ) + security_token = "test_token") # log in using OAuth 2.0 # Via brower or refresh of .httr-oauth-salesforcer @@ -255,10 +263,16 @@

    Contents

    diff --git a/docs/reference/sf_auth_check.html b/docs/reference/sf_auth_check.html index 7dee7781..dc5623d0 100644 --- a/docs/reference/sf_auth_check.html +++ b/docs/reference/sf_auth_check.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -47,23 +59,16 @@ - + + - - - - - @@ -133,7 +138,7 @@ @@ -148,9 +153,11 @@
    +

    Before the user makes any calls requiring an authorized session, check if an OAuth token or session is not already available, call sf_auth to @@ -159,6 +166,7 @@

    Check that an Authorized Salesforce Session Exists

    access_token() to reveal the actual access token, suitable for use with curl.

    +
    sf_auth_check(verbose = FALSE)
    @@ -213,10 +221,16 @@

    Contents

    diff --git a/docs/reference/sf_auth_refresh.html b/docs/reference/sf_auth_refresh.html index 1e34792a..9ecc181c 100644 --- a/docs/reference/sf_auth_refresh.html +++ b/docs/reference/sf_auth_refresh.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -44,23 +56,16 @@ - + + - - - - - @@ -130,7 +135,7 @@ @@ -145,14 +150,17 @@
    +

    Force the current OAuth to refresh. This is only needed for times when you load the token from outside the current working directory, it is expired, and you're running in non-interactive mode.

    +
    sf_auth_refresh(verbose = FALSE)
    @@ -207,10 +215,16 @@

    Contents

    diff --git a/docs/reference/sf_batch_details_bulk.html b/docs/reference/sf_batch_details_bulk.html index a9897571..95b1c17c 100644 --- a/docs/reference/sf_batch_details_bulk.html +++ b/docs/reference/sf_batch_details_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function returns detailed (row-by-row) information on an existing batch which has already been submitted to Bulk API Job

    +
    sf_batch_details_bulk(job_id, batch_id, api_type = c("Bulk 1.0"),
       verbose = FALSE)
    @@ -237,10 +245,16 @@

    Contents

    diff --git a/docs/reference/sf_batch_status_bulk.html b/docs/reference/sf_batch_status_bulk.html index 6d5bce2a..79520c98 100644 --- a/docs/reference/sf_batch_status_bulk.html +++ b/docs/reference/sf_batch_status_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function checks on and returns status information on an existing batch which has already been submitted to Bulk API Job

    +
    sf_batch_status_bulk(job_id, batch_id, api_type = c("Bulk 1.0"),
       verbose = FALSE)
    @@ -237,10 +245,16 @@

    Contents

    diff --git a/docs/reference/sf_bulk_operation.html b/docs/reference/sf_bulk_operation.html index 02179994..d228084b 100644 --- a/docs/reference/sf_bulk_operation.html +++ b/docs/reference/sf_bulk_operation.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    This function is a convenience wrapper for submitting bulk API jobs

    +
    sf_bulk_operation(input_data, object_name, operation = c("insert", "delete",
       "upsert", "update", "hardDelete"), external_id_fieldname = NULL,
    @@ -263,10 +271,16 @@ 

    Contents

    diff --git a/docs/reference/sf_close_job_bulk.html b/docs/reference/sf_close_job_bulk.html index 898766d4..769baa26 100644 --- a/docs/reference/sf_close_job_bulk.html +++ b/docs/reference/sf_close_job_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    This function closes a Job in the Salesforce Bulk API

    +
    sf_close_job_bulk(job_id, api_type = c("Bulk 1.0", "Bulk 2.0"),
       verbose = FALSE)
    @@ -230,10 +238,16 @@

    Contents

    diff --git a/docs/reference/sf_create.html b/docs/reference/sf_create.html index 95ab243f..9f9600c4 100644 --- a/docs/reference/sf_create.html +++ b/docs/reference/sf_create.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Adds one or more new records to your organization’s data.

    +
    sf_create(input_data, object_name, all_or_none = FALSE, api_type = c("SOAP",
       "REST", "Bulk 1.0", "Bulk 2.0"), ..., verbose = FALSE)
    @@ -230,10 +238,16 @@

    Contents

    diff --git a/docs/reference/sf_create_batches_bulk.html b/docs/reference/sf_create_batches_bulk.html index 923ef63d..4aa12cae 100644 --- a/docs/reference/sf_create_batches_bulk.html +++ b/docs/reference/sf_create_batches_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function takes a data frame and submits it in batches to a an already existing Bulk API Job by chunking into temp files

    +
    sf_create_batches_bulk(job_id, input_data, api_type = c("Bulk 1.0",
       "Bulk 2.0"), verbose = FALSE)
    @@ -242,10 +250,16 @@

    Contents

    diff --git a/docs/reference/sf_create_bulk_v1.html b/docs/reference/sf_create_bulk_v1.html index 0304f3b4..5912c949 100644 --- a/docs/reference/sf_create_bulk_v1.html +++ b/docs/reference/sf_create_bulk_v1.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Create Records using Bulk 1.0 API

    +
    sf_create_bulk_v1(input_data, object_name, all_or_none = FALSE, ...,
       verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_create_bulk_v2.html b/docs/reference/sf_create_bulk_v2.html index b5ad7801..f6dbcd8c 100644 --- a/docs/reference/sf_create_bulk_v2.html +++ b/docs/reference/sf_create_bulk_v2.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Create Records using Bulk 2.0 API

    +
    sf_create_bulk_v2(input_data, object_name, all_or_none = FALSE, ...,
       verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_create_job_bulk.html b/docs/reference/sf_create_job_bulk.html index 5ad2327e..6912fce8 100644 --- a/docs/reference/sf_create_job_bulk.html +++ b/docs/reference/sf_create_job_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    This function initializes a Job in the Salesforce Bulk API

    +
    sf_create_job_bulk(operation = c("insert", "delete", "upsert", "update",
       "hardDelete", "query"), object_name, external_id_fieldname = NULL,
    @@ -272,10 +280,16 @@ 

    Contents

    diff --git a/docs/reference/sf_create_job_bulk_v1.html b/docs/reference/sf_create_job_bulk_v1.html index eabed24d..b6c9e452 100644 --- a/docs/reference/sf_create_job_bulk_v1.html +++ b/docs/reference/sf_create_job_bulk_v1.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Create Job using Bulk 1.0 API

    +
    sf_create_job_bulk_v1(operation = c("insert", "delete", "upsert", "update",
       "hardDelete", "query"), object_name, external_id_fieldname = NULL,
    @@ -188,10 +196,16 @@ 

    Contents

    diff --git a/docs/reference/sf_create_job_bulk_v2.html b/docs/reference/sf_create_job_bulk_v2.html index 1b674f33..8a3b1d35 100644 --- a/docs/reference/sf_create_job_bulk_v2.html +++ b/docs/reference/sf_create_job_bulk_v2.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Create Job using Bulk 2.0 API

    +
    sf_create_job_bulk_v2(operation = c("insert", "delete", "upsert", "update"),
       object_name, external_id_fieldname = NULL, content_type = "CSV",
    @@ -188,10 +196,16 @@ 

    Contents

    diff --git a/docs/reference/sf_create_metadata.html b/docs/reference/sf_create_metadata.html index 185af05a..bc66a768 100644 --- a/docs/reference/sf_create_metadata.html +++ b/docs/reference/sf_create_metadata.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function takes a list of Metadata components and sends them to Salesforce for creation

    +
    sf_create_metadata(metadata_type, metadata, all_or_none = FALSE,
       verbose = FALSE)
    @@ -272,10 +280,16 @@

    Contents

    diff --git a/docs/reference/sf_create_rest.html b/docs/reference/sf_create_rest.html index e929a2c8..064558a1 100644 --- a/docs/reference/sf_create_rest.html +++ b/docs/reference/sf_create_rest.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Create Records using REST API

    +
    sf_create_rest(input_data, object_name, all_or_none = FALSE,
       verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_create_soap.html b/docs/reference/sf_create_soap.html index 3ef39bd1..3da58c0b 100644 --- a/docs/reference/sf_create_soap.html +++ b/docs/reference/sf_create_soap.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Create Records using SOAP API

    +
    sf_create_soap(input_data, object_name, all_or_none = FALSE,
       verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_delete.html b/docs/reference/sf_delete.html index d415d19a..e5f7bcfd 100644 --- a/docs/reference/sf_delete.html +++ b/docs/reference/sf_delete.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Deletes one or more records to your organization’s data.

    +
    sf_delete(ids, object_name, all_or_none = FALSE, api_type = c("REST",
       "SOAP", "Bulk 1.0", "Bulk 2.0"), ..., verbose = FALSE)
    @@ -237,10 +245,16 @@

    Contents

    diff --git a/docs/reference/sf_delete_job_bulk.html b/docs/reference/sf_delete_job_bulk.html index 11728aad..8acf9397 100644 --- a/docs/reference/sf_delete_job_bulk.html +++ b/docs/reference/sf_delete_job_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Delete Bulk API Job

    +
    sf_delete_job_bulk(job_id, api_type = c("Bulk 2.0"), verbose = FALSE)
    @@ -207,10 +215,16 @@

    Contents

    diff --git a/docs/reference/sf_delete_metadata.html b/docs/reference/sf_delete_metadata.html index 2ed73a98..42c326fa 100644 --- a/docs/reference/sf_delete_metadata.html +++ b/docs/reference/sf_delete_metadata.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    This function takes a request of named elements in Salesforce and deletes them.

    +
    sf_delete_metadata(metadata_type, object_names, all_or_none = FALSE,
       verbose = FALSE)
    @@ -228,10 +236,16 @@

    Contents

    diff --git a/docs/reference/sf_describe_metadata.html b/docs/reference/sf_describe_metadata.html index 06bf1e20..c94eda2f 100644 --- a/docs/reference/sf_describe_metadata.html +++ b/docs/reference/sf_describe_metadata.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    This function returns details about the organization metadata

    +
    sf_describe_metadata(verbose = FALSE)
    @@ -208,10 +216,16 @@

    Contents

    diff --git a/docs/reference/sf_describe_object_fields.html b/docs/reference/sf_describe_object_fields.html new file mode 100644 index 00000000..929f8238 --- /dev/null +++ b/docs/reference/sf_describe_object_fields.html @@ -0,0 +1,238 @@ + + + + + + + + +Describe Object Fields — sf_describe_object_fields • salesforcer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    + + +
    + +

    This function takes the name of an object in Salesforce and returns a description +of the fields on that object by returning a tibble with one row per field.

    + +
    + +
    sf_describe_object_fields(object_name)
    + +

    Arguments

    + + + + + + +
    object_name

    character; the name of one Salesforce objects that the +function is operating against (e.g. "Account", "Contact", "CustomObject__c")

    + +

    Value

    + +

    A tbl_df containing one row per field for the requested object.

    + +

    Note

    + +

    The tibble only contains the fields that the user can view, as defined by +the user's field-level security settings.

    + + +

    Examples

    +
    # NOT RUN {
    +acct_fields <- sf_describe_object_fields('Account')
    +# }
    +
    + +
    + +
    + + +
    +

    Site built with pkgdown.

    +
    + +
    +
    + + + + + + + + + diff --git a/docs/reference/sf_describe_objects.html b/docs/reference/sf_describe_objects.html index 34c40e74..829589d0 100644 --- a/docs/reference/sf_describe_objects.html +++ b/docs/reference/sf_describe_objects.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Describes the individual metadata for the specified object.

    +
    sf_describe_objects(object_names, api_type = c("SOAP", "REST", "Bulk"),
       verbose = FALSE)
    @@ -214,10 +222,16 @@

    Contents

    diff --git a/docs/reference/sf_end_job_bulk.html b/docs/reference/sf_end_job_bulk.html index aeec2f84..7fb5a6cd 100644 --- a/docs/reference/sf_end_job_bulk.html +++ b/docs/reference/sf_end_job_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    End Bulk API Job

    +
    sf_end_job_bulk(job_id, end_type = c("Closed", "UploadComplete", "Aborted"),
       api_type = c("Bulk 1.0", "Bulk 2.0"), verbose = FALSE)
    @@ -211,10 +219,16 @@

    Contents

    diff --git a/docs/reference/sf_get_job_bulk.html b/docs/reference/sf_get_job_bulk.html index 6f9dd3f1..445f7787 100644 --- a/docs/reference/sf_get_job_bulk.html +++ b/docs/reference/sf_get_job_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    This function retrieves details about a Job in the Salesforce Bulk API

    +
    sf_get_job_bulk(job_id, api_type = c("Bulk 1.0", "Bulk 2.0"),
       verbose = FALSE)
    @@ -220,10 +228,16 @@

    Contents

    diff --git a/docs/reference/sf_get_job_records_bulk.html b/docs/reference/sf_get_job_records_bulk.html index 5fa76a21..2b8cfe27 100644 --- a/docs/reference/sf_get_job_records_bulk.html +++ b/docs/reference/sf_get_job_records_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function returns detailed (row-level) information on a job which has already been submitted completed (successfully or not).

    +
    sf_get_job_records_bulk(job_id, api_type = c("Bulk 1.0", "Bulk 2.0"),
       record_types = c("successfulResults", "failedResults",
    @@ -246,10 +254,16 @@ 

    Contents

    diff --git a/docs/reference/sf_input_data_validation.html b/docs/reference/sf_input_data_validation.html index 53c9e4e0..242e60d4 100644 --- a/docs/reference/sf_input_data_validation.html +++ b/docs/reference/sf_input_data_validation.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Validate the input for an operation

    +
    sf_input_data_validation(input_data, operation = "")
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/sf_job_batches_bulk.html b/docs/reference/sf_job_batches_bulk.html index 433dbc2e..514aeedf 100644 --- a/docs/reference/sf_job_batches_bulk.html +++ b/docs/reference/sf_job_batches_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function checks on and returns status information on an existing batch which has already been submitted to Bulk API Job

    +
    sf_job_batches_bulk(job_id, api_type = c("Bulk 1.0"), verbose = FALSE)
    @@ -230,10 +238,16 @@

    Contents

    diff --git a/docs/reference/sf_list_api_limits.html b/docs/reference/sf_list_api_limits.html index 66ddb362..ac655134 100644 --- a/docs/reference/sf_list_api_limits.html +++ b/docs/reference/sf_list_api_limits.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Lists information about limits in your org.

    +
    sf_list_api_limits()
    @@ -224,10 +232,16 @@

    Contents

    diff --git a/docs/reference/sf_list_metadata.html b/docs/reference/sf_list_metadata.html index 4678c246..4de323e7 100644 --- a/docs/reference/sf_list_metadata.html +++ b/docs/reference/sf_list_metadata.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function takes a query of metadata types and returns a summary of all objects in salesforce of the requested types

    +
    sf_list_metadata(queries, verbose = FALSE)
    @@ -225,10 +233,16 @@

    Contents

    diff --git a/docs/reference/sf_list_objects.html b/docs/reference/sf_list_objects.html index 440bac10..36873567 100644 --- a/docs/reference/sf_list_objects.html +++ b/docs/reference/sf_list_objects.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Lists the available objects and their metadata for your organization’s data.

    +
    sf_list_objects()
    @@ -191,10 +199,16 @@

    Contents

    diff --git a/docs/reference/sf_list_resources.html b/docs/reference/sf_list_resources.html index 3186d1d7..75d63324 100644 --- a/docs/reference/sf_list_resources.html +++ b/docs/reference/sf_list_resources.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    Lists available resources for the specified API version, including resource name and URI.

    +
    sf_list_resources()
    @@ -193,10 +201,16 @@

    Contents

    diff --git a/docs/reference/sf_list_rest_api_versions.html b/docs/reference/sf_list_rest_api_versions.html index 6a925ae2..1bfebde7 100644 --- a/docs/reference/sf_list_rest_api_versions.html +++ b/docs/reference/sf_list_rest_api_versions.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    Lists summary information about each Salesforce version currently available, including the version, label, and a link to each version\'s root

    +
    sf_list_rest_api_versions()
    @@ -193,10 +201,16 @@

    Contents

    diff --git a/docs/reference/sf_query.html b/docs/reference/sf_query.html index 00fec313..3a67ea09 100644 --- a/docs/reference/sf_query.html +++ b/docs/reference/sf_query.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    Executes a query against the specified object and returns data that matches the specified criteria.

    +
    sf_query(soql, object_name, queryall = FALSE, page_size = 1000,
       api_type = c("REST", "SOAP", "Bulk 1.0"), next_records_url = NULL, ...,
    @@ -260,10 +268,16 @@ 

    Contents

    diff --git a/docs/reference/sf_query_bulk.html b/docs/reference/sf_query_bulk.html index 96dd330d..994150b4 100644 --- a/docs/reference/sf_query_bulk.html +++ b/docs/reference/sf_query_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function is a convenience wrapper for submitting and retrieving bulk query API jobs

    +
    sf_query_bulk(soql, object_name, api_type = c("Bulk 1.0"),
       interval_seconds = 5, max_attempts = 100, verbose = FALSE)
    @@ -235,10 +243,16 @@

    Contents

    diff --git a/docs/reference/sf_query_result_bulk.html b/docs/reference/sf_query_result_bulk.html index 3b217306..9744a29e 100644 --- a/docs/reference/sf_query_result_bulk.html +++ b/docs/reference/sf_query_result_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function returns the row-level recordset of a bulk query which has already been submitted to Bulk API Job and has Completed state

    +
    sf_query_result_bulk(job_id, batch_id, result_id, api_type = c("Bulk 1.0"),
       verbose = FALSE)
    @@ -237,10 +245,16 @@

    Contents

    diff --git a/docs/reference/sf_read_metadata.html b/docs/reference/sf_read_metadata.html index 800dd5c1..d8a66137 100644 --- a/docs/reference/sf_read_metadata.html +++ b/docs/reference/sf_read_metadata.html @@ -21,19 +21,31 @@ + + + - + + + + + + + + + - + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +
    -

    This function takes a a request of named elements in Salesforce and +

    This function takes a request of named elements in Salesforce and returns their metadata

    +
    sf_read_metadata(metadata_type, object_names, verbose = FALSE)
    @@ -218,10 +226,16 @@

    Contents

    diff --git a/docs/reference/sf_rename_metadata.html b/docs/reference/sf_rename_metadata.html index 0620ae38..dde3a0b7 100644 --- a/docs/reference/sf_rename_metadata.html +++ b/docs/reference/sf_rename_metadata.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function takes an old and new name for a metadata element in Salesforce and applies the new name

    +
    sf_rename_metadata(metadata_type, old_fullname, new_fullname, verbose = FALSE)
    @@ -225,10 +233,16 @@

    Contents

    diff --git a/docs/reference/sf_retrieve.html b/docs/reference/sf_retrieve.html index d27ee865..320cea9a 100644 --- a/docs/reference/sf_retrieve.html +++ b/docs/reference/sf_retrieve.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Retrieves one or more new records to your organization’s data.

    +
    sf_retrieve(ids, fields, object_name, api_type = c("REST", "SOAP", "Bulk 1.0",
       "Bulk 2.0"), verbose = FALSE)
    @@ -229,10 +237,16 @@

    Contents

    diff --git a/docs/reference/sf_retrieve_metadata.html b/docs/reference/sf_retrieve_metadata.html index 66db0cb6..e3abc984 100644 --- a/docs/reference/sf_retrieve_metadata.html +++ b/docs/reference/sf_retrieve_metadata.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -44,23 +56,16 @@ - + + - - - - - @@ -130,7 +135,7 @@ @@ -145,14 +150,17 @@
    +

    This function makes a request to retrieve metadata as a package XML files that can be modified and later deployed into an environment

    +
    sf_retrieve_metadata(retrieve_request, filename = "package.zip",
       check_interval = 3, max_tries = 20, verbose = FALSE)
    @@ -243,10 +251,16 @@

    Contents

    diff --git a/docs/reference/sf_retrieve_metadata_check_status.html b/docs/reference/sf_retrieve_metadata_check_status.html index 64c9f6ef..4a3eb546 100644 --- a/docs/reference/sf_retrieve_metadata_check_status.html +++ b/docs/reference/sf_retrieve_metadata_check_status.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function returns details about an initiated retrieveMetadata requset and saves the results into a zip file

    +
    sf_retrieve_metadata_check_status(id, include_zip = TRUE,
       filename = "package.zip", verbose = FALSE)
    @@ -235,10 +243,16 @@

    Contents

    diff --git a/docs/reference/sf_search.html b/docs/reference/sf_search.html index b7cbaa90..fa63063c 100644 --- a/docs/reference/sf_search.html +++ b/docs/reference/sf_search.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Searches for records in your organization’s data.

    +
    sf_search(search_string, is_sosl = FALSE, api_type = c("REST", "SOAP",
       "Bulk 1.0", "Bulk 2.0"), parameterized_search_options = list(...),
    @@ -248,10 +256,16 @@ 

    Contents

    diff --git a/docs/reference/sf_server_timestamp.html b/docs/reference/sf_server_timestamp.html index 2c5460df..6d6873f8 100644 --- a/docs/reference/sf_server_timestamp.html +++ b/docs/reference/sf_server_timestamp.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Retrieves the current system timestamp from the API.

    +
    sf_server_timestamp()
    @@ -191,10 +199,16 @@

    Contents

    diff --git a/docs/reference/sf_session_id.html b/docs/reference/sf_session_id.html index 77f267ac..80d7a562 100644 --- a/docs/reference/sf_session_id.html +++ b/docs/reference/sf_session_id.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Return session_id resulting from Basic auth routine

    +
    sf_session_id(verbose = TRUE)
    @@ -202,10 +210,16 @@

    Contents

    diff --git a/docs/reference/sf_submit_query_bulk.html b/docs/reference/sf_submit_query_bulk.html index 07457524..94c1b506 100644 --- a/docs/reference/sf_submit_query_bulk.html +++ b/docs/reference/sf_submit_query_bulk.html @@ -21,19 +21,31 @@ + + + - + + + + + + + + + +an already existing Bulk API Job of operation "query"" /> + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function takes a SOQL text string and submits the query to an already existing Bulk API Job of operation "query"

    +
    sf_submit_query_bulk(job_id, soql, api_type = c("Bulk 1.0"),
       verbose = FALSE)
    @@ -240,10 +248,16 @@

    Contents

    diff --git a/docs/reference/sf_update.html b/docs/reference/sf_update.html index b041a677..1ee301a0 100644 --- a/docs/reference/sf_update.html +++ b/docs/reference/sf_update.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Updates one or more records to your organization’s data.

    +
    sf_update(input_data, object_name, all_or_none = FALSE, api_type = c("SOAP",
       "REST", "Bulk 1.0", "Bulk 2.0"), ..., verbose = FALSE)
    @@ -236,10 +244,16 @@

    Contents

    diff --git a/docs/reference/sf_update_bulk_v1.html b/docs/reference/sf_update_bulk_v1.html index 20cc7ce1..6a2ddc95 100644 --- a/docs/reference/sf_update_bulk_v1.html +++ b/docs/reference/sf_update_bulk_v1.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Update Records using Bulk 1.0 API

    +
    sf_update_bulk_v1(input_data, object_name, all_or_none = FALSE, ...,
       verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_update_bulk_v2.html b/docs/reference/sf_update_bulk_v2.html index 5aaa6a75..2b5262b8 100644 --- a/docs/reference/sf_update_bulk_v2.html +++ b/docs/reference/sf_update_bulk_v2.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Update Records using Bulk 2.0 API

    +
    sf_update_bulk_v2(input_data, object_name, all_or_none = FALSE, ...,
       verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_update_metadata.html b/docs/reference/sf_update_metadata.html index 26f607fb..65d4abce 100644 --- a/docs/reference/sf_update_metadata.html +++ b/docs/reference/sf_update_metadata.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function takes a list of Metadata components and sends them to Salesforce to update an object that already exists

    +
    sf_update_metadata(metadata_type, metadata, all_or_none = FALSE,
       verbose = FALSE)
    @@ -252,10 +260,16 @@

    Contents

    diff --git a/docs/reference/sf_update_rest.html b/docs/reference/sf_update_rest.html index fab18507..fd4a1c3d 100644 --- a/docs/reference/sf_update_rest.html +++ b/docs/reference/sf_update_rest.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Update Records using REST API

    +
    sf_update_rest(input_data, object_name, all_or_none = FALSE,
       verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_update_soap.html b/docs/reference/sf_update_soap.html index 431b4909..e7bd500b 100644 --- a/docs/reference/sf_update_soap.html +++ b/docs/reference/sf_update_soap.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Update Records using SOAP API

    +
    sf_update_soap(input_data, object_name, all_or_none = FALSE,
       verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_upload_complete_bulk.html b/docs/reference/sf_upload_complete_bulk.html index d4b11f82..be51a393 100644 --- a/docs/reference/sf_upload_complete_bulk.html +++ b/docs/reference/sf_upload_complete_bulk.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    This function signals that uploads are complete to a Job in the Salesforce Bulk API

    +
    sf_upload_complete_bulk(job_id, api_type = c("Bulk 2.0"), verbose = FALSE)
    @@ -225,10 +233,16 @@

    Contents

    diff --git a/docs/reference/sf_upsert.html b/docs/reference/sf_upsert.html index 94d47199..d39ef79a 100644 --- a/docs/reference/sf_upsert.html +++ b/docs/reference/sf_upsert.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Upserts one or more new records to your organization’s data.

    +
    sf_upsert(input_data, object_name, external_id_fieldname, all_or_none = FALSE,
       api_type = c("SOAP", "REST", "Bulk 1.0", "Bulk 2.0"), ...,
    @@ -249,10 +257,16 @@ 

    Contents

    diff --git a/docs/reference/sf_upsert_bulk_v1.html b/docs/reference/sf_upsert_bulk_v1.html index b977e7f1..29472696 100644 --- a/docs/reference/sf_upsert_bulk_v1.html +++ b/docs/reference/sf_upsert_bulk_v1.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Upsert Records using Bulk 1.0 API

    +
    sf_upsert_bulk_v1(input_data, object_name, external_id_fieldname,
       all_or_none = FALSE, ..., verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_upsert_bulk_v2.html b/docs/reference/sf_upsert_bulk_v2.html index bf6d460d..6e56025a 100644 --- a/docs/reference/sf_upsert_bulk_v2.html +++ b/docs/reference/sf_upsert_bulk_v2.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Upsert Records using Bulk 2.0 API

    +
    sf_upsert_bulk_v2(input_data, object_name, external_id_fieldname,
       all_or_none = FALSE, ..., verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_upsert_metadata.html b/docs/reference/sf_upsert_metadata.html index 059ff14d..fb152fcc 100644 --- a/docs/reference/sf_upsert_metadata.html +++ b/docs/reference/sf_upsert_metadata.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    This function takes a list of Metadata components and sends them to Salesforce for creation or update if the object already exists

    +
    sf_upsert_metadata(metadata_type, metadata, all_or_none = FALSE,
       verbose = FALSE)
    @@ -255,10 +263,16 @@

    Contents

    diff --git a/docs/reference/sf_upsert_rest.html b/docs/reference/sf_upsert_rest.html index 4e182b84..33e18255 100644 --- a/docs/reference/sf_upsert_rest.html +++ b/docs/reference/sf_upsert_rest.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Upsert Records using REST API

    +
    sf_upsert_rest(input_data, object_name, external_id_fieldname,
       all_or_none = FALSE, verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_upsert_soap.html b/docs/reference/sf_upsert_soap.html index 2bc454bc..9746df75 100644 --- a/docs/reference/sf_upsert_soap.html +++ b/docs/reference/sf_upsert_soap.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Upsert Records using SOAP API

    +
    sf_upsert_soap(input_data, object_name, external_id_fieldname,
       all_or_none = FALSE, verbose = FALSE)
    @@ -186,10 +194,16 @@

    Contents

    diff --git a/docs/reference/sf_user_info.html b/docs/reference/sf_user_info.html index 29a43c48..733fa33a 100644 --- a/docs/reference/sf_user_info.html +++ b/docs/reference/sf_user_info.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Retrieves personal information for the user associated with the current session.

    +
    sf_user_info()
    @@ -191,10 +199,16 @@

    Contents

    diff --git a/docs/reference/sf_write_csv.html b/docs/reference/sf_write_csv.html index 08903302..91370621 100644 --- a/docs/reference/sf_write_csv.html +++ b/docs/reference/sf_write_csv.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    Write a CSV file in format acceptable to Salesforce APIs

    +
    sf_write_csv(x, path)
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/token_available.html b/docs/reference/token_available.html index 4a173704..2bc28b34 100644 --- a/docs/reference/token_available.html +++ b/docs/reference/token_available.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -43,23 +55,16 @@ - + + - - - - - @@ -129,7 +134,7 @@ @@ -144,13 +149,16 @@
    +

    Check if a token is available in salesforcer's internal .state environment.

    +
    token_available(verbose = TRUE)
    @@ -193,10 +201,16 @@

    Contents

    diff --git a/docs/reference/valid_metadata_list.html b/docs/reference/valid_metadata_list.html index 6d85be58..a32fccd3 100644 --- a/docs/reference/valid_metadata_list.html +++ b/docs/reference/valid_metadata_list.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    A list of data types that are valid for the Metadata API service.

    +
    valid_metadata_list()
    @@ -185,10 +193,16 @@

    Contents

    diff --git a/docs/reference/xmlToList2.html b/docs/reference/xmlToList2.html index 5cb7b6f7..7f9b36f2 100644 --- a/docs/reference/xmlToList2.html +++ b/docs/reference/xmlToList2.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + + @@ -44,23 +56,16 @@ - + + - - - - - @@ -130,7 +135,7 @@ @@ -145,14 +150,17 @@
    +

    This function is an early and simple approach to converting an XML node or document into a more typical R list containing the data values. It differs from xmlToList by not including attributes at all in the output.

    +
    xmlToList2(node)
    @@ -205,10 +213,16 @@

    Contents

    diff --git a/docs/reference/xml_nodeset_to_df.html b/docs/reference/xml_nodeset_to_df.html index 857e2921..33248522 100644 --- a/docs/reference/xml_nodeset_to_df.html +++ b/docs/reference/xml_nodeset_to_df.html @@ -21,10 +21,21 @@ + + + - + + + + + + + + + @@ -33,6 +44,7 @@ + @@ -42,23 +54,16 @@ - + + - - - - - @@ -128,7 +133,7 @@ @@ -143,12 +148,15 @@
    +

    A function specifically for parsing an XML node into a data.frame

    +
    xml_nodeset_to_df(this_node)
    @@ -201,10 +209,16 @@

    Contents

    diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 4de2a8f6..d567df67 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -1,5 +1,8 @@ + + https://stevenmmortimer.github.io/salesforcer/index.html + https://stevenmmortimer.github.io/salesforcer/reference/VERB_n.html @@ -117,6 +120,9 @@ https://stevenmmortimer.github.io/salesforcer/reference/rforcecom.delete.html + + https://stevenmmortimer.github.io/salesforcer/reference/rforcecom.getObjectDescription.html + https://stevenmmortimer.github.io/salesforcer/reference/rforcecom.getServerTimestamp.html @@ -216,6 +222,9 @@ https://stevenmmortimer.github.io/salesforcer/reference/sf_describe_metadata.html + + https://stevenmmortimer.github.io/salesforcer/reference/sf_describe_object_fields.html + https://stevenmmortimer.github.io/salesforcer/reference/sf_describe_objects.html diff --git a/index.Rmd b/index.Rmd index 376b4a52..c69634b5 100644 --- a/index.Rmd +++ b/index.Rmd @@ -30,7 +30,7 @@ Bulk 2.0, and Metadata APIs. Package features include: * Retrieve and modify metadata (Custom Objects, Fields, etc.) using the Metadata API with: * `sf_describe_objects()`, `sf_create_metadata()`, `sf_update_metadata()` * Utilize backwards compatible functions for the **RForcecom** package, such as: - * `rforcecom.login()`, `rforcecom.query()`, `rforcecom.create()`, `rforcecom.update()` + * `rforcecom.login()`, `rforcecom.getObjectDescription()`, `rforcecom.query()`, `rforcecom.create()` * Basic utility calls (`sf_user_info()`, `sf_server_timestamp()`, `sf_list_objects()`) ## Table of Contents @@ -233,21 +233,34 @@ read_obj_result[[1]][first_two_fields_idx] The data is returned as a list because object definitions are highly nested representations. You may notice that we are missing some really specific details, such as, the picklist -values of a field with type "Picklist". You can get that information using the function -`sf_describe_object()` function which is actually part of the REST and SOAP APIs. -It is recommended that you try out the various metadata functions `sf_read_metadata()`, -`sf_list_metadata()`, `sf_describe_metadata()`, and `sf_describe_objects()` in order -to see which information best suits your use case. +values of a field with type "Picklist". You can get that information using the +`sf_describe_object_fields()` or `sf_describe_objects()` functions which are based +on calls from REST and SOAP APIs. Here is an example using `sf_describe_object_fields()` +where we get a `tbl_df` with one row for each field on the Account object: + +```{r soap-describe-object-fields} +acct_fields <- sf_describe_object_fields('Account') +acct_fields %>% select(name, label, length, soapType, type) +``` + +If you prefer to be more precise about collecting and formatting the field data you +can work directly with the nested lists that the APIs return. In this example we +look at the picklist values of fields on the Account object. ```{r rest-describe-objects} describe_obj_result <- sf_describe_objects(object_names=c('Account', 'Contact')) +# confirm that the Account object is queryable describe_obj_result[[1]][c('label', 'queryable')] -# show the first two returned fields of the Account object -the_type_field <- describe_obj_result[[1]][[58]] -the_type_field$name +# show the different picklist values for the Account Type field +the_type_field <- describe_obj_result[[1]][[59]] +the_type_field$label map_df(the_type_field[which(names(the_type_field) == "picklistValues")], as_tibble) ``` +It is recommended that you try out the various metadata functions `sf_read_metadata()`, +`sf_list_metadata()`, `sf_describe_metadata()`, and `sf_describe_objects()` in order +to see which information best suits your use case. + Where the Metadata API really shines is when it comes to CRUD operations on metadata. In this example we will create an object, add fields to it, then delete that object. diff --git a/man/rforcecom.getObjectDescription.Rd b/man/rforcecom.getObjectDescription.Rd new file mode 100644 index 00000000..c05da771 --- /dev/null +++ b/man/rforcecom.getObjectDescription.Rd @@ -0,0 +1,27 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/compatibility.R +\name{rforcecom.getObjectDescription} +\alias{rforcecom.getObjectDescription} +\title{salesforcer's backwards compatible version of rforcecom.getObjectDescription} +\usage{ +rforcecom.getObjectDescription(session, objectName) +} +\arguments{ +\item{session}{\code{list}; a list containing "sessionID", "instanceURL", and " +apiVersion" as returned by \code{RForcecom::rforcecom.login()}. This argument is +ignored in all backward compatible calls because the authorization credentials +are stored in an environment internal to the salesforcer package, so it is no longer +necessary to pass the session in each function call.} + +\item{objectName}{character; the name of the Salesforce object that the +function is operating against (e.g. "Account", "Contact", "CustomObject__c")} +} +\value{ +Object descriptions +} +\description{ +salesforcer's backwards compatible version of rforcecom.getObjectDescription +} +\note{ +This function returns a data.frame with one row per field for an object. +} diff --git a/man/sf_describe_object_fields.Rd b/man/sf_describe_object_fields.Rd new file mode 100644 index 00000000..c1f061eb --- /dev/null +++ b/man/sf_describe_object_fields.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/read-metadata.R +\name{sf_describe_object_fields} +\alias{sf_describe_object_fields} +\title{Describe Object Fields} +\usage{ +sf_describe_object_fields(object_name) +} +\arguments{ +\item{object_name}{character; the name of one Salesforce objects that the +function is operating against (e.g. "Account", "Contact", "CustomObject__c")} +} +\value{ +A \code{tbl_df} containing one row per field for the requested object. +} +\description{ +This function takes the name of an object in Salesforce and returns a description +of the fields on that object by returning a tibble with one row per field. +} +\note{ +The tibble only contains the fields that the user can view, as defined by +the user's field-level security settings. +} +\examples{ +\dontrun{ +acct_fields <- sf_describe_object_fields('Account') +} +} diff --git a/man/sf_read_metadata.Rd b/man/sf_read_metadata.Rd index ede4a9b1..baae6825 100644 --- a/man/sf_read_metadata.Rd +++ b/man/sf_read_metadata.Rd @@ -17,7 +17,7 @@ sf_read_metadata(metadata_type, object_names, verbose = FALSE) A \code{list} containing a response for each requested object } \description{ -This function takes a a request of named elements in Salesforce and +This function takes a request of named elements in Salesforce and returns their metadata } \examples{ diff --git a/tests/testthat/test-compatibility.R b/tests/testthat/test-compatibility.R index 12e9990b..4fc107e9 100644 --- a/tests/testthat/test-compatibility.R +++ b/tests/testthat/test-compatibility.R @@ -173,6 +173,19 @@ test_that("testing rforcecom.search compatibility", { expect_is(result2, "data.frame") }) +test_that("testing rforcecom.getObjectDescription compatibility", { + + result1 <- RForcecom::rforcecom.getObjectDescription(session, objectName="Account") + result2 <- salesforcer::rforcecom.getObjectDescription(session, objectName="Account") + + expect_is(result1, "data.frame") + expect_is(result2, "data.frame") + # same number of fields + expect_equal(nrow(result1), nrow(result2)) + # same names of the fields + expect_equal(sort(as.character(result1$name)), sort(result2$name)) +}) + # not exported? # test_that("testing rforcecom.bulkAction compatibility", { # n <- 2 diff --git a/tests/testthat/test-metadata.R b/tests/testthat/test-metadata.R index 3f070a55..38217662 100644 --- a/tests/testthat/test-metadata.R +++ b/tests/testthat/test-metadata.R @@ -69,6 +69,7 @@ describe_obj_result <- sf_describe_metadata() list_obj_result <- sf_list_metadata(queries=list(list(type='CustomObject'))) read_obj_result <- sf_read_metadata(metadata_type='CustomObject', object_names=paste0("Custom_Account_", rand_int+1, "__c")) +desc_obj_fields_result <- sf_describe_object_fields(paste0("Custom_Account_", rand_int+1, "__c")) retrieve_request <- list(unpackaged=list(types=list(members='*', name='CustomObject'))) retrieve_info <- sf_retrieve_metadata(retrieve_request) @@ -137,6 +138,13 @@ test_that("sf_read_metadata", { names(read_obj_result[[1]]))) }) +test_that("sf_describe_object_fields", { + expect_is(desc_obj_fields_result, "tbl_df") + expect_true(all(c('Id', 'OwnerId', 'IsDeleted', 'Name', 'CreatedDate', 'CreatedById', + 'LastModifiedDate', 'LastModifiedById', 'SystemModstamp', 'LastActivityDate') %in% + desc_obj_fields_result$name)) +}) + test_that("sf_retrieve_metadata", { expect_is(retrieve_info, "tbl_df") expect_true(all(c('done', 'id', 'status', 'success', 'fileProperties') %in% diff --git a/vignettes/transitioning-from-RForcecom.R b/vignettes/transitioning-from-RForcecom.R index a966e4b4..9429f4d5 100644 --- a/vignettes/transitioning-from-RForcecom.R +++ b/vignettes/transitioning-from-RForcecom.R @@ -81,3 +81,14 @@ result2 salesforcer_results <- sf_query(this_soql) salesforcer_results +## ---- warning=FALSE------------------------------------------------------ +# the RForcecom way +result1 <- RForcecom::rforcecom.getObjectDescription(session, objectName='Account') + +# backwards compatible in the salesforcer package +result2 <- salesforcer::rforcecom.getObjectDescription(session, objectName='Account') + +# the better way in salesforcer to get object fields +result3 <- salesforcer::sf_describe_object_fields('Account') +result3 + diff --git a/vignettes/transitioning-from-RForcecom.Rmd b/vignettes/transitioning-from-RForcecom.Rmd index 59cbc4ef..74f80fe7 100644 --- a/vignettes/transitioning-from-RForcecom.Rmd +++ b/vignettes/transitioning-from-RForcecom.Rmd @@ -138,5 +138,24 @@ salesforcer_results <- sf_query(this_soql) salesforcer_results ``` +### Describe + +The **RForcecom** package has the function `rforcecom.getObjectDescription()` which returns +a `data.frame` with one row per field on an object. The same function in **salesforcer** +is named `sf_describe_object_fields()` and also has better printing and datatype +casting by using tibbles. + +```{r, warning=FALSE} +# the RForcecom way +result1 <- RForcecom::rforcecom.getObjectDescription(session, objectName='Account') + +# backwards compatible in the salesforcer package +result2 <- salesforcer::rforcecom.getObjectDescription(session, objectName='Account') + +# the better way in salesforcer to get object fields +result3 <- salesforcer::sf_describe_object_fields('Account') +result3 +``` + In the future more features will be migrated from **RForcecom** to make the transition as seamless as possible. diff --git a/vignettes/transitioning-from-RForcecom.md b/vignettes/transitioning-from-RForcecom.md index adf94c49..3d968200 100644 --- a/vignettes/transitioning-from-RForcecom.md +++ b/vignettes/transitioning-from-RForcecom.md @@ -78,13 +78,13 @@ fields <- c(FirstName="Test", LastName="Contact-Create-Compatibility") result1 <- RForcecom::rforcecom.create(session, objectName=object, fields) result1 #> id success -#> 1 0036A00000SncEYQAZ true +#> 1 0036A00000cIQKmQAO true # replicated in salesforcer package result2 <- salesforcer::rforcecom.create(session, objectName=object, fields) result2 #> id success -#> 1 0036A00000SncEdQAJ true +#> 1 0036A00000cIQKrQAO true ``` Here is an example showing the reduction in code of using **salesforcer** if you @@ -106,8 +106,8 @@ for(i in 1:nrow(new_contacts)){ } rforcecom_results #> id success -#> 1 0036A00000SncEiQAJ true -#> 2 0036A00000SncEnQAJ true +#> 1 0036A00000cIQKwQAO true +#> 2 0036A00000cIQJuQAO true # the better way in salesforcer to do multiple records salesforcer_results <- sf_create(new_contacts, object_name="Contact") @@ -115,8 +115,8 @@ salesforcer_results #> # A tibble: 2 x 2 #> id success #> -#> 1 0036A00000SncELQAZ true -#> 2 0036A00000SncEMQAZ true +#> 1 0036A00000cIQL1QAO true +#> 2 0036A00000cIQL2QAO true ``` ### Query @@ -132,11 +132,11 @@ this_soql <- "SELECT Id, Email FROM Contact LIMIT 5" result1 <- RForcecom::rforcecom.query(session, soqlQuery = this_soql) result1 #> Id -#> 1 0036A00000RUqb0QAD -#> 2 0036A00000RUqedQAD -#> 3 0036A00000RUqeeQAD -#> 4 0036A00000RUpmQQAT -#> 5 0036A00000RUpnnQAD +#> 1 0036A00000SncIGQAZ +#> 2 0036A00000SncIHQAZ +#> 3 0036A00000RUqb0QAD +#> 4 0036A00000RUqedQAD +#> 5 0036A00000RUqeeQAD # replicated in salesforcer package result2 <- salesforcer::rforcecom.query(session, soqlQuery = this_soql) @@ -144,11 +144,11 @@ result2 #> # A tibble: 5 x 2 #> Id Email #> * -#> 1 0036A00000RUqb0QAD NA -#> 2 0036A00000RUqedQAD NA -#> 3 0036A00000RUqeeQAD NA -#> 4 0036A00000RUpmQQAT NA -#> 5 0036A00000RUpnnQAD NA +#> 1 0036A00000SncIGQAZ NA +#> 2 0036A00000SncIHQAZ NA +#> 3 0036A00000RUqb0QAD NA +#> 4 0036A00000RUqedQAD NA +#> 5 0036A00000RUqeeQAD NA # the better way in salesforcer to query salesforcer_results <- sf_query(this_soql) @@ -156,11 +156,99 @@ salesforcer_results #> # A tibble: 5 x 2 #> Id Email #> * -#> 1 0036A00000RUqb0QAD NA -#> 2 0036A00000RUqedQAD NA -#> 3 0036A00000RUqeeQAD NA -#> 4 0036A00000RUpmQQAT NA -#> 5 0036A00000RUpnnQAD NA +#> 1 0036A00000SncIGQAZ NA +#> 2 0036A00000SncIHQAZ NA +#> 3 0036A00000RUqb0QAD NA +#> 4 0036A00000RUqedQAD NA +#> 5 0036A00000RUqeeQAD NA +``` + +### Describe + +The **RForcecom** package has the function `rforcecom.getObjectDescription()` which returns +a `data.frame` with one row per field on an object. The same function in **salesforcer** +is named `sf_describe_object_fields()` and also has better printing and datatype +casting by using tibbles. + + +```r +# the RForcecom way +result1 <- RForcecom::rforcecom.getObjectDescription(session, objectName='Account') + +# backwards compatible in the salesforcer package +result2 <- salesforcer::rforcecom.getObjectDescription(session, objectName='Account') + +# the better way in salesforcer to get object fields +result3 <- salesforcer::sf_describe_object_fields('Account') +#> Parsed with column specification: +#> cols( +#> .default = col_character(), +#> byteLength = col_double(), +#> digits = col_double(), +#> length = col_double(), +#> precision = col_double(), +#> scale = col_double() +#> ) +#> See spec(...) for full column specifications. +result3 +#> # A tibble: 67 x 166 +#> aggregatable autoNumber byteLength calculated caseSensitive createable +#> +#> 1 true false 18. false false false +#> 2 false false 0. false false false +#> 3 true false 18. false false false +#> 4 true false 765. false false true +#> 5 true false 120. false false true +#> 6 true false 18. false false true +#> 7 true false 765. false false true +#> 8 true false 120. false false true +#> 9 true false 240. false false true +#> 10 true false 60. false false true +#> # ... with 57 more rows, and 160 more variables: custom , +#> # defaultedOnCreate , deprecatedAndHidden , digits , +#> # filterable , groupable , idLookup , label , +#> # length , name , nameField , namePointing , +#> # nillable , permissionable , polymorphicForeignKey , +#> # precision , queryByDistance , restrictedPicklist , +#> # scale , searchPrefilterable , soapType , +#> # sortable , type , unique , updateable , +#> # defaultValue.text , defaultValue..attrs , referenceTo , +#> # relationshipName , compoundFieldName , extraTypeInfo , +#> # picklistValues.active , picklistValues.defaultValue , +#> # picklistValues.label , picklistValues.value , +#> # picklistValues.active.1 , picklistValues.defaultValue.1 , +#> # picklistValues.label.1 , picklistValues.value.1 , +#> # picklistValues.active.2 , picklistValues.defaultValue.2 , +#> # picklistValues.label.2 , picklistValues.value.2 , +#> # picklistValues.active.3 , picklistValues.defaultValue.3 , +#> # picklistValues.label.3 , picklistValues.value.3 , +#> # picklistValues.active.4 , picklistValues.defaultValue.4 , +#> # picklistValues.label.4 , picklistValues.value.4 , +#> # picklistValues.active.5 , picklistValues.defaultValue.5 , +#> # picklistValues.label.5 , picklistValues.value.5 , +#> # picklistValues.active.6 , picklistValues.defaultValue.6 , +#> # picklistValues.label.6 , picklistValues.value.6 , +#> # picklistValues.active.7 , picklistValues.defaultValue.7 , +#> # picklistValues.label.7 , picklistValues.value.7 , +#> # picklistValues.active.8 , picklistValues.defaultValue.8 , +#> # picklistValues.label.8 , picklistValues.value.8 , +#> # picklistValues.active.9 , picklistValues.defaultValue.9 , +#> # picklistValues.label.9 , picklistValues.value.9 , +#> # picklistValues.active.10 , picklistValues.defaultValue.10 , +#> # picklistValues.label.10 , picklistValues.value.10 , +#> # picklistValues.active.11 , picklistValues.defaultValue.11 , +#> # picklistValues.label.11 , picklistValues.value.11 , +#> # picklistValues.active.12 , picklistValues.defaultValue.12 , +#> # picklistValues.label.12 , picklistValues.value.12 , +#> # picklistValues.active.13 , picklistValues.defaultValue.13 , +#> # picklistValues.label.13 , picklistValues.value.13 , +#> # picklistValues.active.14 , picklistValues.defaultValue.14 , +#> # picklistValues.label.14 , picklistValues.value.14 , +#> # picklistValues.active.15 , picklistValues.defaultValue.15 , +#> # picklistValues.label.15 , picklistValues.value.15 , +#> # picklistValues.active.16 , picklistValues.defaultValue.16 , +#> # picklistValues.label.16 , picklistValues.value.16 , +#> # picklistValues.active.17 , … ``` In the future more features will be migrated from **RForcecom** to make the