@salesforce/plugin-data 4.0.51 → 4.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +24 -24
  2. package/oclif.manifest.json +472 -472
  3. package/package.json +5 -5
@@ -1765,13 +1765,13 @@
1765
1765
  "record:get:data"
1766
1766
  ]
1767
1767
  },
1768
- "data:update:bulk": {
1768
+ "data:import:bulk": {
1769
1769
  "aliases": [],
1770
1770
  "args": {},
1771
- "description": "You can use this command to update millions of Salesforce object records based on a file in comma-separated values (CSV) format.\n\nAll the records in the CSV file must be for the same Salesforce object. Specify the object with the `--sobject` flag. The first column of every line in the CSV file must be an ID of the record you want to update. The CSV file can contain only existing records; if a record in the file doesn't currently exist in the Salesforce object, the command fails. Consider using \"sf data upsert bulk\" if you also want to insert new records.\n\nBulk updates can take a while, depending on how many records are in the CSV file. If the command times out, or you specified the --async flag, the command displays the job ID. To see the status and get the results of the job, run \"sf data update resume\" and pass the job ID to the --job-id flag.\n\nFor information and examples about how to prepare your CSV files, see \"Prepare Data to Ingest\" in the \"Bulk API 2.0 and Bulk API Developer Guide\" (https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/datafiles_prepare_data.htm).",
1771
+ "description": "You can use this command to import millions of records into the object from a file in comma-separated values (CSV) format.\n\nAll the records in the CSV file must be for the same Salesforce object. Specify the object with the `--sobject` flag.\n\nBulk imports can take a while, depending on how many records are in the CSV file. If the command times out, or you specified the --async flag, the command displays the job ID. To see the status and get the results of the job, run \"sf data import resume\" and pass the job ID to the --job-id flag.\n\nFor information and examples about how to prepare your CSV files, see \"Prepare Data to Ingest\" in the \"Bulk API 2.0 and Bulk API Developer Guide\" (https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/datafiles_prepare_data.htm).",
1772
1772
  "examples": [
1773
- "Update Account records from a CSV-formatted file into an org with alias \"my-scratch\"; if the update doesn't complete in 10 minutes, the command ends and displays a job ID:\n<%= config.bin %> <%= command.id %> --file accounts.csv --sobject Account --wait 10 --target-org my-scratch",
1774
- "Update asynchronously and use the default org; the command immediately returns a job ID that you then pass to the \"sf data update resume\" command:\n<%= config.bin %> <%= command.id %> --file accounts.csv --sobject Account --async"
1773
+ "Import Account records from a CSV-formatted file into an org with alias \"my-scratch\"; if the import doesn't complete in 10 minutes, the command ends and displays a job ID:\n<%= config.bin %> <%= command.id %> --file accounts.csv --sobject Account --wait 10 --target-org my-scratch",
1774
+ "Import asynchronously and use the default org; the command immediately returns a job ID that you then pass to the \"sf data import resume\" command:\n<%= config.bin %> <%= command.id %> --file accounts.csv --sobject Account --async"
1775
1775
  ],
1776
1776
  "flags": {
1777
1777
  "json": {
@@ -1792,24 +1792,19 @@
1792
1792
  "async": {
1793
1793
  "char": "a",
1794
1794
  "deprecated": true,
1795
+ "exclusive": [
1796
+ "wait"
1797
+ ],
1795
1798
  "name": "async",
1796
1799
  "summary": "Don't wait for the command to complete.",
1797
1800
  "allowNo": false,
1798
1801
  "type": "boolean"
1799
1802
  },
1800
- "wait": {
1801
- "char": "w",
1802
- "name": "wait",
1803
- "summary": "Time to wait for the command to finish, in minutes.",
1804
- "hasDynamicHelp": true,
1805
- "multiple": false,
1806
- "type": "option"
1807
- },
1808
1803
  "file": {
1809
1804
  "char": "f",
1810
1805
  "name": "file",
1811
1806
  "required": true,
1812
- "summary": "CSV file that contains the Salesforce object records you want to update.",
1807
+ "summary": "CSV file that contains the Salesforce object records you want to import.",
1813
1808
  "hasDynamicHelp": false,
1814
1809
  "multiple": false,
1815
1810
  "type": "option"
@@ -1818,7 +1813,7 @@
1818
1813
  "char": "s",
1819
1814
  "name": "sobject",
1820
1815
  "required": true,
1821
- "summary": "API name of the Salesforce object, either standard or custom, which you are updating.",
1816
+ "summary": "API name of the Salesforce object, either standard or custom, into which you're importing records.",
1822
1817
  "hasDynamicHelp": false,
1823
1818
  "multiple": false,
1824
1819
  "type": "option"
@@ -1830,6 +1825,17 @@
1830
1825
  "multiple": false,
1831
1826
  "type": "option"
1832
1827
  },
1828
+ "wait": {
1829
+ "char": "w",
1830
+ "exclusive": [
1831
+ "async"
1832
+ ],
1833
+ "name": "wait",
1834
+ "summary": "Time to wait for the command to finish, in minutes.",
1835
+ "hasDynamicHelp": true,
1836
+ "multiple": false,
1837
+ "type": "option"
1838
+ },
1833
1839
  "target-org": {
1834
1840
  "char": "o",
1835
1841
  "name": "target-org",
@@ -1872,43 +1878,116 @@
1872
1878
  },
1873
1879
  "hasDynamicHelp": true,
1874
1880
  "hiddenAliases": [],
1875
- "id": "data:update:bulk",
1881
+ "id": "data:import:bulk",
1876
1882
  "pluginAlias": "@salesforce/plugin-data",
1877
1883
  "pluginName": "@salesforce/plugin-data",
1878
1884
  "pluginType": "core",
1879
1885
  "strict": true,
1880
- "summary": "Bulk update records to an org from a CSV file. Uses Bulk API 2.0.",
1886
+ "summary": "Bulk import records into a Salesforce object from a CSV file. Uses Bulk API 2.0.",
1881
1887
  "enableJsonFlag": true,
1882
1888
  "isESM": true,
1883
1889
  "relativePath": [
1884
1890
  "lib",
1885
1891
  "commands",
1886
1892
  "data",
1887
- "update",
1893
+ "import",
1888
1894
  "bulk.js"
1889
1895
  ],
1890
1896
  "aliasPermutations": [],
1891
1897
  "permutations": [
1892
- "data:update:bulk",
1893
- "update:data:bulk",
1894
- "update:bulk:data",
1895
- "data:bulk:update",
1896
- "bulk:data:update",
1897
- "bulk:update:data"
1898
+ "data:import:bulk",
1899
+ "import:data:bulk",
1900
+ "import:bulk:data",
1901
+ "data:bulk:import",
1902
+ "bulk:data:import",
1903
+ "bulk:import:data"
1898
1904
  ]
1899
1905
  },
1900
- "data:update:record": {
1906
+ "data:import:resume": {
1907
+ "aliases": [],
1908
+ "args": {},
1909
+ "description": "When the original \"sf data import bulk\" command either times out or is run with the --async flag, it displays a job ID. To see the status and get the results of the bulk import, run this command by either passing it the job ID or using the --use-most-recent flag to specify the most recent bulk import job.",
1910
+ "examples": [
1911
+ "Resume a bulk import job to your default org using an ID:\n<%= config.bin %> <%= command.id %> --job-id 750xx000000005sAAA",
1912
+ "Resume the most recently run bulk import job for an org with alias my-scratch:\n<%= config.bin %> <%= command.id %> --use-most-recent --target-org my-scratch"
1913
+ ],
1914
+ "flags": {
1915
+ "json": {
1916
+ "description": "Format output as json.",
1917
+ "helpGroup": "GLOBAL",
1918
+ "name": "json",
1919
+ "allowNo": false,
1920
+ "type": "boolean"
1921
+ },
1922
+ "flags-dir": {
1923
+ "helpGroup": "GLOBAL",
1924
+ "name": "flags-dir",
1925
+ "summary": "Import flag values from a directory.",
1926
+ "hasDynamicHelp": false,
1927
+ "multiple": false,
1928
+ "type": "option"
1929
+ },
1930
+ "use-most-recent": {
1931
+ "name": "use-most-recent",
1932
+ "summary": "Use the job ID of the bulk import job that was most recently run.",
1933
+ "allowNo": false,
1934
+ "type": "boolean"
1935
+ },
1936
+ "job-id": {
1937
+ "char": "i",
1938
+ "name": "job-id",
1939
+ "summary": "Job ID of the bulk import.",
1940
+ "hasDynamicHelp": false,
1941
+ "multiple": false,
1942
+ "type": "option"
1943
+ },
1944
+ "wait": {
1945
+ "char": "w",
1946
+ "name": "wait",
1947
+ "summary": "Time to wait for the command to finish, in minutes.",
1948
+ "default": "5 minutes",
1949
+ "hasDynamicHelp": true,
1950
+ "multiple": false,
1951
+ "type": "option"
1952
+ }
1953
+ },
1954
+ "hasDynamicHelp": true,
1955
+ "hiddenAliases": [],
1956
+ "id": "data:import:resume",
1957
+ "pluginAlias": "@salesforce/plugin-data",
1958
+ "pluginName": "@salesforce/plugin-data",
1959
+ "pluginType": "core",
1960
+ "strict": true,
1961
+ "summary": "Resume a bulk import job that you previously started. Uses Bulk API 2.0.",
1962
+ "enableJsonFlag": true,
1963
+ "isESM": true,
1964
+ "relativePath": [
1965
+ "lib",
1966
+ "commands",
1967
+ "data",
1968
+ "import",
1969
+ "resume.js"
1970
+ ],
1971
+ "aliasPermutations": [],
1972
+ "permutations": [
1973
+ "data:import:resume",
1974
+ "import:data:resume",
1975
+ "import:resume:data",
1976
+ "data:resume:import",
1977
+ "resume:data:import",
1978
+ "resume:import:data"
1979
+ ]
1980
+ },
1981
+ "data:import:tree": {
1901
1982
  "aliases": [
1902
- "force:data:record:update"
1983
+ "force:data:tree:import"
1903
1984
  ],
1904
1985
  "args": {},
1905
1986
  "deprecateAliases": true,
1906
- "description": "Specify the record you want to update with either its ID or with a list of field-value pairs that identify the record. If your list of fields identifies more than one record, the update fails; the error displays how many records were found.\n\nWhen using field-value pairs for both identifying the record and specifiyng the new field values, use the format <fieldName>=<value>. Enclose all field-value pairs in one set of double quotation marks, delimited by spaces. Enclose values that contain spaces in single quotes.\n\nThis command updates a record in Salesforce objects by default. Use the --use-tooling-api flag to update a Tooling API object.",
1987
+ "description": "The JSON files that contain the data are in sObject tree format, which is a collection of nested, parent-child records with a single root record. Use the \"<%= config.bin %> data export tree\" command to generate these JSON files.\n\nIf you used the --plan flag when exporting the data to generate a plan definition file, use the --plan flag to reference the file when you import. If you're not using a plan, use the --files flag to list the files. If you specify multiple JSON files that depend on each other in a parent-child relationship, be sure you list them in the correct order.",
1907
1988
  "examples": [
1908
- "Update the Name field of an Account record with the specified (truncated) ID:\n<%= config.bin %> <%= command.id %> --sobject Account --record-id 001D0 --values \"Name=NewAcme\"",
1909
- "Update the Name field of an Account record whose current name is 'Old Acme':\n<%= config.bin %> <%= command.id %> --sobject Account --where \"Name='Old Acme'\" --values \"Name='New Acme'\"",
1910
- "Update the Name and Website fields of an Account record with the specified (truncated) ID:\n<%= config.bin %> <%= command.id %> --sobject Account --record-id 001D0 --values \"Name='Acme III' Website=www.example.com\"",
1911
- "Update the ExpirationDate field of a record of the Tooling API object TraceFlag using the specified (truncated) ID:\n<%= config.bin %> <%= command.id %> -t --sobject TraceFlag --record-id 7tf170000009cUBAAY --values \"ExpirationDate=2017-12-01T00:58:04.000+0000\""
1989
+ "Import the records contained in two JSON files into the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --files Contact.json,Account.json --target-org my-scratch",
1990
+ "Import records using a plan definition file into your default org:\n<%= config.bin %> <%= command.id %> --plan Account-Contact-plan.json"
1912
1991
  ],
1913
1992
  "flags": {
1914
1993
  "json": {
@@ -1962,132 +2041,91 @@
1962
2041
  "multiple": false,
1963
2042
  "type": "option"
1964
2043
  },
1965
- "sobject": {
1966
- "aliases": [
1967
- "sobjecttype"
1968
- ],
1969
- "char": "s",
1970
- "deprecateAliases": true,
1971
- "name": "sobject",
1972
- "required": true,
1973
- "summary": "API name of the Salesforce or Tooling API object that contains the record you're updating.",
1974
- "hasDynamicHelp": false,
1975
- "multiple": false,
1976
- "type": "option"
1977
- },
1978
- "record-id": {
2044
+ "files": {
1979
2045
  "aliases": [
1980
- "sobjectid"
2046
+ "sobjecttreefiles"
1981
2047
  ],
1982
- "char": "i",
2048
+ "char": "f",
1983
2049
  "deprecateAliases": true,
1984
- "name": "record-id",
1985
- "summary": "ID of the record you’re updating.",
1986
- "hasDynamicHelp": false,
1987
- "multiple": false,
1988
- "type": "option"
1989
- },
1990
- "where": {
1991
- "char": "w",
1992
- "name": "where",
1993
- "summary": "List of <fieldName>=<value> pairs that identify the record you want to update.",
2050
+ "name": "files",
2051
+ "summary": "Comma-separated and in-order JSON files that contain the records, in sObject tree format, that you want to insert.",
2052
+ "delimiter": ",",
1994
2053
  "hasDynamicHelp": false,
1995
- "multiple": false,
2054
+ "multiple": true,
1996
2055
  "type": "option"
1997
2056
  },
1998
- "values": {
1999
- "char": "v",
2000
- "name": "values",
2001
- "required": true,
2002
- "summary": "Fields that you're updating, in the format of <fieldName>=<value> pairs.",
2057
+ "plan": {
2058
+ "char": "p",
2059
+ "description": "Unlike when you use the `--files` flag, the files listed in the plan definition file **can** contain more then 200 records. When the CLI executes the import, it automatically batches the records to comply with the 200 record limit set by the API.\n\nThe order in which you list the files in the plan definition file matters. Specifically, records with lookups to records in another file should be listed AFTER that file. For example, let's say you're loading Account and Contact records, and the contacts have references to those accounts. Be sure you list the Accounts file before the Contacts file.\n\nThe plan definition file has the following schema:\n\n- items(object) - SObject Type: Definition of records to be insert per SObject Type\n - sobject(string) - Name of SObject: Child file references must have SObject roots of this type\n - files(array) - Files: An array of files paths to load",
2060
+ "name": "plan",
2061
+ "summary": "Plan definition file to insert multiple data files.",
2003
2062
  "hasDynamicHelp": false,
2004
2063
  "multiple": false,
2005
2064
  "type": "option"
2006
- },
2007
- "use-tooling-api": {
2008
- "aliases": [
2009
- "usetoolingapi"
2010
- ],
2011
- "char": "t",
2012
- "deprecateAliases": true,
2013
- "name": "use-tooling-api",
2014
- "summary": "Use Tooling API so you can update a record in a Tooling API object.",
2015
- "allowNo": false,
2016
- "type": "boolean"
2017
- },
2018
- "perflog": {
2019
- "deprecated": {
2020
- "version": "57"
2021
- },
2022
- "hidden": true,
2023
- "name": "perflog",
2024
- "summary": "Get API performance data.",
2025
- "allowNo": false,
2026
- "type": "boolean"
2027
2065
  }
2028
2066
  },
2029
2067
  "hasDynamicHelp": true,
2030
2068
  "hiddenAliases": [],
2031
- "id": "data:update:record",
2069
+ "id": "data:import:tree",
2032
2070
  "pluginAlias": "@salesforce/plugin-data",
2033
2071
  "pluginName": "@salesforce/plugin-data",
2034
2072
  "pluginType": "core",
2035
2073
  "strict": true,
2036
- "summary": "Updates a single record of a Salesforce or Tooling API object.",
2074
+ "summary": "Import data from one or more JSON files into an org.",
2037
2075
  "enableJsonFlag": true,
2038
2076
  "isESM": true,
2039
2077
  "relativePath": [
2040
2078
  "lib",
2041
2079
  "commands",
2042
2080
  "data",
2043
- "update",
2044
- "record.js"
2081
+ "import",
2082
+ "tree.js"
2045
2083
  ],
2046
2084
  "aliasPermutations": [
2047
- "force:data:record:update",
2048
- "data:force:record:update",
2049
- "data:record:force:update",
2050
- "data:record:update:force",
2051
- "force:record:data:update",
2052
- "record:force:data:update",
2053
- "record:data:force:update",
2054
- "record:data:update:force",
2055
- "force:record:update:data",
2056
- "record:force:update:data",
2057
- "record:update:force:data",
2058
- "record:update:data:force",
2059
- "force:data:update:record",
2060
- "data:force:update:record",
2061
- "data:update:force:record",
2062
- "data:update:record:force",
2063
- "force:update:data:record",
2064
- "update:force:data:record",
2065
- "update:data:force:record",
2066
- "update:data:record:force",
2067
- "force:update:record:data",
2068
- "update:force:record:data",
2069
- "update:record:force:data",
2070
- "update:record:data:force"
2071
- ],
2072
- "permutations": [
2073
- "data:update:record",
2074
- "update:data:record",
2075
- "update:record:data",
2076
- "data:record:update",
2077
- "record:data:update",
2078
- "record:update:data"
2079
- ]
2080
- },
2081
- "data:update:resume": {
2082
- "aliases": [],
2083
- "args": {},
2084
- "description": "When the original \"sf data update bulk\" command either times out or is run with the --async flag, it displays a job ID. To see the status and get the results of the bulk update, run this command by either passing it the job ID or using the --use-most-recent flag to specify the most recent bulk update job.\n\nUsing either `--job-id` or `--use-most-recent` will properly resolve to the correct org where the bulk job was started based on the cached data by \"data update bulk\".",
2085
- "examples": [
2086
- "Resume a bulk update job using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 750xx000000005sAAA",
2087
- "Resume the most recently run bulk update job:\n<%= config.bin %> <%= command.id %> --use-most-recent"
2088
- ],
2089
- "flags": {
2090
- "json": {
2085
+ "force:data:tree:import",
2086
+ "data:force:tree:import",
2087
+ "data:tree:force:import",
2088
+ "data:tree:import:force",
2089
+ "force:tree:data:import",
2090
+ "tree:force:data:import",
2091
+ "tree:data:force:import",
2092
+ "tree:data:import:force",
2093
+ "force:tree:import:data",
2094
+ "tree:force:import:data",
2095
+ "tree:import:force:data",
2096
+ "tree:import:data:force",
2097
+ "force:data:import:tree",
2098
+ "data:force:import:tree",
2099
+ "data:import:force:tree",
2100
+ "data:import:tree:force",
2101
+ "force:import:data:tree",
2102
+ "import:force:data:tree",
2103
+ "import:data:force:tree",
2104
+ "import:data:tree:force",
2105
+ "force:import:tree:data",
2106
+ "import:force:tree:data",
2107
+ "import:tree:force:data",
2108
+ "import:tree:data:force"
2109
+ ],
2110
+ "permutations": [
2111
+ "data:import:tree",
2112
+ "import:data:tree",
2113
+ "import:tree:data",
2114
+ "data:tree:import",
2115
+ "tree:data:import",
2116
+ "tree:import:data"
2117
+ ]
2118
+ },
2119
+ "data:update:bulk": {
2120
+ "aliases": [],
2121
+ "args": {},
2122
+ "description": "You can use this command to update millions of Salesforce object records based on a file in comma-separated values (CSV) format.\n\nAll the records in the CSV file must be for the same Salesforce object. Specify the object with the `--sobject` flag. The first column of every line in the CSV file must be an ID of the record you want to update. The CSV file can contain only existing records; if a record in the file doesn't currently exist in the Salesforce object, the command fails. Consider using \"sf data upsert bulk\" if you also want to insert new records.\n\nBulk updates can take a while, depending on how many records are in the CSV file. If the command times out, or you specified the --async flag, the command displays the job ID. To see the status and get the results of the job, run \"sf data update resume\" and pass the job ID to the --job-id flag.\n\nFor information and examples about how to prepare your CSV files, see \"Prepare Data to Ingest\" in the \"Bulk API 2.0 and Bulk API Developer Guide\" (https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/datafiles_prepare_data.htm).",
2123
+ "examples": [
2124
+ "Update Account records from a CSV-formatted file into an org with alias \"my-scratch\"; if the update doesn't complete in 10 minutes, the command ends and displays a job ID:\n<%= config.bin %> <%= command.id %> --file accounts.csv --sobject Account --wait 10 --target-org my-scratch",
2125
+ "Update asynchronously and use the default org; the command immediately returns a job ID that you then pass to the \"sf data update resume\" command:\n<%= config.bin %> <%= command.id %> --file accounts.csv --sobject Account --async"
2126
+ ],
2127
+ "flags": {
2128
+ "json": {
2091
2129
  "description": "Format output as json.",
2092
2130
  "helpGroup": "GLOBAL",
2093
2131
  "name": "json",
@@ -2102,38 +2140,95 @@
2102
2140
  "multiple": false,
2103
2141
  "type": "option"
2104
2142
  },
2105
- "use-most-recent": {
2106
- "name": "use-most-recent",
2107
- "summary": "Use the job ID of the bulk update job that was most recently run.",
2143
+ "async": {
2144
+ "char": "a",
2145
+ "deprecated": true,
2146
+ "name": "async",
2147
+ "summary": "Don't wait for the command to complete.",
2108
2148
  "allowNo": false,
2109
2149
  "type": "boolean"
2110
2150
  },
2111
- "job-id": {
2112
- "char": "i",
2113
- "name": "job-id",
2114
- "summary": "Job ID of the bulk update.",
2115
- "hasDynamicHelp": false,
2116
- "multiple": false,
2117
- "type": "option"
2118
- },
2119
2151
  "wait": {
2120
2152
  "char": "w",
2121
2153
  "name": "wait",
2122
2154
  "summary": "Time to wait for the command to finish, in minutes.",
2123
- "default": "5 minutes",
2124
2155
  "hasDynamicHelp": true,
2125
2156
  "multiple": false,
2126
2157
  "type": "option"
2158
+ },
2159
+ "file": {
2160
+ "char": "f",
2161
+ "name": "file",
2162
+ "required": true,
2163
+ "summary": "CSV file that contains the Salesforce object records you want to update.",
2164
+ "hasDynamicHelp": false,
2165
+ "multiple": false,
2166
+ "type": "option"
2167
+ },
2168
+ "sobject": {
2169
+ "char": "s",
2170
+ "name": "sobject",
2171
+ "required": true,
2172
+ "summary": "API name of the Salesforce object, either standard or custom, which you are updating.",
2173
+ "hasDynamicHelp": false,
2174
+ "multiple": false,
2175
+ "type": "option"
2176
+ },
2177
+ "api-version": {
2178
+ "description": "Override the api version used for api requests made by this command",
2179
+ "name": "api-version",
2180
+ "hasDynamicHelp": false,
2181
+ "multiple": false,
2182
+ "type": "option"
2183
+ },
2184
+ "target-org": {
2185
+ "char": "o",
2186
+ "name": "target-org",
2187
+ "noCacheDefault": true,
2188
+ "required": true,
2189
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2190
+ "hasDynamicHelp": true,
2191
+ "multiple": false,
2192
+ "type": "option"
2193
+ },
2194
+ "line-ending": {
2195
+ "dependsOn": [
2196
+ "file"
2197
+ ],
2198
+ "name": "line-ending",
2199
+ "summary": "Line ending used in the CSV file. Default value on Windows is `CRLF`; on macOS and Linux it's `LF`.",
2200
+ "hasDynamicHelp": false,
2201
+ "multiple": false,
2202
+ "options": [
2203
+ "CRLF",
2204
+ "LF"
2205
+ ],
2206
+ "type": "option"
2207
+ },
2208
+ "column-delimiter": {
2209
+ "name": "column-delimiter",
2210
+ "summary": "Column delimiter used in the CSV file.",
2211
+ "hasDynamicHelp": false,
2212
+ "multiple": false,
2213
+ "options": [
2214
+ "BACKQUOTE",
2215
+ "CARET",
2216
+ "COMMA",
2217
+ "PIPE",
2218
+ "SEMICOLON",
2219
+ "TAB"
2220
+ ],
2221
+ "type": "option"
2127
2222
  }
2128
2223
  },
2129
2224
  "hasDynamicHelp": true,
2130
2225
  "hiddenAliases": [],
2131
- "id": "data:update:resume",
2226
+ "id": "data:update:bulk",
2132
2227
  "pluginAlias": "@salesforce/plugin-data",
2133
2228
  "pluginName": "@salesforce/plugin-data",
2134
2229
  "pluginType": "core",
2135
2230
  "strict": true,
2136
- "summary": "Resume a bulk update job that you previously started. Uses Bulk API 2.0.",
2231
+ "summary": "Bulk update records to an org from a CSV file. Uses Bulk API 2.0.",
2137
2232
  "enableJsonFlag": true,
2138
2233
  "isESM": true,
2139
2234
  "relativePath": [
@@ -2141,25 +2236,30 @@
2141
2236
  "commands",
2142
2237
  "data",
2143
2238
  "update",
2144
- "resume.js"
2239
+ "bulk.js"
2145
2240
  ],
2146
2241
  "aliasPermutations": [],
2147
2242
  "permutations": [
2148
- "data:update:resume",
2149
- "update:data:resume",
2150
- "update:resume:data",
2151
- "data:resume:update",
2152
- "resume:data:update",
2153
- "resume:update:data"
2243
+ "data:update:bulk",
2244
+ "update:data:bulk",
2245
+ "update:bulk:data",
2246
+ "data:bulk:update",
2247
+ "bulk:data:update",
2248
+ "bulk:update:data"
2154
2249
  ]
2155
2250
  },
2156
- "data:upsert:bulk": {
2157
- "aliases": [],
2251
+ "data:update:record": {
2252
+ "aliases": [
2253
+ "force:data:record:update"
2254
+ ],
2158
2255
  "args": {},
2159
- "description": "An upsert refers to inserting a record into a Salesforce object if the record doesn't already exist, or updating it if it does exist.\n\nWhen you execute this command, it starts a job, displays the ID, and then immediately returns control of the terminal to you by default. If you prefer to wait, set the --wait flag to the number of minutes; if it times out, the command outputs the IDs. Use the job and batch IDs to check the status of the job with the \"<%= config.bin %> data upsert resume\" command.\n\nSee \"Prepare CSV Files\" in the Bulk API Developer Guide for details on formatting your CSV file. (https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/datafiles_prepare_csv.htm)",
2256
+ "deprecateAliases": true,
2257
+ "description": "Specify the record you want to update with either its ID or with a list of field-value pairs that identify the record. If your list of fields identifies more than one record, the update fails; the error displays how many records were found.\n\nWhen using field-value pairs for both identifying the record and specifiyng the new field values, use the format <fieldName>=<value>. Enclose all field-value pairs in one set of double quotation marks, delimited by spaces. Enclose values that contain spaces in single quotes.\n\nThis command updates a record in Salesforce objects by default. Use the --use-tooling-api flag to update a Tooling API object.",
2160
2258
  "examples": [
2161
- "Bulk upsert records to the Contact object in your default org:\n<%= config.bin %> <%= command.id %> --sobject Contact --file files/contacts.csv --external-id Id",
2162
- "Bulk upsert records to a custom object in an org with alias my-scratch and wait 5 minutes for the command to complete:\n<%= config.bin %> <%= command.id %> --sobject MyObject__c --file files/file.csv --external-id MyField__c --wait 5 --target-org my-scratch"
2259
+ "Update the Name field of an Account record with the specified (truncated) ID:\n<%= config.bin %> <%= command.id %> --sobject Account --record-id 001D0 --values \"Name=NewAcme\"",
2260
+ "Update the Name field of an Account record whose current name is 'Old Acme':\n<%= config.bin %> <%= command.id %> --sobject Account --where \"Name='Old Acme'\" --values \"Name='New Acme'\"",
2261
+ "Update the Name and Website fields of an Account record with the specified (truncated) ID:\n<%= config.bin %> <%= command.id %> --sobject Account --record-id 001D0 --values \"Name='Acme III' Website=www.example.com\"",
2262
+ "Update the ExpirationDate field of a record of the Tooling API object TraceFlag using the specified (truncated) ID:\n<%= config.bin %> <%= command.id %> -t --sobject TraceFlag --record-id 7tf170000009cUBAAY --values \"ExpirationDate=2017-12-01T00:58:04.000+0000\""
2163
2263
  ],
2164
2264
  "flags": {
2165
2265
  "json": {
@@ -2213,19 +2313,6 @@
2213
2313
  "multiple": false,
2214
2314
  "type": "option"
2215
2315
  },
2216
- "file": {
2217
- "aliases": [
2218
- "csvfile"
2219
- ],
2220
- "char": "f",
2221
- "deprecateAliases": true,
2222
- "name": "file",
2223
- "required": true,
2224
- "summary": "CSV file that contains the IDs of the records to update or delete.",
2225
- "hasDynamicHelp": false,
2226
- "multiple": false,
2227
- "type": "option"
2228
- },
2229
2316
  "sobject": {
2230
2317
  "aliases": [
2231
2318
  "sobjecttype"
@@ -2234,111 +2321,121 @@
2234
2321
  "deprecateAliases": true,
2235
2322
  "name": "sobject",
2236
2323
  "required": true,
2237
- "summary": "API name of the Salesforce object, either standard or custom, that you want to update or delete records from.",
2324
+ "summary": "API name of the Salesforce or Tooling API object that contains the record you're updating.",
2238
2325
  "hasDynamicHelp": false,
2239
2326
  "multiple": false,
2240
2327
  "type": "option"
2241
2328
  },
2242
- "wait": {
2243
- "char": "w",
2244
- "exclusive": [
2245
- "async"
2329
+ "record-id": {
2330
+ "aliases": [
2331
+ "sobjectid"
2246
2332
  ],
2247
- "name": "wait",
2248
- "summary": "Number of minutes to wait for the command to complete before displaying the results.",
2249
- "default": "0 minutes",
2250
- "hasDynamicHelp": true,
2333
+ "char": "i",
2334
+ "deprecateAliases": true,
2335
+ "name": "record-id",
2336
+ "summary": "ID of the record you’re updating.",
2337
+ "hasDynamicHelp": false,
2251
2338
  "multiple": false,
2252
2339
  "type": "option"
2253
2340
  },
2254
- "async": {
2255
- "char": "a",
2256
- "deprecated": true,
2257
- "exclusive": [
2258
- "wait"
2259
- ],
2260
- "name": "async",
2261
- "summary": "Run the command asynchronously.",
2262
- "allowNo": false,
2263
- "type": "boolean"
2264
- },
2265
- "line-ending": {
2266
- "dependsOn": [
2267
- "file"
2268
- ],
2269
- "name": "line-ending",
2270
- "summary": "Line ending used in the CSV file. Default value on Windows is `CRLF`; on macOS and Linux it's `LF`.",
2341
+ "where": {
2342
+ "char": "w",
2343
+ "name": "where",
2344
+ "summary": "List of <fieldName>=<value> pairs that identify the record you want to update.",
2271
2345
  "hasDynamicHelp": false,
2272
2346
  "multiple": false,
2273
- "options": [
2274
- "CRLF",
2275
- "LF"
2276
- ],
2277
2347
  "type": "option"
2278
2348
  },
2279
- "column-delimiter": {
2280
- "name": "column-delimiter",
2281
- "summary": "Column delimiter used in the CSV file.",
2349
+ "values": {
2350
+ "char": "v",
2351
+ "name": "values",
2352
+ "required": true,
2353
+ "summary": "Fields that you're updating, in the format of <fieldName>=<value> pairs.",
2282
2354
  "hasDynamicHelp": false,
2283
2355
  "multiple": false,
2284
- "options": [
2285
- "BACKQUOTE",
2286
- "CARET",
2287
- "COMMA",
2288
- "PIPE",
2289
- "SEMICOLON",
2290
- "TAB"
2291
- ],
2292
2356
  "type": "option"
2293
2357
  },
2294
- "external-id": {
2358
+ "use-tooling-api": {
2295
2359
  "aliases": [
2296
- "externalid"
2360
+ "usetoolingapi"
2297
2361
  ],
2298
- "char": "i",
2362
+ "char": "t",
2299
2363
  "deprecateAliases": true,
2300
- "name": "external-id",
2301
- "required": true,
2302
- "summary": "Name of the external ID field, or the Id field.",
2303
- "hasDynamicHelp": false,
2304
- "multiple": false,
2305
- "type": "option"
2364
+ "name": "use-tooling-api",
2365
+ "summary": "Use Tooling API so you can update a record in a Tooling API object.",
2366
+ "allowNo": false,
2367
+ "type": "boolean"
2368
+ },
2369
+ "perflog": {
2370
+ "deprecated": {
2371
+ "version": "57"
2372
+ },
2373
+ "hidden": true,
2374
+ "name": "perflog",
2375
+ "summary": "Get API performance data.",
2376
+ "allowNo": false,
2377
+ "type": "boolean"
2306
2378
  }
2307
2379
  },
2308
2380
  "hasDynamicHelp": true,
2309
2381
  "hiddenAliases": [],
2310
- "id": "data:upsert:bulk",
2382
+ "id": "data:update:record",
2311
2383
  "pluginAlias": "@salesforce/plugin-data",
2312
2384
  "pluginName": "@salesforce/plugin-data",
2313
2385
  "pluginType": "core",
2314
2386
  "strict": true,
2315
- "summary": "Bulk upsert records to an org from a CSV file. Uses Bulk API 2.0.",
2387
+ "summary": "Updates a single record of a Salesforce or Tooling API object.",
2316
2388
  "enableJsonFlag": true,
2317
2389
  "isESM": true,
2318
2390
  "relativePath": [
2319
2391
  "lib",
2320
2392
  "commands",
2321
2393
  "data",
2322
- "upsert",
2323
- "bulk.js"
2394
+ "update",
2395
+ "record.js"
2396
+ ],
2397
+ "aliasPermutations": [
2398
+ "force:data:record:update",
2399
+ "data:force:record:update",
2400
+ "data:record:force:update",
2401
+ "data:record:update:force",
2402
+ "force:record:data:update",
2403
+ "record:force:data:update",
2404
+ "record:data:force:update",
2405
+ "record:data:update:force",
2406
+ "force:record:update:data",
2407
+ "record:force:update:data",
2408
+ "record:update:force:data",
2409
+ "record:update:data:force",
2410
+ "force:data:update:record",
2411
+ "data:force:update:record",
2412
+ "data:update:force:record",
2413
+ "data:update:record:force",
2414
+ "force:update:data:record",
2415
+ "update:force:data:record",
2416
+ "update:data:force:record",
2417
+ "update:data:record:force",
2418
+ "force:update:record:data",
2419
+ "update:force:record:data",
2420
+ "update:record:force:data",
2421
+ "update:record:data:force"
2324
2422
  ],
2325
- "aliasPermutations": [],
2326
2423
  "permutations": [
2327
- "data:upsert:bulk",
2328
- "upsert:data:bulk",
2329
- "upsert:bulk:data",
2330
- "data:bulk:upsert",
2331
- "bulk:data:upsert",
2332
- "bulk:upsert:data"
2424
+ "data:update:record",
2425
+ "update:data:record",
2426
+ "update:record:data",
2427
+ "data:record:update",
2428
+ "record:data:update",
2429
+ "record:update:data"
2333
2430
  ]
2334
2431
  },
2335
- "data:upsert:resume": {
2432
+ "data:update:resume": {
2336
2433
  "aliases": [],
2337
2434
  "args": {},
2338
- "description": "The command uses the job ID returned from the \"<%= config.bin %> data upsert bulk\" command or the most recently-run bulk upsert job.",
2435
+ "description": "When the original \"sf data update bulk\" command either times out or is run with the --async flag, it displays a job ID. To see the status and get the results of the bulk update, run this command by either passing it the job ID or using the --use-most-recent flag to specify the most recent bulk update job.\n\nUsing either `--job-id` or `--use-most-recent` will properly resolve to the correct org where the bulk job was started based on the cached data by \"data update bulk\".",
2339
2436
  "examples": [
2340
- "Resume a bulk upsert job from your default org using an ID:\n<%= config.bin %> <%= command.id %> --job-id 750xx000000005sAAA",
2341
- "Resume the most recently run bulk upsert job for an org with alias my-scratch:\n<%= config.bin %> <%= command.id %> --use-most-recent --target-org my-scratch"
2437
+ "Resume a bulk update job using a job ID:\n<%= config.bin %> <%= command.id %> --job-id 750xx000000005sAAA",
2438
+ "Resume the most recently run bulk update job:\n<%= config.bin %> <%= command.id %> --use-most-recent"
2342
2439
  ],
2343
2440
  "flags": {
2344
2441
  "json": {
@@ -2356,101 +2453,64 @@
2356
2453
  "multiple": false,
2357
2454
  "type": "option"
2358
2455
  },
2359
- "target-org": {
2360
- "aliases": [
2361
- "targetusername",
2362
- "u"
2363
- ],
2364
- "char": "o",
2365
- "deprecateAliases": true,
2366
- "name": "target-org",
2367
- "noCacheDefault": true,
2368
- "summary": "Username or alias of the target org. Not required if the \"target-org\" configuration variable is already set.",
2369
- "hasDynamicHelp": true,
2370
- "multiple": false,
2371
- "type": "option"
2456
+ "use-most-recent": {
2457
+ "name": "use-most-recent",
2458
+ "summary": "Use the job ID of the bulk update job that was most recently run.",
2459
+ "allowNo": false,
2460
+ "type": "boolean"
2372
2461
  },
2373
2462
  "job-id": {
2374
- "aliases": [
2375
- "jobid"
2376
- ],
2377
2463
  "char": "i",
2378
- "deprecateAliases": true,
2379
2464
  "name": "job-id",
2380
- "summary": "ID of the job you want to resume.",
2465
+ "summary": "Job ID of the bulk update.",
2381
2466
  "hasDynamicHelp": false,
2382
2467
  "multiple": false,
2383
2468
  "type": "option"
2384
2469
  },
2385
- "use-most-recent": {
2386
- "exclusive": [
2387
- "job-id"
2388
- ],
2389
- "name": "use-most-recent",
2390
- "summary": "Use the ID of the most recently-run bulk job.",
2391
- "allowNo": false,
2392
- "type": "boolean"
2393
- },
2394
2470
  "wait": {
2471
+ "char": "w",
2395
2472
  "name": "wait",
2396
- "summary": "Number of minutes to wait for the command to complete before displaying the results.",
2473
+ "summary": "Time to wait for the command to finish, in minutes.",
2397
2474
  "default": "5 minutes",
2398
2475
  "hasDynamicHelp": true,
2399
2476
  "multiple": false,
2400
2477
  "type": "option"
2401
- },
2402
- "api-version": {
2403
- "description": "Override the api version used for api requests made by this command",
2404
- "name": "api-version",
2405
- "hasDynamicHelp": false,
2406
- "multiple": false,
2407
- "type": "option"
2408
- },
2409
- "loglevel": {
2410
- "deprecated": {
2411
- "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
2412
- },
2413
- "hidden": true,
2414
- "name": "loglevel",
2415
- "hasDynamicHelp": false,
2416
- "multiple": false,
2417
- "type": "option"
2418
2478
  }
2419
2479
  },
2420
2480
  "hasDynamicHelp": true,
2421
2481
  "hiddenAliases": [],
2422
- "id": "data:upsert:resume",
2482
+ "id": "data:update:resume",
2423
2483
  "pluginAlias": "@salesforce/plugin-data",
2424
2484
  "pluginName": "@salesforce/plugin-data",
2425
2485
  "pluginType": "core",
2426
2486
  "strict": true,
2427
- "summary": "Resume a bulk upsert job that you previously started. Uses Bulk API 2.0.",
2487
+ "summary": "Resume a bulk update job that you previously started. Uses Bulk API 2.0.",
2428
2488
  "enableJsonFlag": true,
2429
2489
  "isESM": true,
2430
2490
  "relativePath": [
2431
2491
  "lib",
2432
2492
  "commands",
2433
2493
  "data",
2434
- "upsert",
2494
+ "update",
2435
2495
  "resume.js"
2436
2496
  ],
2437
2497
  "aliasPermutations": [],
2438
2498
  "permutations": [
2439
- "data:upsert:resume",
2440
- "upsert:data:resume",
2441
- "upsert:resume:data",
2442
- "data:resume:upsert",
2443
- "resume:data:upsert",
2444
- "resume:upsert:data"
2499
+ "data:update:resume",
2500
+ "update:data:resume",
2501
+ "update:resume:data",
2502
+ "data:resume:update",
2503
+ "resume:data:update",
2504
+ "resume:update:data"
2445
2505
  ]
2446
2506
  },
2447
- "data:import:bulk": {
2507
+ "data:upsert:bulk": {
2448
2508
  "aliases": [],
2449
2509
  "args": {},
2450
- "description": "You can use this command to import millions of records into the object from a file in comma-separated values (CSV) format.\n\nAll the records in the CSV file must be for the same Salesforce object. Specify the object with the `--sobject` flag.\n\nBulk imports can take a while, depending on how many records are in the CSV file. If the command times out, or you specified the --async flag, the command displays the job ID. To see the status and get the results of the job, run \"sf data import resume\" and pass the job ID to the --job-id flag.\n\nFor information and examples about how to prepare your CSV files, see \"Prepare Data to Ingest\" in the \"Bulk API 2.0 and Bulk API Developer Guide\" (https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/datafiles_prepare_data.htm).",
2510
+ "description": "An upsert refers to inserting a record into a Salesforce object if the record doesn't already exist, or updating it if it does exist.\n\nWhen you execute this command, it starts a job, displays the ID, and then immediately returns control of the terminal to you by default. If you prefer to wait, set the --wait flag to the number of minutes; if it times out, the command outputs the IDs. Use the job and batch IDs to check the status of the job with the \"<%= config.bin %> data upsert resume\" command.\n\nSee \"Prepare CSV Files\" in the Bulk API Developer Guide for details on formatting your CSV file. (https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/datafiles_prepare_csv.htm)",
2451
2511
  "examples": [
2452
- "Import Account records from a CSV-formatted file into an org with alias \"my-scratch\"; if the import doesn't complete in 10 minutes, the command ends and displays a job ID:\n<%= config.bin %> <%= command.id %> --file accounts.csv --sobject Account --wait 10 --target-org my-scratch",
2453
- "Import asynchronously and use the default org; the command immediately returns a job ID that you then pass to the \"sf data import resume\" command:\n<%= config.bin %> <%= command.id %> --file accounts.csv --sobject Account --async"
2512
+ "Bulk upsert records to the Contact object in your default org:\n<%= config.bin %> <%= command.id %> --sobject Contact --file files/contacts.csv --external-id Id",
2513
+ "Bulk upsert records to a custom object in an org with alias my-scratch and wait 5 minutes for the command to complete:\n<%= config.bin %> <%= command.id %> --sobject MyObject__c --file files/file.csv --external-id MyField__c --wait 5 --target-org my-scratch"
2454
2514
  ],
2455
2515
  "flags": {
2456
2516
  "json": {
@@ -2468,38 +2528,64 @@
2468
2528
  "multiple": false,
2469
2529
  "type": "option"
2470
2530
  },
2471
- "async": {
2472
- "char": "a",
2473
- "deprecated": true,
2474
- "exclusive": [
2475
- "wait"
2531
+ "target-org": {
2532
+ "aliases": [
2533
+ "targetusername",
2534
+ "u"
2476
2535
  ],
2477
- "name": "async",
2478
- "summary": "Don't wait for the command to complete.",
2479
- "allowNo": false,
2480
- "type": "boolean"
2536
+ "char": "o",
2537
+ "deprecateAliases": true,
2538
+ "name": "target-org",
2539
+ "noCacheDefault": true,
2540
+ "required": true,
2541
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2542
+ "hasDynamicHelp": true,
2543
+ "multiple": false,
2544
+ "type": "option"
2545
+ },
2546
+ "api-version": {
2547
+ "aliases": [
2548
+ "apiversion"
2549
+ ],
2550
+ "deprecateAliases": true,
2551
+ "description": "Override the api version used for api requests made by this command",
2552
+ "name": "api-version",
2553
+ "hasDynamicHelp": false,
2554
+ "multiple": false,
2555
+ "type": "option"
2556
+ },
2557
+ "loglevel": {
2558
+ "deprecated": {
2559
+ "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
2560
+ },
2561
+ "hidden": true,
2562
+ "name": "loglevel",
2563
+ "hasDynamicHelp": false,
2564
+ "multiple": false,
2565
+ "type": "option"
2481
2566
  },
2482
2567
  "file": {
2568
+ "aliases": [
2569
+ "csvfile"
2570
+ ],
2483
2571
  "char": "f",
2572
+ "deprecateAliases": true,
2484
2573
  "name": "file",
2485
2574
  "required": true,
2486
- "summary": "CSV file that contains the Salesforce object records you want to import.",
2575
+ "summary": "CSV file that contains the IDs of the records to update or delete.",
2487
2576
  "hasDynamicHelp": false,
2488
2577
  "multiple": false,
2489
2578
  "type": "option"
2490
2579
  },
2491
2580
  "sobject": {
2581
+ "aliases": [
2582
+ "sobjecttype"
2583
+ ],
2492
2584
  "char": "s",
2585
+ "deprecateAliases": true,
2493
2586
  "name": "sobject",
2494
2587
  "required": true,
2495
- "summary": "API name of the Salesforce object, either standard or custom, into which you're importing records.",
2496
- "hasDynamicHelp": false,
2497
- "multiple": false,
2498
- "type": "option"
2499
- },
2500
- "api-version": {
2501
- "description": "Override the api version used for api requests made by this command",
2502
- "name": "api-version",
2588
+ "summary": "API name of the Salesforce object, either standard or custom, that you want to update or delete records from.",
2503
2589
  "hasDynamicHelp": false,
2504
2590
  "multiple": false,
2505
2591
  "type": "option"
@@ -2510,20 +2596,22 @@
2510
2596
  "async"
2511
2597
  ],
2512
2598
  "name": "wait",
2513
- "summary": "Time to wait for the command to finish, in minutes.",
2599
+ "summary": "Number of minutes to wait for the command to complete before displaying the results.",
2600
+ "default": "0 minutes",
2514
2601
  "hasDynamicHelp": true,
2515
2602
  "multiple": false,
2516
2603
  "type": "option"
2517
2604
  },
2518
- "target-org": {
2519
- "char": "o",
2520
- "name": "target-org",
2521
- "noCacheDefault": true,
2522
- "required": true,
2523
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2524
- "hasDynamicHelp": true,
2525
- "multiple": false,
2526
- "type": "option"
2605
+ "async": {
2606
+ "char": "a",
2607
+ "deprecated": true,
2608
+ "exclusive": [
2609
+ "wait"
2610
+ ],
2611
+ "name": "async",
2612
+ "summary": "Run the command asynchronously.",
2613
+ "allowNo": false,
2614
+ "type": "boolean"
2527
2615
  },
2528
2616
  "line-ending": {
2529
2617
  "dependsOn": [
@@ -2553,120 +2641,55 @@
2553
2641
  "TAB"
2554
2642
  ],
2555
2643
  "type": "option"
2556
- }
2557
- },
2558
- "hasDynamicHelp": true,
2559
- "hiddenAliases": [],
2560
- "id": "data:import:bulk",
2561
- "pluginAlias": "@salesforce/plugin-data",
2562
- "pluginName": "@salesforce/plugin-data",
2563
- "pluginType": "core",
2564
- "strict": true,
2565
- "summary": "Bulk import records into a Salesforce object from a CSV file. Uses Bulk API 2.0.",
2566
- "enableJsonFlag": true,
2567
- "isESM": true,
2568
- "relativePath": [
2569
- "lib",
2570
- "commands",
2571
- "data",
2572
- "import",
2573
- "bulk.js"
2574
- ],
2575
- "aliasPermutations": [],
2576
- "permutations": [
2577
- "data:import:bulk",
2578
- "import:data:bulk",
2579
- "import:bulk:data",
2580
- "data:bulk:import",
2581
- "bulk:data:import",
2582
- "bulk:import:data"
2583
- ]
2584
- },
2585
- "data:import:resume": {
2586
- "aliases": [],
2587
- "args": {},
2588
- "description": "When the original \"sf data import bulk\" command either times out or is run with the --async flag, it displays a job ID. To see the status and get the results of the bulk import, run this command by either passing it the job ID or using the --use-most-recent flag to specify the most recent bulk import job.",
2589
- "examples": [
2590
- "Resume a bulk import job to your default org using an ID:\n<%= config.bin %> <%= command.id %> --job-id 750xx000000005sAAA",
2591
- "Resume the most recently run bulk import job for an org with alias my-scratch:\n<%= config.bin %> <%= command.id %> --use-most-recent --target-org my-scratch"
2592
- ],
2593
- "flags": {
2594
- "json": {
2595
- "description": "Format output as json.",
2596
- "helpGroup": "GLOBAL",
2597
- "name": "json",
2598
- "allowNo": false,
2599
- "type": "boolean"
2600
- },
2601
- "flags-dir": {
2602
- "helpGroup": "GLOBAL",
2603
- "name": "flags-dir",
2604
- "summary": "Import flag values from a directory.",
2605
- "hasDynamicHelp": false,
2606
- "multiple": false,
2607
- "type": "option"
2608
2644
  },
2609
- "use-most-recent": {
2610
- "name": "use-most-recent",
2611
- "summary": "Use the job ID of the bulk import job that was most recently run.",
2612
- "allowNo": false,
2613
- "type": "boolean"
2614
- },
2615
- "job-id": {
2645
+ "external-id": {
2646
+ "aliases": [
2647
+ "externalid"
2648
+ ],
2616
2649
  "char": "i",
2617
- "name": "job-id",
2618
- "summary": "Job ID of the bulk import.",
2650
+ "deprecateAliases": true,
2651
+ "name": "external-id",
2652
+ "required": true,
2653
+ "summary": "Name of the external ID field, or the Id field.",
2619
2654
  "hasDynamicHelp": false,
2620
2655
  "multiple": false,
2621
2656
  "type": "option"
2622
- },
2623
- "wait": {
2624
- "char": "w",
2625
- "name": "wait",
2626
- "summary": "Time to wait for the command to finish, in minutes.",
2627
- "default": "5 minutes",
2628
- "hasDynamicHelp": true,
2629
- "multiple": false,
2630
- "type": "option"
2631
2657
  }
2632
2658
  },
2633
2659
  "hasDynamicHelp": true,
2634
2660
  "hiddenAliases": [],
2635
- "id": "data:import:resume",
2661
+ "id": "data:upsert:bulk",
2636
2662
  "pluginAlias": "@salesforce/plugin-data",
2637
2663
  "pluginName": "@salesforce/plugin-data",
2638
2664
  "pluginType": "core",
2639
2665
  "strict": true,
2640
- "summary": "Resume a bulk import job that you previously started. Uses Bulk API 2.0.",
2666
+ "summary": "Bulk upsert records to an org from a CSV file. Uses Bulk API 2.0.",
2641
2667
  "enableJsonFlag": true,
2642
2668
  "isESM": true,
2643
2669
  "relativePath": [
2644
2670
  "lib",
2645
2671
  "commands",
2646
2672
  "data",
2647
- "import",
2648
- "resume.js"
2673
+ "upsert",
2674
+ "bulk.js"
2649
2675
  ],
2650
2676
  "aliasPermutations": [],
2651
2677
  "permutations": [
2652
- "data:import:resume",
2653
- "import:data:resume",
2654
- "import:resume:data",
2655
- "data:resume:import",
2656
- "resume:data:import",
2657
- "resume:import:data"
2678
+ "data:upsert:bulk",
2679
+ "upsert:data:bulk",
2680
+ "upsert:bulk:data",
2681
+ "data:bulk:upsert",
2682
+ "bulk:data:upsert",
2683
+ "bulk:upsert:data"
2658
2684
  ]
2659
2685
  },
2660
- "data:import:tree": {
2661
- "aliases": [
2662
- "force:data:tree:import"
2663
- ],
2686
+ "data:upsert:resume": {
2687
+ "aliases": [],
2664
2688
  "args": {},
2665
- "deprecateAliases": true,
2666
- "description": "The JSON files that contain the data are in sObject tree format, which is a collection of nested, parent-child records with a single root record. Use the \"<%= config.bin %> data export tree\" command to generate these JSON files.\n\nIf you used the --plan flag when exporting the data to generate a plan definition file, use the --plan flag to reference the file when you import. If you're not using a plan, use the --files flag to list the files. If you specify multiple JSON files that depend on each other in a parent-child relationship, be sure you list them in the correct order.",
2689
+ "description": "The command uses the job ID returned from the \"<%= config.bin %> data upsert bulk\" command or the most recently-run bulk upsert job.",
2667
2690
  "examples": [
2668
- "Import the records contained in two JSON files into the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --files Contact.json,Account.json --target-org my-scratch",
2669
- "Import records using a plan definition file into your default org:\n<%= config.bin %> <%= command.id %> --plan Account-Contact-plan.json"
2691
+ "Resume a bulk upsert job from your default org using an ID:\n<%= config.bin %> <%= command.id %> --job-id 750xx000000005sAAA",
2692
+ "Resume the most recently run bulk upsert job for an org with alias my-scratch:\n<%= config.bin %> <%= command.id %> --use-most-recent --target-org my-scratch"
2670
2693
  ],
2671
2694
  "flags": {
2672
2695
  "json": {
@@ -2693,17 +2716,41 @@
2693
2716
  "deprecateAliases": true,
2694
2717
  "name": "target-org",
2695
2718
  "noCacheDefault": true,
2696
- "required": true,
2697
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2719
+ "summary": "Username or alias of the target org. Not required if the \"target-org\" configuration variable is already set.",
2698
2720
  "hasDynamicHelp": true,
2699
2721
  "multiple": false,
2700
2722
  "type": "option"
2701
2723
  },
2702
- "api-version": {
2724
+ "job-id": {
2703
2725
  "aliases": [
2704
- "apiversion"
2726
+ "jobid"
2705
2727
  ],
2728
+ "char": "i",
2706
2729
  "deprecateAliases": true,
2730
+ "name": "job-id",
2731
+ "summary": "ID of the job you want to resume.",
2732
+ "hasDynamicHelp": false,
2733
+ "multiple": false,
2734
+ "type": "option"
2735
+ },
2736
+ "use-most-recent": {
2737
+ "exclusive": [
2738
+ "job-id"
2739
+ ],
2740
+ "name": "use-most-recent",
2741
+ "summary": "Use the ID of the most recently-run bulk job.",
2742
+ "allowNo": false,
2743
+ "type": "boolean"
2744
+ },
2745
+ "wait": {
2746
+ "name": "wait",
2747
+ "summary": "Number of minutes to wait for the command to complete before displaying the results.",
2748
+ "default": "5 minutes",
2749
+ "hasDynamicHelp": true,
2750
+ "multiple": false,
2751
+ "type": "option"
2752
+ },
2753
+ "api-version": {
2707
2754
  "description": "Override the api version used for api requests made by this command",
2708
2755
  "name": "api-version",
2709
2756
  "hasDynamicHelp": false,
@@ -2719,80 +2766,33 @@
2719
2766
  "hasDynamicHelp": false,
2720
2767
  "multiple": false,
2721
2768
  "type": "option"
2722
- },
2723
- "files": {
2724
- "aliases": [
2725
- "sobjecttreefiles"
2726
- ],
2727
- "char": "f",
2728
- "deprecateAliases": true,
2729
- "name": "files",
2730
- "summary": "Comma-separated and in-order JSON files that contain the records, in sObject tree format, that you want to insert.",
2731
- "delimiter": ",",
2732
- "hasDynamicHelp": false,
2733
- "multiple": true,
2734
- "type": "option"
2735
- },
2736
- "plan": {
2737
- "char": "p",
2738
- "description": "Unlike when you use the `--files` flag, the files listed in the plan definition file **can** contain more then 200 records. When the CLI executes the import, it automatically batches the records to comply with the 200 record limit set by the API.\n\nThe order in which you list the files in the plan definition file matters. Specifically, records with lookups to records in another file should be listed AFTER that file. For example, let's say you're loading Account and Contact records, and the contacts have references to those accounts. Be sure you list the Accounts file before the Contacts file.\n\nThe plan definition file has the following schema:\n\n- items(object) - SObject Type: Definition of records to be insert per SObject Type\n - sobject(string) - Name of SObject: Child file references must have SObject roots of this type\n - files(array) - Files: An array of files paths to load",
2739
- "name": "plan",
2740
- "summary": "Plan definition file to insert multiple data files.",
2741
- "hasDynamicHelp": false,
2742
- "multiple": false,
2743
- "type": "option"
2744
2769
  }
2745
2770
  },
2746
2771
  "hasDynamicHelp": true,
2747
2772
  "hiddenAliases": [],
2748
- "id": "data:import:tree",
2773
+ "id": "data:upsert:resume",
2749
2774
  "pluginAlias": "@salesforce/plugin-data",
2750
2775
  "pluginName": "@salesforce/plugin-data",
2751
2776
  "pluginType": "core",
2752
2777
  "strict": true,
2753
- "summary": "Import data from one or more JSON files into an org.",
2778
+ "summary": "Resume a bulk upsert job that you previously started. Uses Bulk API 2.0.",
2754
2779
  "enableJsonFlag": true,
2755
2780
  "isESM": true,
2756
2781
  "relativePath": [
2757
2782
  "lib",
2758
2783
  "commands",
2759
2784
  "data",
2760
- "import",
2761
- "tree.js"
2762
- ],
2763
- "aliasPermutations": [
2764
- "force:data:tree:import",
2765
- "data:force:tree:import",
2766
- "data:tree:force:import",
2767
- "data:tree:import:force",
2768
- "force:tree:data:import",
2769
- "tree:force:data:import",
2770
- "tree:data:force:import",
2771
- "tree:data:import:force",
2772
- "force:tree:import:data",
2773
- "tree:force:import:data",
2774
- "tree:import:force:data",
2775
- "tree:import:data:force",
2776
- "force:data:import:tree",
2777
- "data:force:import:tree",
2778
- "data:import:force:tree",
2779
- "data:import:tree:force",
2780
- "force:import:data:tree",
2781
- "import:force:data:tree",
2782
- "import:data:force:tree",
2783
- "import:data:tree:force",
2784
- "force:import:tree:data",
2785
- "import:force:tree:data",
2786
- "import:tree:force:data",
2787
- "import:tree:data:force"
2785
+ "upsert",
2786
+ "resume.js"
2788
2787
  ],
2788
+ "aliasPermutations": [],
2789
2789
  "permutations": [
2790
- "data:import:tree",
2791
- "import:data:tree",
2792
- "import:tree:data",
2793
- "data:tree:import",
2794
- "tree:data:import",
2795
- "tree:import:data"
2790
+ "data:upsert:resume",
2791
+ "upsert:data:resume",
2792
+ "upsert:resume:data",
2793
+ "data:resume:upsert",
2794
+ "resume:data:upsert",
2795
+ "resume:upsert:data"
2796
2796
  ]
2797
2797
  },
2798
2798
  "force:data:bulk:delete": {
@@ -3232,5 +3232,5 @@
3232
3232
  ]
3233
3233
  }
3234
3234
  },
3235
- "version": "4.0.51"
3235
+ "version": "4.0.52"
3236
3236
  }