Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create Item with image is stuck at partial processing #693

Closed
ajturner opened this issue Apr 22, 2020 · 6 comments · Fixed by #761
Closed

Create Item with image is stuck at partial processing #693

ajturner opened this issue Apr 22, 2020 · 6 comments · Fixed by #761
Assignees

Comments

@ajturner
Copy link
Member

Attempting to create a new Item with an Image. The addItem is successful but the processing says 'partial' and the actual item is not accessible via the Portal REST API

Portal.createItem({
      item: {
        title: `SharingImage`,
        type: "Image",
        tags: ["dev","api"],
        typeKeywords: ["Data","Image","png"]
      },
      file: file,
      overwrite: false,
      multipart: true, 
      async: true,
      filename: file.name,
      authentication
    }).then((response) => {
      console.log("Created Item", response)
      this.checkStatus(response.id);
    })
  }

responds {success: true, id: "7f58e9931f394d0894d079b45062c0fe"}

Here is the request Form data network

Request URL: https://www.arcgis.com/sharing/rest/content/users/aturner/addItem
Request Method: POST
Status Code: 200 

Referrer Policy: no-referrer-when-downgrade
:authority: www.arcgis.com
:method: POST
:path: /sharing/rest/content/users/aturner/addItem
:scheme: https
accept: */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9,es;q=0.8,he;q=0.7
cache-control: no-cache
content-length: 99560
content-type: multipart/form-data; boundary=----WebKitFormBoundaryMmhFiPDClwvxio9L
origin: http://localui.arcgis.com:9001
pragma: no-cache
referer: http://localui.arcgis.com:9001/iframe.html?id=hub-components--hubupload&viewMode=story
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: cross-site
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36

Form data
------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="f"

json
------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="title"

Item_77250
------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="type"

Image
------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="tags"

dev,api
------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="typeKeywords"

Data,Image,png
------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="file"; filename="Sharing.png"
Content-Type: image/png


------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="async"

true
------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="multipart"

true
------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="filename"

Sharing.png
------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="overwrite"

false
------WebKitFormBoundaryMmhFiPDClwvxio9L
Content-Disposition: form-data; name="token"

{token removed}
------WebKitFormBoundaryMmhFiPDClwvxio9L--

Multipart commit?

I tried to commitItemUpload...

Portal.commitItemUpload({
        id: response.id,
        authentication
      })

but receive the REST API error response
{"error":{"code":400,"messageCode":"CONT_0031","message":"Item does not have any parts to commit","details":[]}}

@ajturner
Copy link
Member Author

I think there are two issues.

  • Multipart is not required for addItem. It works sync, but Arcgis-rest.js blocks this
  • When multipart and aaddItemPart is used, these ignore other item parameters like name + type. These should be sent in commitItemUpload but arcgis-rest.js requires requestOptions to only be the authentication but should allow for title and type

@ajturner
Copy link
Member Author

ok - I got this working by sending in params. This should be doc'd or even lifted some item parameters. What do you think @patrickarlt ?

    Portal.createItem({
      file: file,
      multipart: true, 
      async: true,
      filename: file.name,
      authentication
    }).then((response) => {
      console.log("Created Item", response)
      Portal.addItemPart({
        id: response.id,
        file,
        partNum: 1,
        authentication
      }).then((partResponse) =>  {
        console.log("Created Item", partResponse)
        Portal.commitItemUpload({
          id: response.id,
          authentication,
          params: {
            title: `Item_${Math.floor(Math.random()*100000)}`,
            type: itemType,
          }
        }).then((statusResponse) => {
          console.log("Created Item", statusResponse)
          this.checkStatus(response.id);          
        })
          

haoliangyu added a commit that referenced this issue Oct 2, 2020
The addItemPart and Commit API were using the wrong request parameters. This PR makes sure request parameters are correct for AGOL/Portal.

AFFECTS PACKAGES:
@esri/arcgis-rest-portal

ISSUES CLOSED: #693, #694, #700
@jesseadamsnpgs
Copy link

I'm trying to get a multiPart upload function to work with large files in node.js. Most of the workflow seems to work, however, every time I send a file in multiple parts using "createReadStream" the result is a corrupt zip file. Here is the workflow I'm using and the code for the addItemPart function.

  1. Add Item with the mulitPart parameter.
  2. Split file into parts and upload each using the following function:

`require('cross-fetch/polyfill');
require('isomorphic-form-data');

let fs = require('fs'),
arcgisAuth = require('@esri/arcgis-rest-auth'),
arcgisPortal = require('@esri/arcgis-rest-portal');

const RESTORE_DIR = './test/';
let fileName = 'testFile.zip';

const fileSize = fs.lstatSync(RESTORE_DIR + fileName).size;
uploadPart(userId, token, addItemId, 1, fileName, 0, (fileSize / 2));
uploadPart(userId, token, addItemId, 2, fileName, (fileSize / 2), Infinity);

function uploadPart(userId, token, addItemId, partNum, fileName, rangeStart, end) {
return new Promise(function (resolve, reject) {
const authentication = new arcgisAuth.UserSession({
username: userId,
token: token
});

// upload the part
arcgisPortal.addItemPart({
  id: addItemId,
  file: fs.createReadStream(RESTORE_DIR + fileName, {
    start: rangeStart,
    end: end,
    autoClose: true
  }),
  partNum: partNum,
  authentication
}).then(res => {
  resolve(res);
});

});
}`

  1. Commit the multipart upload.

Once that workflow completes if I try publishing a service from the zip file or downloading the file it reports that the resulting file is corrupt.

Any thoughts/suggestions on what format the addItemPart function is looking for with the file parameter?

Thank you.

@AviCueva
Copy link

AviCueva commented Feb 9, 2022

Man... this was a fun one to figure out. For those of you still having issues. This is how I was able to publish utilizing GeoJson.

  const {UserSession} = require("@esri/arcgis-rest-auth")
  const {
  createItem,
  commitItemUpload,
  addItemPart
  } = require("@esri/arcgis-rest-portal")
  let fs = require('fs')

  exports.publishGeoJson2FeatureService = async (data, authentication) => {

  const {username, password} = authentication

  // data = {
  //     "type": "FeatureCollection",
  //     "crs": {"type": "name", "properties": {"name": "EPSG:4326"}},
  //     "features": [{
  //         "type": "Feature",
  //         "id": 1,
  //         "geometry": {"type": "Point", "coordinates": [-122.682207049, 45.526159497]},
  //         "properties": {
  //             "FID": 1,
  //             "PlaceName": "Boyds Coffee",
  //             "Place_addr": "404 NW 11th Ave Portland Oregon",
  //             "Score": 100,
  //             "lat": 45.526159497,
  //             "lon": -122.682207049
  //         }
  //     }]
  // }
  const session = new UserSession({
      username: username,
      password: password,
      portal: "https://<PORTAL>/<PORTAL_ENDPOINT>/sharing/rest"
  })

  const str = JSON.stringify(data)
  const bytes = new TextEncoder().encode(str)

  let itemNum = Math.floor(Math.random() * 100000)

  await new fs.writeFile(`Item_${itemNum}.geoJson`, bytes, (res, err) => {
      console.log(err | res)
  })
  let file = fs.createReadStream(`Item_${itemNum}.geoJson`)

  createItem({
      item: {
          title: `Item_${itemNum}`,
          type: "GeoJson",
      },
      file: file.toString(),
      multipart: true,
      async: true,
      filename: `Item_${itemNum}.geoJson`,
      overwrite: true,
      authentication: session
  }).then(async (response) => {
      console.log(response)
      console.log("Pre Timer")
     // Could probably add a checkStatus() and then do addItemPart.  I just wait 15 seconds...
      await new Promise(resolve => setTimeout(resolve, 15000))
      console.log("Post Timer")

      addItemPart({
          id: response.id,
          file: file,
          partNum: 1,
          authentication: session
      }).then(results => {
          console.log("AddItemPart: ")
          console.log(results)

          commitItemUpload({
              item: {
                  title: `Item_${itemNum}`,
                  type: "GeoJson",
              }, id: results.id,
              authentication: session
          }).then((res) => console.log("Successfully published item: " + res.id))

      })

  })
}

github-actions bot pushed a commit that referenced this issue Feb 17, 2022
# 1.0.0-beta.1 (2022-02-17)

### Bug Fixes

* minor edit in package.json ([9c59978](9c59978))
* switch to eslint, fix minor issues, disable other rules ([ab47412](ab47412))
* **:bathtub::** remove magicKey from suggest, surface it more prominently in geocode ([fb2ba9a](fb2ba9a)), closes [#459](#459)
* **:bug::** allow for group sharing of public items outside an organization ([e47a772](e47a772))
* **:bug::** dont set referer to null in browser apps ([0b1bf2b](0b1bf2b))
* **:bug::** ensure that custom headers arent misidentified as request parameters ([4ff33b1](4ff33b1)), closes [#290](#290)
* **🐛:** ensure createFeatureService doesnt swallow errors ([8173aa5](8173aa5))
* **add resource:** make resource an optional parameter ([1db78b7](1db78b7))
* **aggs counts should be array:** aggs counts should be array ([72b3bf7](72b3bf7))
* **arcgis-rest-auth:** enable oAuth from within an IFrame ([e6538d5](e6538d5)), closes [#711](#711)
* **arcgis-rest-auth:** export validateAppAccess ([6d1e2ef](6d1e2ef))
* **arcgis-rest-auth:** postMessage internals ([bd8eb6c](bd8eb6c))
* **arcgis-rest-feature-layer:** streamline promises ([ebb8380](ebb8380))
* **arcgis-rest-portal:** add fetchMock setup for intermittent failing tests ([5384984](5384984))
* **arcgis-rest-portal:** do not do any membership adjustments if the group is the user's favorites g ([6fc8ada](6fc8ada))
* **arcgis-rest-portal:** make \`layers\` parameter of \`IExportParameters\` optional ([0b584e6](0b584e6))
* **arcgis-rest-portal:** share as admin uses content/users/:ownername/items/:id/share end-point ([fd1a960](fd1a960))
* **arcgis-rest-portal:** use deleteRelationship not removeRelationship ([890e485](890e485)), closes [#739](#739)
* **arcgis-rest-portal:** wrong parameters for file upload APIs ([#761](#761)) ([cbfef7d](cbfef7d)), closes [#693](#693) [#694](#694) [#700](#700)
* **auth:** add additional authentication providers ([85f73b2](85f73b2))
* **bulk geocoding:** clean up code in bulk geocoding ([5e28028](5e28028)), closes [#630](#630)
* **common:** Fix location test xy ([27cab54](27cab54))
* **edit:** ensure IEditFeatureResult is exported ([2c65102](2c65102))
* **geocode:** ensure the magicKey property is passed through. ([#603](#603)) ([cc2c352](cc2c352)), closes [#601](#601)
* **ITable.id type:** change ITable.id type to number ([02c609a](02c609a)), closes [#808](#808)
* **lock:** make passing authentication mandatory to methods that update groups ([14bdf88](14bdf88))
* **lock:** pass through url and options for non-federated requests ([802006c](802006c))
* **null:** dont stringify values in item calls ([c0f48fc](c0f48fc))
* **portal:** searchGroupUsers will now respect joined and memberType parameters ([79b15b5](79b15b5))
* **portal:** setting item access to public shares correctly ([6a2b115](6a2b115))
* **removeItemResource:** support correct parameters ([#835](#835)) ([96798fe](96798fe))
* **routing:** Fix switched x and y ([cc22727](cc22727))
* **search:** add support for untyped, grouped search strings ([39fc213](39fc213)), closes [#544](#544)
* **search:** allow NOT as a standalone modifier ([36a6bca](36a6bca)), closes [#542](#542)
* **search:** sortOrder is a valid search param, searchDir is not ([9caeafd](9caeafd)), closes [#540](#540)
* **updateItemResources:** support item resource prefix ([98be7a7](98be7a7)), closes [#824](#824)
* **UserSession:** remove /sharing/rest from server url during postMessage auth ([04fcdbd](04fcdbd))
* **UserSession:** switch "duration" to "expiration" in IOAuth2Options ([#847](#847)) ([392f5bb](392f5bb)), closes [#843](#843)
* ensure platformSelf sends cookie ([29e33cb](29e33cb))
* export app-tokens ([0171204](0171204))
* export validateAppAccess function ([b087de2](b087de2))
* platformSelf to send cookies and append f=json in url ([ed81919](ed81919))
* update IPlatformSelfResponse to include expires_in ([dd3557b](dd3557b))
* **auth:** improve query and error handling when completing sign in ([4b3905c](4b3905c))
* **getItemResources:** allow user to override paging ([97cbec0](97cbec0))
* **getItemResources:** do not mutate requestOptions in getItemResources ([cac63e8](cac63e8))
* **queryFeatures:** pass along f, geometry, geometryType, and spatialRel params ([f4b775d](f4b775d)), closes [#588](#588)
* **search:** ensure no space is inserted between search fields and terms ([ff90f51](ff90f51)), closes [#545](#545)
* **searchGroupUsers func:** searchOptions is now an optional parameter ([d54bddb](d54bddb)), closes [#615](#615)
* **server root url:** improve discovery of services endpoint root url ([b2eed90](b2eed90)), closes [#581](#581)
* **sharing:** correct the item sharing logic to reflect what the api actually allows ([48b67e5](48b67e5))
* **sharing:** only item owner, group owner or group admin can unshare ([d264137](d264137))
* **try:** try an anonymous request before throwing an auth error ([9209035](9209035))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([#550](#550)) ([1a527a3](1a527a3))
* **UserSession:** will now update expired tokens on non-federated servers ([af121c1](af121c1))
* catch err internally when getItemData doesnt find any ([#505](#505)) ([914a5be](914a5be)), closes [#504](#504)
* default to GET when fetching attachments ([b6d746c](b6d746c))
* ensure no space is inserted between search fields and terms ([#552](#552)) ([391e3f8](391e3f8))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([3b41f3d](3b41f3d)), closes [#549](#549)
* ensure failure to generate a token results in an auth err ([bd03b19](bd03b19)), closes [#476](#476)
* ensure JSON and binary data are both handled consistently ([9f85087](9f85087))
* force FormData when calling /updateResources ([24af241](24af241)), closes [#499](#499)
* let request do the serializing ([c2d2671](c2d2671))
* **:2nd_place_medal::** added numViews and size properties to IItem ([1d38da1](1d38da1)), closes [#378](#378)
* **:basecamp::** ensure decodeValues() isnt derailled by attributes not present in metadata ([e9b4581](e9b4581))
* **:bathtub::** add utility method to trim whitespace and trailing slashes from input urls ([8f86578](8f86578))
* **:bathtub::** ensure add/update/deleteFeatures dont pass extraneous parameters ([8566860](8566860))
* **:bug::** ensure fix session.portal url when cred.server contains sharing/rest ([815de49](815de49))
* **:bug::** ensure getGeocodeService() is exported ([71801c2](71801c2)), closes [#267](#267)
* **:bug::** ensure that the same referer is set in Node.js applications that is passed along in toke ([afaa564](afaa564))
* **:bug::** improve error message when no FormData or Promise can be found ([89ff196](89ff196)), closes [#322](#322)
* **:bug::** support use in Node.js with custom fetch (and no global) ([90f9e75](90f9e75)), closes [#203](#203)
* **:bug::** tags arent required to create a group ([72ffd35](72ffd35))
* **:bug::** treat ArcGIS Online orgs as equivalent to arcgis.com when testing a portal ([18c3a7f](18c3a7f)), closes [#233](#233)
* **:closed_lock_with_key::** expose option to customize expiration of ApplicationSession tokens ([5af14d7](5af14d7)), closes [#314](#314)
* **:couple::** make it possible to update a service using a layer definition ([462af65](462af65))
* **:grey_question::** make item.protected optional, since search doesnt return it ([7aa8123](7aa8123))
* **:mag::** allow node.js clients to access streams ([95a35ce](95a35ce)), closes [#373](#373)
* **:moyai::** ensure first class citizen geocode request options are passed through ([ad28f27](ad28f27))
* **:musical_keyboard::** more types for new services/layer definitions ([8bdb30b](8bdb30b))
* **arcgis-rest-auth:** ensure that mixed casing of federated server urls does not break the system ([07c92f5](07c92f5))
* **ArcGISRequestError:** replace null or empty messages and codes with UNKNOWN_ERROR and UNKNOWN_ERR ([bcea1da](bcea1da))
* **auth:** allow trailing slash in portal URL ([b76da90](b76da90))
* **auth:** better regex match for usernames ([d38a7fb](d38a7fb))
* **auth:** decode username when parsing response from OAuth ([e0c2a44](e0c2a44)), closes [#165](#165)
* **auth:** use www.arcgis.com consistently ([a7dc28d](a7dc28d)), closes [#223](#223)
* **build:** set other @esri/arcgis-rest-js-* pacakges as external ([2f77c9f](2f77c9f)), closes [#128](#128)
* **check-for-errors:** throw an error for a response with a \`failure\` status ([9ee1c0c](9ee1c0c))
* **common-types:** ensure typings are distributed in common-types npm package ([bec3fbf](bec3fbf)), closes [#151](#151)
* **createItem:** owner > item.owner > authentication.username ([76680a1](76680a1))
* **enterprise:** fetch fresh token manually when u/pw are provided ([299f3c0](299f3c0)), closes [#161](#161)
* **fetch:** set credentials: 'same-origin' in fetch options to support sending IWA cookies ([a4d0115](a4d0115))
* **Fixes geocoder issue where it tries to assign a spatial reference to a null extent:** implemented ([bfad977](bfad977)), closes [#376](#376)
* get slack notifications working again ([85fd55c](85fd55c))
* **crud:** enforce more AGOL rules in item crud operations ([3f365d9](3f365d9)), closes [#246](#246)
* **encodeFormData:** append file name based on object type instead of key and name properties ([401c6dd](401c6dd))
* **geocode:** max sure user supplied request options are all passed through ([3ffa710](3ffa710))
* **geocoding-demo:** change placeholders to values ([cfc7f7a](cfc7f7a))
* **getPortalUrl:** make getPortalUrl use portal in request options if passed in ([6103101](6103101)), closes [#180](#180)
* **IItem:** make all IItem properties optional ([8df9278](8df9278)), closes [#171](#171)
* **item:** use fileName parameter to name Blobs when present ([9f5c093](9f5c093))
* **items:** dont override user supplied parameters when updating items ([eaa1656](eaa1656)), closes [#117](#117)
* **itemSearch:** max sure user supplied request options are all passed through ([afb9e38](afb9e38)), closes [#183](#183)
* **oauth:** check for window parent correctly in ouath without popup ([a27bb7d](a27bb7d))
* **oAuth:** fix oAuth2 methods in IE 11 and Edge ([462f980](462f980))
* **oauth-demo:** remove ES2015 buts from oAuth Demo for IE 11 ([22ec948](22ec948))
* **OAuth2 options:** added locale and state parameters for browser based OAuth2 ([b05996e](b05996e))
* **params:** flip param values in updateItemResource so they are passed correctly ([5093e39](5093e39)), closes [#118](#118)
* **portal:** fetch tokens for rest admin requests to services federated with ArcGIS Enterprise too ([79dda00](79dda00)), closes [#329](#329)
* **query features:** add count and extent to IQueryFeaturesResponse ([2ab9f33](2ab9f33))
* **release:** resolve issues from accidental 1.0.1 release. ([ddd3d6c](ddd3d6c))
* **release-automation:** checkout a temporary branch for release to not polute the main branch ([75a9dec](75a9dec))
* **release-automation:** fix issues found in #80. ([3b42fe9](3b42fe9))
* **release-automation:** fix issues uncovered by 1st release ([a73b76f](a73b76f))
* **release-automation:** fix release automation to prep for a 1.0.2 relase ([9dfd957](9dfd957))
* **release-automation:** run git fetch --all in release:prepare to make sure all changes are fetch f ([bb7d9e8](bb7d9e8))
* **request:** allow options.fetch without global fetch ([99cf01c](99cf01c)), closes [#108](#108)
* **request:** ensure falsy request parameters are passed through ([3c69a10](3c69a10)), closes [#142](#142)
* **request:** ensure request is passed through as a request parameter ([77ad553](77ad553)), closes [#142](#142)
* **request:** fix binding of default global fetch ([6d04ded](6d04ded))
* **search:** ensure searchItems can mixin arbitrary parameters with a searchform ([a26b935](a26b935))
* **sharing:** ensure internal sharing metadata calls pass through custom request options ([e70a10d](e70a10d)), closes [#276](#276)
* **sharing:** rework group membership checking, fix UserSession.getUser scope issue ([909a37e](909a37e))
* **umd:** strip outdated umd files from npm packages ([2e1764d](2e1764d)), closes [#198](#198)
* **users:** users defaults to https://www.arcgis.com instead of http:// ([7e3d9f6](7e3d9f6))
* **UserSession:** throw ArcGISAuthError instead of Error when unable to refresh a token ([8854765](8854765)), closes [#56](#56)

### Code Refactoring

* **feature responses:** removes unneccessay feature layer response interfaces ([1948010](1948010))
* **feature-layer:** rename *Params -> *Options ([4adff11](4adff11))
* **getLayer():** brings getLayer() signature inline w/ the rest of esri-arcgis-feature-service ([f59fa90](f59fa90))
* **interface names:** removes "Request" from interface names in routing and service-admin ([5702526](5702526))
* **interfaces:** removes "Request" from option interface names ([8bce221](8bce221))
* **portal interfaces:** renames portal request/response interfaces to match their functions ([faa5b3d](faa5b3d))
* change casing of IOauth2Options to IOAuth2Options ([9ffd227](9ffd227))
* deprecate common-types package (in favor of common) ([6ab2e75](6ab2e75))
* deprecate feature-service-admin package (and bundle code in feature-service) ([f5a17b1](f5a17b1))
* remove IGeocodeParams ([b874132](b874132))
* remove IItemResourceAddRequestOptions ([ded66d3](ded66d3))
* remove serializeGroup method ([9a63219](9a63219))
* remove serviceInfo() from geocoder package ([e4e1a2d](e4e1a2d))
* remove the word Request from custom geocoding RequestOptions interfaces ([f8c6255](f8c6255))
* rename esriGeometryType interface GeometryType ([1057850](1057850))
* replace items, groups, sharing and user packages with single portal package ([64a3fd9](64a3fd9))
* stop reexporting appendCustomParams from feature-service package ([c0852cb](c0852cb))
* the signature of getItemResources is now consistent with the other getItem methods ([c6148bf](c6148bf))

### Features

* add commitlint config and release scripts ([1bb1a8f](1bb1a8f))
* **:snowman::** add basic support for accessing secure non-federated services ([fc2f06b](fc2f06b)), closes [#174](#174)
* **:two_men_holding_hands::** add getRelatedItems function to items package ([4e67637](4e67637)), closes [#282](#282)
* **:two_women_holding_hands::** add addItemRelationship and removeItemRelationship methods ([228f3d7](228f3d7)), closes [#282](#282)
* **add applyEdits function:** adds \`applyEdits()\` to feature-layer for bulk crud transactions. ([ec36841](ec36841))
* **arcgis-rest-auth:** add postMessage auth support ([a6b8a17](a6b8a17))
* **search:** allows use of the newly added but undocumented searchUserAccess and searchUserName par ([279ef9e](279ef9e))
* service name and service info fns ([bb5f90d](bb5f90d))
* **arcgis-rest-auth:** add validateAppAccess function and UserSession method ([2478ea5](2478ea5))
* **arcgis-rest-auth:** reduce postMessageAuth query params ([154515f](154515f))
* **arcgis-rest-portal:** add getPortalSettings function ([e956dc5](e956dc5))
* **arcgis-rest-portal:** add searchUsers function ([235766c](235766c))
* **arcgis-rest-types:** add editingInfo to ILayerDefinition ([e5467f0](e5467f0))
* **getItemBaseUrl:** add function to get the base REST API URL for an item ([d6ec9fc](d6ec9fc))
* **getItemInfo:** add a function to fetch an info file for an item ([a9dd7d6](a9dd7d6)), closes [#738](#738)
* **getItemMetadata:** add a function to fetch the metadata XML for an item ([c263e1b](c263e1b))
* **getJsonResource and scrubControlChars:** add getJsonResource and scrubControlChars ([6bb9215](6bb9215))
* **group:** refactor searchGroups to make use of SearchQueryBuilder ([72f2898](72f2898)), closes [#104](#104)
* **join:** new joinGroup and leaveGroup methods ([fa604de](fa604de))
* **portal:** a new function to add members to a given group ([998d3a7](998d3a7)), closes [#584](#584)
* **portal:** add reassignItem ([1756cc4](1756cc4))
* **portal:** add the function to get user tags ([#614](#614)) ([d49159f](d49159f))
* **portal:** add updateGroupMembership, isItemSharedWithGroup ([14848db](14848db))
* **portal:** searchGroupUsers searches the users in the given group ([d9151a1](d9151a1))
* **routing:** Support elevation in routing ([6b2a77c](6b2a77c))
* **service-admin:** add updateServiceDefinition method ([63c2bc0](63c2bc0))
* **UserSession:** added optional 'popupWindowFeatures' to 'IOAuth2Options' ([f96a581](f96a581))
* add resourcesPrefix parameter to addItemResource ([c368232](c368232))
* **util:** add getUserUrl method to auth package ([d742b34](d742b34))
* add support for streaming request response ([893e647](893e647))
* Support 3d point/location ([6673102](6673102))
* **request:** adds option to return the raw fetch response ([6fb7c79](6fb7c79)), closes [#462](#462)
* add demo for streaming response to file ([5c8ae22](5c8ae22))
* add getItemGroups() function to items package ([#445](#445)) ([c0cd950](c0cd950))
* **:angola::** start with utility function to format cvd codes ([717404f](717404f))
* **:bowtie::** add new method to update a user profile ([33ce92d](33ce92d))
* **:clipboard::** add support for private item resources ([b120e9f](b120e9f))
* **:file_folder::** new generic common package for utility methods AND types ([0bd3ea7](0bd3ea7))
* **:hammer::** new package to create and admin feature services ([cfdcee9](cfdcee9))
* **:nail_care::** add modern feature service metadata props to ILayerDefinition ([7c89396](7c89396))
* **:paperclip::** add support for interacting with feature service attachments ([8d25490](8d25490)), closes [#226](#226)
* **:unlock::** add support for an OAuth flow that triggers social media login automatically ([2e582e1](2e582e1)), closes [#239](#239)
* **all packages:** start shipping an unminified UMD for each package ([52043f5](52043f5)), closes [#135](#135)
* **ApplicationSession:** only allow 1 pending request for a new token at a time ([4e6f9e2](4e6f9e2))
* **arcgis-rest-js:** add a "headers" option to IRequestOptions and pass on the headers to the reque ([266b85a](266b85a))
* by default fetch metadata and make query response readable ([3c96fce](3c96fce)), closes [#375](#375)
* **auth:** add getCredential() method to UserSession for jsapi ([c03430d](c03430d)), closes [#208](#208)
* **auth:** add reflexive method to instantiate UserSession from jsapi auth ([ea64da9](ea64da9)), closes [#208](#208)
* **caring:** methods to un/share items with groups ([8572bb0](8572bb0))
* **caring:** new sharing package with method to set access on items ([a212d59](a212d59)), closes [#43](#43)
* **common-types:** add more common types, keep the 'I' in front of interfaces ([d91dd0e](d91dd0e))
* **common-types:** Added webmap interfaces and types ([e52f115](e52f115))
* **feature-service:** add feature service CRUD methods ([5cb8fbc](5cb8fbc)), closes [#176](#176)
* **groups:** add createGroupNotification ([4baab64](4baab64))
* **lots more common-types:** adding a lot more common data types ([73ce0b8](73ce0b8))
* **new users package:** added rest-users with a single method ([a24ed0b](a24ed0b)), closes [#159](#159)
* **request:** allow passing custom fetch function ([920d1ff](920d1ff))
* **resources:** new method to add a new resource to an item ([9c63075](9c63075)), closes [#281](#281)
* **ResponseFormats:** add support for f=geojson for Feature Layers ([79bc776](79bc776)), closes [#20](#20)
* **users:** add getUserNotifications function ([9fbc5e2](9fbc5e2))
* **users:** add user invitation functions ([80aa6dc](80aa6dc))
* **users:** adds removeNotification function ([b4a55d0](b4a55d0))
* support for adding blobs as item/data ([0cfd275](0cfd275))
* **UserSession:** multiple requests to getToken for similar URLs now return the same Promise ([751e5f1](751e5f1))
* **UserSession:** rename refreshTokenDuration to refreshTokenTTL ([a6406d4](a6406d4))

### Reverts

* Revert "aggs counts should be an array" ([55a1e27](55a1e27))

### BREAKING CHANGES

* deprecated addItemJsonData
* **portal interfaces:** removes "Request" from portal option interfaces & renames response interfaces
* **interface names:** removed "Request" from interface names in routing and service-admin
* **interfaces:** Options interfaces in @esri/arcgis-rest-feature-layer have been renamed
* IGeocodeRequesttOptions is now IGeocodeOptions, IBulkGeocodingRequestOptions is now
IBulkGeocodeOptions
* **feature responses:** removes IAddFeaturesResult, IAddAttachmentResponse, IDeleteFeaturesResult,
IDeleteAttachmentsResponse, IGetAttachmentsResponse, IUpdateFeaturesResult, &
IUpdateAttachmentResponse
* **feature-layer:** renamed IEditFeaturesParams to ISharedEditOptions & ISharedQueryParams to ISharedQueryOptions;
removed IDeleteFeaturesParams
* **getLayer():** changed signature of getLayer() fn to always expect an options hash
* **group:** searchGroups signature change
* replace items, groups, sharing and user packages with single portal package
* deprecate feature-service-admin package (and bundle code in feature-service)
* deprecate common-types package (in favor of common)
* IItemResourceAddRequestOptions has been removed
* the signature of getItemResources is now consistent with the other getItem methods
* rename esriGeometryType interface GeometryType
* remove serializeGroup helper method from groups package
* change casing of IOauth2Options to IOAuth2Options
* appendCustomParams is no longer exported by feature-service package
* remove IGeocodeParams from geocoder package
* remove serviceInfo() from geocoder package
* **routing:** Switch x and y in point for solveRoute
* **lots more common-types:** no longer prefacing interface names with an I
github-actions bot pushed a commit that referenced this issue Feb 17, 2022
# 1.0.0-beta.1 (2022-02-17)

### Bug Fixes

* minor edit in package.json ([9c59978](9c59978))
* switch to eslint, fix minor issues, disable other rules ([ab47412](ab47412))
* **:bathtub::** remove magicKey from suggest, surface it more prominently in geocode ([fb2ba9a](fb2ba9a)), closes [#459](#459)
* **:bug::** allow for group sharing of public items outside an organization ([e47a772](e47a772))
* **:bug::** dont set referer to null in browser apps ([0b1bf2b](0b1bf2b))
* **:bug::** ensure that custom headers arent misidentified as request parameters ([4ff33b1](4ff33b1)), closes [#290](#290)
* **🐛:** ensure createFeatureService doesnt swallow errors ([8173aa5](8173aa5))
* **add resource:** make resource an optional parameter ([1db78b7](1db78b7))
* **aggs counts should be array:** aggs counts should be array ([72b3bf7](72b3bf7))
* **arcgis-rest-auth:** enable oAuth from within an IFrame ([e6538d5](e6538d5)), closes [#711](#711)
* **arcgis-rest-auth:** export validateAppAccess ([6d1e2ef](6d1e2ef))
* **arcgis-rest-auth:** postMessage internals ([bd8eb6c](bd8eb6c))
* **arcgis-rest-feature-layer:** streamline promises ([ebb8380](ebb8380))
* **arcgis-rest-portal:** add fetchMock setup for intermittent failing tests ([5384984](5384984))
* **arcgis-rest-portal:** do not do any membership adjustments if the group is the user's favorites g ([6fc8ada](6fc8ada))
* **arcgis-rest-portal:** make \`layers\` parameter of \`IExportParameters\` optional ([0b584e6](0b584e6))
* **arcgis-rest-portal:** share as admin uses content/users/:ownername/items/:id/share end-point ([fd1a960](fd1a960))
* **arcgis-rest-portal:** use deleteRelationship not removeRelationship ([890e485](890e485)), closes [#739](#739)
* **arcgis-rest-portal:** wrong parameters for file upload APIs ([#761](#761)) ([cbfef7d](cbfef7d)), closes [#693](#693) [#694](#694) [#700](#700)
* **auth:** add additional authentication providers ([85f73b2](85f73b2))
* **bulk geocoding:** clean up code in bulk geocoding ([5e28028](5e28028)), closes [#630](#630)
* **common:** Fix location test xy ([27cab54](27cab54))
* **edit:** ensure IEditFeatureResult is exported ([2c65102](2c65102))
* **geocode:** ensure the magicKey property is passed through. ([#603](#603)) ([cc2c352](cc2c352)), closes [#601](#601)
* **ITable.id type:** change ITable.id type to number ([02c609a](02c609a)), closes [#808](#808)
* **lock:** make passing authentication mandatory to methods that update groups ([14bdf88](14bdf88))
* **lock:** pass through url and options for non-federated requests ([802006c](802006c))
* **null:** dont stringify values in item calls ([c0f48fc](c0f48fc))
* **portal:** searchGroupUsers will now respect joined and memberType parameters ([79b15b5](79b15b5))
* **portal:** setting item access to public shares correctly ([6a2b115](6a2b115))
* **removeItemResource:** support correct parameters ([#835](#835)) ([96798fe](96798fe))
* **routing:** Fix switched x and y ([cc22727](cc22727))
* **search:** add support for untyped, grouped search strings ([39fc213](39fc213)), closes [#544](#544)
* **search:** allow NOT as a standalone modifier ([36a6bca](36a6bca)), closes [#542](#542)
* **search:** sortOrder is a valid search param, searchDir is not ([9caeafd](9caeafd)), closes [#540](#540)
* **updateItemResources:** support item resource prefix ([98be7a7](98be7a7)), closes [#824](#824)
* **UserSession:** remove /sharing/rest from server url during postMessage auth ([04fcdbd](04fcdbd))
* **UserSession:** switch "duration" to "expiration" in IOAuth2Options ([#847](#847)) ([392f5bb](392f5bb)), closes [#843](#843)
* ensure platformSelf sends cookie ([29e33cb](29e33cb))
* export app-tokens ([0171204](0171204))
* export validateAppAccess function ([b087de2](b087de2))
* platformSelf to send cookies and append f=json in url ([ed81919](ed81919))
* update IPlatformSelfResponse to include expires_in ([dd3557b](dd3557b))
* **auth:** improve query and error handling when completing sign in ([4b3905c](4b3905c))
* **getItemResources:** allow user to override paging ([97cbec0](97cbec0))
* **getItemResources:** do not mutate requestOptions in getItemResources ([cac63e8](cac63e8))
* **queryFeatures:** pass along f, geometry, geometryType, and spatialRel params ([f4b775d](f4b775d)), closes [#588](#588)
* **search:** ensure no space is inserted between search fields and terms ([ff90f51](ff90f51)), closes [#545](#545)
* **searchGroupUsers func:** searchOptions is now an optional parameter ([d54bddb](d54bddb)), closes [#615](#615)
* **server root url:** improve discovery of services endpoint root url ([b2eed90](b2eed90)), closes [#581](#581)
* **sharing:** correct the item sharing logic to reflect what the api actually allows ([48b67e5](48b67e5))
* **sharing:** only item owner, group owner or group admin can unshare ([d264137](d264137))
* **try:** try an anonymous request before throwing an auth error ([9209035](9209035))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([#550](#550)) ([1a527a3](1a527a3))
* **UserSession:** will now update expired tokens on non-federated servers ([af121c1](af121c1))
* catch err internally when getItemData doesnt find any ([#505](#505)) ([914a5be](914a5be)), closes [#504](#504)
* default to GET when fetching attachments ([b6d746c](b6d746c))
* ensure no space is inserted between search fields and terms ([#552](#552)) ([391e3f8](391e3f8))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([3b41f3d](3b41f3d)), closes [#549](#549)
* ensure failure to generate a token results in an auth err ([bd03b19](bd03b19)), closes [#476](#476)
* ensure JSON and binary data are both handled consistently ([9f85087](9f85087))
* force FormData when calling /updateResources ([24af241](24af241)), closes [#499](#499)
* let request do the serializing ([c2d2671](c2d2671))
* **:2nd_place_medal::** added numViews and size properties to IItem ([1d38da1](1d38da1)), closes [#378](#378)
* **:basecamp::** ensure decodeValues() isnt derailled by attributes not present in metadata ([e9b4581](e9b4581))
* **:bathtub::** add utility method to trim whitespace and trailing slashes from input urls ([8f86578](8f86578))
* **:bathtub::** ensure add/update/deleteFeatures dont pass extraneous parameters ([8566860](8566860))
* **:bug::** ensure fix session.portal url when cred.server contains sharing/rest ([815de49](815de49))
* **:bug::** ensure getGeocodeService() is exported ([71801c2](71801c2)), closes [#267](#267)
* **:bug::** ensure that the same referer is set in Node.js applications that is passed along in toke ([afaa564](afaa564))
* **:bug::** improve error message when no FormData or Promise can be found ([89ff196](89ff196)), closes [#322](#322)
* **:bug::** support use in Node.js with custom fetch (and no global) ([90f9e75](90f9e75)), closes [#203](#203)
* **:bug::** tags arent required to create a group ([72ffd35](72ffd35))
* **:bug::** treat ArcGIS Online orgs as equivalent to arcgis.com when testing a portal ([18c3a7f](18c3a7f)), closes [#233](#233)
* **:closed_lock_with_key::** expose option to customize expiration of ApplicationSession tokens ([5af14d7](5af14d7)), closes [#314](#314)
* **:couple::** make it possible to update a service using a layer definition ([462af65](462af65))
* **:grey_question::** make item.protected optional, since search doesnt return it ([7aa8123](7aa8123))
* **:mag::** allow node.js clients to access streams ([95a35ce](95a35ce)), closes [#373](#373)
* **:moyai::** ensure first class citizen geocode request options are passed through ([ad28f27](ad28f27))
* **:musical_keyboard::** more types for new services/layer definitions ([8bdb30b](8bdb30b))
* **arcgis-rest-auth:** ensure that mixed casing of federated server urls does not break the system ([07c92f5](07c92f5))
* **ArcGISRequestError:** replace null or empty messages and codes with UNKNOWN_ERROR and UNKNOWN_ERR ([bcea1da](bcea1da))
* **auth:** allow trailing slash in portal URL ([b76da90](b76da90))
* **auth:** better regex match for usernames ([d38a7fb](d38a7fb))
* **auth:** decode username when parsing response from OAuth ([e0c2a44](e0c2a44)), closes [#165](#165)
* **auth:** use www.arcgis.com consistently ([a7dc28d](a7dc28d)), closes [#223](#223)
* **build:** set other @esri/arcgis-rest-js-* pacakges as external ([2f77c9f](2f77c9f)), closes [#128](#128)
* **check-for-errors:** throw an error for a response with a \`failure\` status ([9ee1c0c](9ee1c0c))
* **common-types:** ensure typings are distributed in common-types npm package ([bec3fbf](bec3fbf)), closes [#151](#151)
* **createItem:** owner > item.owner > authentication.username ([76680a1](76680a1))
* **enterprise:** fetch fresh token manually when u/pw are provided ([299f3c0](299f3c0)), closes [#161](#161)
* **fetch:** set credentials: 'same-origin' in fetch options to support sending IWA cookies ([a4d0115](a4d0115))
* **Fixes geocoder issue where it tries to assign a spatial reference to a null extent:** implemented ([bfad977](bfad977)), closes [#376](#376)
* get slack notifications working again ([85fd55c](85fd55c))
* **crud:** enforce more AGOL rules in item crud operations ([3f365d9](3f365d9)), closes [#246](#246)
* **encodeFormData:** append file name based on object type instead of key and name properties ([401c6dd](401c6dd))
* **geocode:** max sure user supplied request options are all passed through ([3ffa710](3ffa710))
* **geocoding-demo:** change placeholders to values ([cfc7f7a](cfc7f7a))
* **getPortalUrl:** make getPortalUrl use portal in request options if passed in ([6103101](6103101)), closes [#180](#180)
* **IItem:** make all IItem properties optional ([8df9278](8df9278)), closes [#171](#171)
* **item:** use fileName parameter to name Blobs when present ([9f5c093](9f5c093))
* **items:** dont override user supplied parameters when updating items ([eaa1656](eaa1656)), closes [#117](#117)
* **itemSearch:** max sure user supplied request options are all passed through ([afb9e38](afb9e38)), closes [#183](#183)
* **oauth:** check for window parent correctly in ouath without popup ([a27bb7d](a27bb7d))
* **oAuth:** fix oAuth2 methods in IE 11 and Edge ([462f980](462f980))
* **oauth-demo:** remove ES2015 buts from oAuth Demo for IE 11 ([22ec948](22ec948))
* **OAuth2 options:** added locale and state parameters for browser based OAuth2 ([b05996e](b05996e))
* **params:** flip param values in updateItemResource so they are passed correctly ([5093e39](5093e39)), closes [#118](#118)
* **portal:** fetch tokens for rest admin requests to services federated with ArcGIS Enterprise too ([79dda00](79dda00)), closes [#329](#329)
* **query features:** add count and extent to IQueryFeaturesResponse ([2ab9f33](2ab9f33))
* **release:** resolve issues from accidental 1.0.1 release. ([ddd3d6c](ddd3d6c))
* **release-automation:** checkout a temporary branch for release to not polute the main branch ([75a9dec](75a9dec))
* **release-automation:** fix issues found in #80. ([3b42fe9](3b42fe9))
* **release-automation:** fix issues uncovered by 1st release ([a73b76f](a73b76f))
* **release-automation:** fix release automation to prep for a 1.0.2 relase ([9dfd957](9dfd957))
* **release-automation:** run git fetch --all in release:prepare to make sure all changes are fetch f ([bb7d9e8](bb7d9e8))
* **request:** allow options.fetch without global fetch ([99cf01c](99cf01c)), closes [#108](#108)
* **request:** ensure falsy request parameters are passed through ([3c69a10](3c69a10)), closes [#142](#142)
* **request:** ensure request is passed through as a request parameter ([77ad553](77ad553)), closes [#142](#142)
* **request:** fix binding of default global fetch ([6d04ded](6d04ded))
* **search:** ensure searchItems can mixin arbitrary parameters with a searchform ([a26b935](a26b935))
* **sharing:** ensure internal sharing metadata calls pass through custom request options ([e70a10d](e70a10d)), closes [#276](#276)
* **sharing:** rework group membership checking, fix UserSession.getUser scope issue ([909a37e](909a37e))
* **umd:** strip outdated umd files from npm packages ([2e1764d](2e1764d)), closes [#198](#198)
* **users:** users defaults to https://www.arcgis.com instead of http:// ([7e3d9f6](7e3d9f6))
* **UserSession:** throw ArcGISAuthError instead of Error when unable to refresh a token ([8854765](8854765)), closes [#56](#56)

### Code Refactoring

* **feature responses:** removes unneccessay feature layer response interfaces ([1948010](1948010))
* **feature-layer:** rename *Params -> *Options ([4adff11](4adff11))
* **getLayer():** brings getLayer() signature inline w/ the rest of esri-arcgis-feature-service ([f59fa90](f59fa90))
* **interface names:** removes "Request" from interface names in routing and service-admin ([5702526](5702526))
* **interfaces:** removes "Request" from option interface names ([8bce221](8bce221))
* **portal interfaces:** renames portal request/response interfaces to match their functions ([faa5b3d](faa5b3d))
* change casing of IOauth2Options to IOAuth2Options ([9ffd227](9ffd227))
* deprecate common-types package (in favor of common) ([6ab2e75](6ab2e75))
* deprecate feature-service-admin package (and bundle code in feature-service) ([f5a17b1](f5a17b1))
* remove IGeocodeParams ([b874132](b874132))
* remove IItemResourceAddRequestOptions ([ded66d3](ded66d3))
* remove serializeGroup method ([9a63219](9a63219))
* remove serviceInfo() from geocoder package ([e4e1a2d](e4e1a2d))
* remove the word Request from custom geocoding RequestOptions interfaces ([f8c6255](f8c6255))
* rename esriGeometryType interface GeometryType ([1057850](1057850))
* replace items, groups, sharing and user packages with single portal package ([64a3fd9](64a3fd9))
* stop reexporting appendCustomParams from feature-service package ([c0852cb](c0852cb))
* the signature of getItemResources is now consistent with the other getItem methods ([c6148bf](c6148bf))

### Features

* add commitlint config and release scripts ([1bb1a8f](1bb1a8f))
* **:snowman::** add basic support for accessing secure non-federated services ([fc2f06b](fc2f06b)), closes [#174](#174)
* **:two_men_holding_hands::** add getRelatedItems function to items package ([4e67637](4e67637)), closes [#282](#282)
* **:two_women_holding_hands::** add addItemRelationship and removeItemRelationship methods ([228f3d7](228f3d7)), closes [#282](#282)
* **add applyEdits function:** adds \`applyEdits()\` to feature-layer for bulk crud transactions. ([ec36841](ec36841))
* **arcgis-rest-auth:** add postMessage auth support ([a6b8a17](a6b8a17))
* **search:** allows use of the newly added but undocumented searchUserAccess and searchUserName par ([279ef9e](279ef9e))
* service name and service info fns ([bb5f90d](bb5f90d))
* **arcgis-rest-auth:** add validateAppAccess function and UserSession method ([2478ea5](2478ea5))
* **arcgis-rest-auth:** reduce postMessageAuth query params ([154515f](154515f))
* **arcgis-rest-portal:** add getPortalSettings function ([e956dc5](e956dc5))
* **arcgis-rest-portal:** add searchUsers function ([235766c](235766c))
* **arcgis-rest-types:** add editingInfo to ILayerDefinition ([e5467f0](e5467f0))
* **getItemBaseUrl:** add function to get the base REST API URL for an item ([d6ec9fc](d6ec9fc))
* **getItemInfo:** add a function to fetch an info file for an item ([a9dd7d6](a9dd7d6)), closes [#738](#738)
* **getItemMetadata:** add a function to fetch the metadata XML for an item ([c263e1b](c263e1b))
* **getJsonResource and scrubControlChars:** add getJsonResource and scrubControlChars ([6bb9215](6bb9215))
* **group:** refactor searchGroups to make use of SearchQueryBuilder ([72f2898](72f2898)), closes [#104](#104)
* **join:** new joinGroup and leaveGroup methods ([fa604de](fa604de))
* **portal:** a new function to add members to a given group ([998d3a7](998d3a7)), closes [#584](#584)
* **portal:** add reassignItem ([1756cc4](1756cc4))
* **portal:** add the function to get user tags ([#614](#614)) ([d49159f](d49159f))
* **portal:** add updateGroupMembership, isItemSharedWithGroup ([14848db](14848db))
* **portal:** searchGroupUsers searches the users in the given group ([d9151a1](d9151a1))
* **routing:** Support elevation in routing ([6b2a77c](6b2a77c))
* **service-admin:** add updateServiceDefinition method ([63c2bc0](63c2bc0))
* **UserSession:** added optional 'popupWindowFeatures' to 'IOAuth2Options' ([f96a581](f96a581))
* add resourcesPrefix parameter to addItemResource ([c368232](c368232))
* **util:** add getUserUrl method to auth package ([d742b34](d742b34))
* add support for streaming request response ([893e647](893e647))
* Support 3d point/location ([6673102](6673102))
* **request:** adds option to return the raw fetch response ([6fb7c79](6fb7c79)), closes [#462](#462)
* add demo for streaming response to file ([5c8ae22](5c8ae22))
* add getItemGroups() function to items package ([#445](#445)) ([c0cd950](c0cd950))
* **:angola::** start with utility function to format cvd codes ([717404f](717404f))
* **:bowtie::** add new method to update a user profile ([33ce92d](33ce92d))
* **:clipboard::** add support for private item resources ([b120e9f](b120e9f))
* **:file_folder::** new generic common package for utility methods AND types ([0bd3ea7](0bd3ea7))
* **:hammer::** new package to create and admin feature services ([cfdcee9](cfdcee9))
* **:nail_care::** add modern feature service metadata props to ILayerDefinition ([7c89396](7c89396))
* **:paperclip::** add support for interacting with feature service attachments ([8d25490](8d25490)), closes [#226](#226)
* **:unlock::** add support for an OAuth flow that triggers social media login automatically ([2e582e1](2e582e1)), closes [#239](#239)
* **all packages:** start shipping an unminified UMD for each package ([52043f5](52043f5)), closes [#135](#135)
* **ApplicationSession:** only allow 1 pending request for a new token at a time ([4e6f9e2](4e6f9e2))
* **arcgis-rest-js:** add a "headers" option to IRequestOptions and pass on the headers to the reque ([266b85a](266b85a))
* by default fetch metadata and make query response readable ([3c96fce](3c96fce)), closes [#375](#375)
* **auth:** add getCredential() method to UserSession for jsapi ([c03430d](c03430d)), closes [#208](#208)
* **auth:** add reflexive method to instantiate UserSession from jsapi auth ([ea64da9](ea64da9)), closes [#208](#208)
* **caring:** methods to un/share items with groups ([8572bb0](8572bb0))
* **caring:** new sharing package with method to set access on items ([a212d59](a212d59)), closes [#43](#43)
* **common-types:** add more common types, keep the 'I' in front of interfaces ([d91dd0e](d91dd0e))
* **common-types:** Added webmap interfaces and types ([e52f115](e52f115))
* **feature-service:** add feature service CRUD methods ([5cb8fbc](5cb8fbc)), closes [#176](#176)
* **groups:** add createGroupNotification ([4baab64](4baab64))
* **lots more common-types:** adding a lot more common data types ([73ce0b8](73ce0b8))
* **new users package:** added rest-users with a single method ([a24ed0b](a24ed0b)), closes [#159](#159)
* **request:** allow passing custom fetch function ([920d1ff](920d1ff))
* **resources:** new method to add a new resource to an item ([9c63075](9c63075)), closes [#281](#281)
* **ResponseFormats:** add support for f=geojson for Feature Layers ([79bc776](79bc776)), closes [#20](#20)
* **users:** add getUserNotifications function ([9fbc5e2](9fbc5e2))
* **users:** add user invitation functions ([80aa6dc](80aa6dc))
* **users:** adds removeNotification function ([b4a55d0](b4a55d0))
* support for adding blobs as item/data ([0cfd275](0cfd275))
* **UserSession:** multiple requests to getToken for similar URLs now return the same Promise ([751e5f1](751e5f1))
* **UserSession:** rename refreshTokenDuration to refreshTokenTTL ([a6406d4](a6406d4))

### Reverts

* Revert "aggs counts should be an array" ([55a1e27](55a1e27))

### BREAKING CHANGES

* deprecated addItemJsonData
* **portal interfaces:** removes "Request" from portal option interfaces & renames response interfaces
* **interface names:** removed "Request" from interface names in routing and service-admin
* **interfaces:** Options interfaces in @esri/arcgis-rest-feature-layer have been renamed
* IGeocodeRequesttOptions is now IGeocodeOptions, IBulkGeocodingRequestOptions is now
IBulkGeocodeOptions
* **feature responses:** removes IAddFeaturesResult, IAddAttachmentResponse, IDeleteFeaturesResult,
IDeleteAttachmentsResponse, IGetAttachmentsResponse, IUpdateFeaturesResult, &
IUpdateAttachmentResponse
* **feature-layer:** renamed IEditFeaturesParams to ISharedEditOptions & ISharedQueryParams to ISharedQueryOptions;
removed IDeleteFeaturesParams
* **getLayer():** changed signature of getLayer() fn to always expect an options hash
* **group:** searchGroups signature change
* replace items, groups, sharing and user packages with single portal package
* deprecate feature-service-admin package (and bundle code in feature-service)
* deprecate common-types package (in favor of common)
* IItemResourceAddRequestOptions has been removed
* the signature of getItemResources is now consistent with the other getItem methods
* rename esriGeometryType interface GeometryType
* remove serializeGroup helper method from groups package
* change casing of IOauth2Options to IOAuth2Options
* appendCustomParams is no longer exported by feature-service package
* remove IGeocodeParams from geocoder package
* remove serviceInfo() from geocoder package
* **routing:** Switch x and y in point for solveRoute
* **lots more common-types:** no longer prefacing interface names with an I
github-actions bot pushed a commit that referenced this issue Feb 17, 2022
# 1.0.0-beta.1 (2022-02-17)

### Bug Fixes

* minor edit in package.json ([9c59978](9c59978))
* switch to eslint, fix minor issues, disable other rules ([ab47412](ab47412))
* **:bathtub::** remove magicKey from suggest, surface it more prominently in geocode ([fb2ba9a](fb2ba9a)), closes [#459](#459)
* **:bug::** allow for group sharing of public items outside an organization ([e47a772](e47a772))
* **:bug::** dont set referer to null in browser apps ([0b1bf2b](0b1bf2b))
* **:bug::** ensure that custom headers arent misidentified as request parameters ([4ff33b1](4ff33b1)), closes [#290](#290)
* **🐛:** ensure createFeatureService doesnt swallow errors ([8173aa5](8173aa5))
* **add resource:** make resource an optional parameter ([1db78b7](1db78b7))
* **aggs counts should be array:** aggs counts should be array ([72b3bf7](72b3bf7))
* **arcgis-rest-auth:** enable oAuth from within an IFrame ([e6538d5](e6538d5)), closes [#711](#711)
* **arcgis-rest-auth:** export validateAppAccess ([6d1e2ef](6d1e2ef))
* **arcgis-rest-auth:** postMessage internals ([bd8eb6c](bd8eb6c))
* **arcgis-rest-feature-layer:** streamline promises ([ebb8380](ebb8380))
* **arcgis-rest-portal:** add fetchMock setup for intermittent failing tests ([5384984](5384984))
* **arcgis-rest-portal:** do not do any membership adjustments if the group is the user's favorites g ([6fc8ada](6fc8ada))
* **arcgis-rest-portal:** make \`layers\` parameter of \`IExportParameters\` optional ([0b584e6](0b584e6))
* **arcgis-rest-portal:** share as admin uses content/users/:ownername/items/:id/share end-point ([fd1a960](fd1a960))
* **arcgis-rest-portal:** use deleteRelationship not removeRelationship ([890e485](890e485)), closes [#739](#739)
* **arcgis-rest-portal:** wrong parameters for file upload APIs ([#761](#761)) ([cbfef7d](cbfef7d)), closes [#693](#693) [#694](#694) [#700](#700)
* **auth:** add additional authentication providers ([85f73b2](85f73b2))
* **bulk geocoding:** clean up code in bulk geocoding ([5e28028](5e28028)), closes [#630](#630)
* **common:** Fix location test xy ([27cab54](27cab54))
* **edit:** ensure IEditFeatureResult is exported ([2c65102](2c65102))
* **geocode:** ensure the magicKey property is passed through. ([#603](#603)) ([cc2c352](cc2c352)), closes [#601](#601)
* **ITable.id type:** change ITable.id type to number ([02c609a](02c609a)), closes [#808](#808)
* **lock:** make passing authentication mandatory to methods that update groups ([14bdf88](14bdf88))
* **lock:** pass through url and options for non-federated requests ([802006c](802006c))
* **null:** dont stringify values in item calls ([c0f48fc](c0f48fc))
* **portal:** searchGroupUsers will now respect joined and memberType parameters ([79b15b5](79b15b5))
* **portal:** setting item access to public shares correctly ([6a2b115](6a2b115))
* **removeItemResource:** support correct parameters ([#835](#835)) ([96798fe](96798fe))
* **routing:** Fix switched x and y ([cc22727](cc22727))
* **search:** add support for untyped, grouped search strings ([39fc213](39fc213)), closes [#544](#544)
* **search:** allow NOT as a standalone modifier ([36a6bca](36a6bca)), closes [#542](#542)
* **search:** sortOrder is a valid search param, searchDir is not ([9caeafd](9caeafd)), closes [#540](#540)
* **updateItemResources:** support item resource prefix ([98be7a7](98be7a7)), closes [#824](#824)
* **UserSession:** remove /sharing/rest from server url during postMessage auth ([04fcdbd](04fcdbd))
* **UserSession:** switch "duration" to "expiration" in IOAuth2Options ([#847](#847)) ([392f5bb](392f5bb)), closes [#843](#843)
* ensure platformSelf sends cookie ([29e33cb](29e33cb))
* export app-tokens ([0171204](0171204))
* export validateAppAccess function ([b087de2](b087de2))
* platformSelf to send cookies and append f=json in url ([ed81919](ed81919))
* update IPlatformSelfResponse to include expires_in ([dd3557b](dd3557b))
* **auth:** improve query and error handling when completing sign in ([4b3905c](4b3905c))
* **getItemResources:** allow user to override paging ([97cbec0](97cbec0))
* **getItemResources:** do not mutate requestOptions in getItemResources ([cac63e8](cac63e8))
* **queryFeatures:** pass along f, geometry, geometryType, and spatialRel params ([f4b775d](f4b775d)), closes [#588](#588)
* **search:** ensure no space is inserted between search fields and terms ([ff90f51](ff90f51)), closes [#545](#545)
* **searchGroupUsers func:** searchOptions is now an optional parameter ([d54bddb](d54bddb)), closes [#615](#615)
* **server root url:** improve discovery of services endpoint root url ([b2eed90](b2eed90)), closes [#581](#581)
* **sharing:** correct the item sharing logic to reflect what the api actually allows ([48b67e5](48b67e5))
* **sharing:** only item owner, group owner or group admin can unshare ([d264137](d264137))
* **try:** try an anonymous request before throwing an auth error ([9209035](9209035))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([#550](#550)) ([1a527a3](1a527a3))
* **UserSession:** will now update expired tokens on non-federated servers ([af121c1](af121c1))
* catch err internally when getItemData doesnt find any ([#505](#505)) ([914a5be](914a5be)), closes [#504](#504)
* default to GET when fetching attachments ([b6d746c](b6d746c))
* ensure no space is inserted between search fields and terms ([#552](#552)) ([391e3f8](391e3f8))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([3b41f3d](3b41f3d)), closes [#549](#549)
* ensure failure to generate a token results in an auth err ([bd03b19](bd03b19)), closes [#476](#476)
* ensure JSON and binary data are both handled consistently ([9f85087](9f85087))
* force FormData when calling /updateResources ([24af241](24af241)), closes [#499](#499)
* let request do the serializing ([c2d2671](c2d2671))
* **:2nd_place_medal::** added numViews and size properties to IItem ([1d38da1](1d38da1)), closes [#378](#378)
* **:basecamp::** ensure decodeValues() isnt derailled by attributes not present in metadata ([e9b4581](e9b4581))
* **:bathtub::** add utility method to trim whitespace and trailing slashes from input urls ([8f86578](8f86578))
* **:bathtub::** ensure add/update/deleteFeatures dont pass extraneous parameters ([8566860](8566860))
* **:bug::** ensure fix session.portal url when cred.server contains sharing/rest ([815de49](815de49))
* **:bug::** ensure getGeocodeService() is exported ([71801c2](71801c2)), closes [#267](#267)
* **:bug::** ensure that the same referer is set in Node.js applications that is passed along in toke ([afaa564](afaa564))
* **:bug::** improve error message when no FormData or Promise can be found ([89ff196](89ff196)), closes [#322](#322)
* **:bug::** support use in Node.js with custom fetch (and no global) ([90f9e75](90f9e75)), closes [#203](#203)
* **:bug::** tags arent required to create a group ([72ffd35](72ffd35))
* **:bug::** treat ArcGIS Online orgs as equivalent to arcgis.com when testing a portal ([18c3a7f](18c3a7f)), closes [#233](#233)
* **:closed_lock_with_key::** expose option to customize expiration of ApplicationSession tokens ([5af14d7](5af14d7)), closes [#314](#314)
* **:couple::** make it possible to update a service using a layer definition ([462af65](462af65))
* **:grey_question::** make item.protected optional, since search doesnt return it ([7aa8123](7aa8123))
* **:mag::** allow node.js clients to access streams ([95a35ce](95a35ce)), closes [#373](#373)
* **:moyai::** ensure first class citizen geocode request options are passed through ([ad28f27](ad28f27))
* **:musical_keyboard::** more types for new services/layer definitions ([8bdb30b](8bdb30b))
* **arcgis-rest-auth:** ensure that mixed casing of federated server urls does not break the system ([07c92f5](07c92f5))
* **ArcGISRequestError:** replace null or empty messages and codes with UNKNOWN_ERROR and UNKNOWN_ERR ([bcea1da](bcea1da))
* **auth:** allow trailing slash in portal URL ([b76da90](b76da90))
* **auth:** better regex match for usernames ([d38a7fb](d38a7fb))
* **auth:** decode username when parsing response from OAuth ([e0c2a44](e0c2a44)), closes [#165](#165)
* **auth:** use www.arcgis.com consistently ([a7dc28d](a7dc28d)), closes [#223](#223)
* **build:** set other @esri/arcgis-rest-js-* pacakges as external ([2f77c9f](2f77c9f)), closes [#128](#128)
* **check-for-errors:** throw an error for a response with a \`failure\` status ([9ee1c0c](9ee1c0c))
* **common-types:** ensure typings are distributed in common-types npm package ([bec3fbf](bec3fbf)), closes [#151](#151)
* **createItem:** owner > item.owner > authentication.username ([76680a1](76680a1))
* **enterprise:** fetch fresh token manually when u/pw are provided ([299f3c0](299f3c0)), closes [#161](#161)
* **fetch:** set credentials: 'same-origin' in fetch options to support sending IWA cookies ([a4d0115](a4d0115))
* **Fixes geocoder issue where it tries to assign a spatial reference to a null extent:** implemented ([bfad977](bfad977)), closes [#376](#376)
* get slack notifications working again ([85fd55c](85fd55c))
* **crud:** enforce more AGOL rules in item crud operations ([3f365d9](3f365d9)), closes [#246](#246)
* **encodeFormData:** append file name based on object type instead of key and name properties ([401c6dd](401c6dd))
* **geocode:** max sure user supplied request options are all passed through ([3ffa710](3ffa710))
* **geocoding-demo:** change placeholders to values ([cfc7f7a](cfc7f7a))
* **getPortalUrl:** make getPortalUrl use portal in request options if passed in ([6103101](6103101)), closes [#180](#180)
* **IItem:** make all IItem properties optional ([8df9278](8df9278)), closes [#171](#171)
* **item:** use fileName parameter to name Blobs when present ([9f5c093](9f5c093))
* **items:** dont override user supplied parameters when updating items ([eaa1656](eaa1656)), closes [#117](#117)
* **itemSearch:** max sure user supplied request options are all passed through ([afb9e38](afb9e38)), closes [#183](#183)
* **oauth:** check for window parent correctly in ouath without popup ([a27bb7d](a27bb7d))
* **oAuth:** fix oAuth2 methods in IE 11 and Edge ([462f980](462f980))
* **oauth-demo:** remove ES2015 buts from oAuth Demo for IE 11 ([22ec948](22ec948))
* **OAuth2 options:** added locale and state parameters for browser based OAuth2 ([b05996e](b05996e))
* **params:** flip param values in updateItemResource so they are passed correctly ([5093e39](5093e39)), closes [#118](#118)
* **portal:** fetch tokens for rest admin requests to services federated with ArcGIS Enterprise too ([79dda00](79dda00)), closes [#329](#329)
* **query features:** add count and extent to IQueryFeaturesResponse ([2ab9f33](2ab9f33))
* **release:** resolve issues from accidental 1.0.1 release. ([ddd3d6c](ddd3d6c))
* **release-automation:** checkout a temporary branch for release to not polute the main branch ([75a9dec](75a9dec))
* **release-automation:** fix issues found in #80. ([3b42fe9](3b42fe9))
* **release-automation:** fix issues uncovered by 1st release ([a73b76f](a73b76f))
* **release-automation:** fix release automation to prep for a 1.0.2 relase ([9dfd957](9dfd957))
* **release-automation:** run git fetch --all in release:prepare to make sure all changes are fetch f ([bb7d9e8](bb7d9e8))
* **request:** allow options.fetch without global fetch ([99cf01c](99cf01c)), closes [#108](#108)
* **request:** ensure falsy request parameters are passed through ([3c69a10](3c69a10)), closes [#142](#142)
* **request:** ensure request is passed through as a request parameter ([77ad553](77ad553)), closes [#142](#142)
* **request:** fix binding of default global fetch ([6d04ded](6d04ded))
* **search:** ensure searchItems can mixin arbitrary parameters with a searchform ([a26b935](a26b935))
* **sharing:** ensure internal sharing metadata calls pass through custom request options ([e70a10d](e70a10d)), closes [#276](#276)
* **sharing:** rework group membership checking, fix UserSession.getUser scope issue ([909a37e](909a37e))
* **umd:** strip outdated umd files from npm packages ([2e1764d](2e1764d)), closes [#198](#198)
* **users:** users defaults to https://www.arcgis.com instead of http:// ([7e3d9f6](7e3d9f6))
* **UserSession:** throw ArcGISAuthError instead of Error when unable to refresh a token ([8854765](8854765)), closes [#56](#56)

### Code Refactoring

* **feature responses:** removes unneccessay feature layer response interfaces ([1948010](1948010))
* **feature-layer:** rename *Params -> *Options ([4adff11](4adff11))
* **getLayer():** brings getLayer() signature inline w/ the rest of esri-arcgis-feature-service ([f59fa90](f59fa90))
* **interface names:** removes "Request" from interface names in routing and service-admin ([5702526](5702526))
* **interfaces:** removes "Request" from option interface names ([8bce221](8bce221))
* **portal interfaces:** renames portal request/response interfaces to match their functions ([faa5b3d](faa5b3d))
* change casing of IOauth2Options to IOAuth2Options ([9ffd227](9ffd227))
* deprecate common-types package (in favor of common) ([6ab2e75](6ab2e75))
* deprecate feature-service-admin package (and bundle code in feature-service) ([f5a17b1](f5a17b1))
* remove IGeocodeParams ([b874132](b874132))
* remove IItemResourceAddRequestOptions ([ded66d3](ded66d3))
* remove serializeGroup method ([9a63219](9a63219))
* remove serviceInfo() from geocoder package ([e4e1a2d](e4e1a2d))
* remove the word Request from custom geocoding RequestOptions interfaces ([f8c6255](f8c6255))
* rename esriGeometryType interface GeometryType ([1057850](1057850))
* replace items, groups, sharing and user packages with single portal package ([64a3fd9](64a3fd9))
* stop reexporting appendCustomParams from feature-service package ([c0852cb](c0852cb))
* the signature of getItemResources is now consistent with the other getItem methods ([c6148bf](c6148bf))

### Features

* add commitlint config and release scripts ([1bb1a8f](1bb1a8f))
* **:snowman::** add basic support for accessing secure non-federated services ([fc2f06b](fc2f06b)), closes [#174](#174)
* **:two_men_holding_hands::** add getRelatedItems function to items package ([4e67637](4e67637)), closes [#282](#282)
* **:two_women_holding_hands::** add addItemRelationship and removeItemRelationship methods ([228f3d7](228f3d7)), closes [#282](#282)
* **add applyEdits function:** adds \`applyEdits()\` to feature-layer for bulk crud transactions. ([ec36841](ec36841))
* **arcgis-rest-auth:** add postMessage auth support ([a6b8a17](a6b8a17))
* **search:** allows use of the newly added but undocumented searchUserAccess and searchUserName par ([279ef9e](279ef9e))
* service name and service info fns ([bb5f90d](bb5f90d))
* **arcgis-rest-auth:** add validateAppAccess function and UserSession method ([2478ea5](2478ea5))
* **arcgis-rest-auth:** reduce postMessageAuth query params ([154515f](154515f))
* **arcgis-rest-portal:** add getPortalSettings function ([e956dc5](e956dc5))
* **arcgis-rest-portal:** add searchUsers function ([235766c](235766c))
* **arcgis-rest-types:** add editingInfo to ILayerDefinition ([e5467f0](e5467f0))
* **getItemBaseUrl:** add function to get the base REST API URL for an item ([d6ec9fc](d6ec9fc))
* **getItemInfo:** add a function to fetch an info file for an item ([a9dd7d6](a9dd7d6)), closes [#738](#738)
* **getItemMetadata:** add a function to fetch the metadata XML for an item ([c263e1b](c263e1b))
* **getJsonResource and scrubControlChars:** add getJsonResource and scrubControlChars ([6bb9215](6bb9215))
* **group:** refactor searchGroups to make use of SearchQueryBuilder ([72f2898](72f2898)), closes [#104](#104)
* **join:** new joinGroup and leaveGroup methods ([fa604de](fa604de))
* **portal:** a new function to add members to a given group ([998d3a7](998d3a7)), closes [#584](#584)
* **portal:** add reassignItem ([1756cc4](1756cc4))
* **portal:** add the function to get user tags ([#614](#614)) ([d49159f](d49159f))
* **portal:** add updateGroupMembership, isItemSharedWithGroup ([14848db](14848db))
* **portal:** searchGroupUsers searches the users in the given group ([d9151a1](d9151a1))
* **routing:** Support elevation in routing ([6b2a77c](6b2a77c))
* **service-admin:** add updateServiceDefinition method ([63c2bc0](63c2bc0))
* **UserSession:** added optional 'popupWindowFeatures' to 'IOAuth2Options' ([f96a581](f96a581))
* add resourcesPrefix parameter to addItemResource ([c368232](c368232))
* **util:** add getUserUrl method to auth package ([d742b34](d742b34))
* add support for streaming request response ([893e647](893e647))
* Support 3d point/location ([6673102](6673102))
* **request:** adds option to return the raw fetch response ([6fb7c79](6fb7c79)), closes [#462](#462)
* add demo for streaming response to file ([5c8ae22](5c8ae22))
* add getItemGroups() function to items package ([#445](#445)) ([c0cd950](c0cd950))
* **:angola::** start with utility function to format cvd codes ([717404f](717404f))
* **:bowtie::** add new method to update a user profile ([33ce92d](33ce92d))
* **:clipboard::** add support for private item resources ([b120e9f](b120e9f))
* **:file_folder::** new generic common package for utility methods AND types ([0bd3ea7](0bd3ea7))
* **:hammer::** new package to create and admin feature services ([cfdcee9](cfdcee9))
* **:nail_care::** add modern feature service metadata props to ILayerDefinition ([7c89396](7c89396))
* **:paperclip::** add support for interacting with feature service attachments ([8d25490](8d25490)), closes [#226](#226)
* **:unlock::** add support for an OAuth flow that triggers social media login automatically ([2e582e1](2e582e1)), closes [#239](#239)
* **all packages:** start shipping an unminified UMD for each package ([52043f5](52043f5)), closes [#135](#135)
* **ApplicationSession:** only allow 1 pending request for a new token at a time ([4e6f9e2](4e6f9e2))
* **arcgis-rest-js:** add a "headers" option to IRequestOptions and pass on the headers to the reque ([266b85a](266b85a))
* by default fetch metadata and make query response readable ([3c96fce](3c96fce)), closes [#375](#375)
* **auth:** add getCredential() method to UserSession for jsapi ([c03430d](c03430d)), closes [#208](#208)
* **auth:** add reflexive method to instantiate UserSession from jsapi auth ([ea64da9](ea64da9)), closes [#208](#208)
* **caring:** methods to un/share items with groups ([8572bb0](8572bb0))
* **caring:** new sharing package with method to set access on items ([a212d59](a212d59)), closes [#43](#43)
* **common-types:** add more common types, keep the 'I' in front of interfaces ([d91dd0e](d91dd0e))
* **common-types:** Added webmap interfaces and types ([e52f115](e52f115))
* **feature-service:** add feature service CRUD methods ([5cb8fbc](5cb8fbc)), closes [#176](#176)
* **groups:** add createGroupNotification ([4baab64](4baab64))
* **lots more common-types:** adding a lot more common data types ([73ce0b8](73ce0b8))
* **new users package:** added rest-users with a single method ([a24ed0b](a24ed0b)), closes [#159](#159)
* **request:** allow passing custom fetch function ([920d1ff](920d1ff))
* **resources:** new method to add a new resource to an item ([9c63075](9c63075)), closes [#281](#281)
* **ResponseFormats:** add support for f=geojson for Feature Layers ([79bc776](79bc776)), closes [#20](#20)
* **users:** add getUserNotifications function ([9fbc5e2](9fbc5e2))
* **users:** add user invitation functions ([80aa6dc](80aa6dc))
* **users:** adds removeNotification function ([b4a55d0](b4a55d0))
* support for adding blobs as item/data ([0cfd275](0cfd275))
* **UserSession:** multiple requests to getToken for similar URLs now return the same Promise ([751e5f1](751e5f1))
* **UserSession:** rename refreshTokenDuration to refreshTokenTTL ([a6406d4](a6406d4))

### Reverts

* Revert "aggs counts should be an array" ([55a1e27](55a1e27))

### BREAKING CHANGES

* deprecated addItemJsonData
* **portal interfaces:** removes "Request" from portal option interfaces & renames response interfaces
* **interface names:** removed "Request" from interface names in routing and service-admin
* **interfaces:** Options interfaces in @esri/arcgis-rest-feature-layer have been renamed
* IGeocodeRequesttOptions is now IGeocodeOptions, IBulkGeocodingRequestOptions is now
IBulkGeocodeOptions
* **feature responses:** removes IAddFeaturesResult, IAddAttachmentResponse, IDeleteFeaturesResult,
IDeleteAttachmentsResponse, IGetAttachmentsResponse, IUpdateFeaturesResult, &
IUpdateAttachmentResponse
* **feature-layer:** renamed IEditFeaturesParams to ISharedEditOptions & ISharedQueryParams to ISharedQueryOptions;
removed IDeleteFeaturesParams
* **getLayer():** changed signature of getLayer() fn to always expect an options hash
* **group:** searchGroups signature change
* replace items, groups, sharing and user packages with single portal package
* deprecate feature-service-admin package (and bundle code in feature-service)
* deprecate common-types package (in favor of common)
* IItemResourceAddRequestOptions has been removed
* the signature of getItemResources is now consistent with the other getItem methods
* rename esriGeometryType interface GeometryType
* remove serializeGroup helper method from groups package
* change casing of IOauth2Options to IOAuth2Options
* appendCustomParams is no longer exported by feature-service package
* remove IGeocodeParams from geocoder package
* remove serviceInfo() from geocoder package
* **routing:** Switch x and y in point for solveRoute
* **lots more common-types:** no longer prefacing interface names with an I
github-actions bot pushed a commit that referenced this issue Feb 17, 2022
# 1.0.0-beta.1 (2022-02-17)

### Bug Fixes

* minor edit in package.json ([9c59978](9c59978))
* switch to eslint, fix minor issues, disable other rules ([ab47412](ab47412))
* **:bathtub::** remove magicKey from suggest, surface it more prominently in geocode ([fb2ba9a](fb2ba9a)), closes [#459](#459)
* **:bug::** allow for group sharing of public items outside an organization ([e47a772](e47a772))
* **:bug::** dont set referer to null in browser apps ([0b1bf2b](0b1bf2b))
* **:bug::** ensure that custom headers arent misidentified as request parameters ([4ff33b1](4ff33b1)), closes [#290](#290)
* **🐛:** ensure createFeatureService doesnt swallow errors ([8173aa5](8173aa5))
* **add resource:** make resource an optional parameter ([1db78b7](1db78b7))
* **aggs counts should be array:** aggs counts should be array ([72b3bf7](72b3bf7))
* **arcgis-rest-auth:** enable oAuth from within an IFrame ([e6538d5](e6538d5)), closes [#711](#711)
* **arcgis-rest-auth:** export validateAppAccess ([6d1e2ef](6d1e2ef))
* **arcgis-rest-auth:** postMessage internals ([bd8eb6c](bd8eb6c))
* **arcgis-rest-feature-layer:** streamline promises ([ebb8380](ebb8380))
* **arcgis-rest-portal:** add fetchMock setup for intermittent failing tests ([5384984](5384984))
* **arcgis-rest-portal:** do not do any membership adjustments if the group is the user's favorites g ([6fc8ada](6fc8ada))
* **arcgis-rest-portal:** make \`layers\` parameter of \`IExportParameters\` optional ([0b584e6](0b584e6))
* **arcgis-rest-portal:** share as admin uses content/users/:ownername/items/:id/share end-point ([fd1a960](fd1a960))
* **arcgis-rest-portal:** use deleteRelationship not removeRelationship ([890e485](890e485)), closes [#739](#739)
* **arcgis-rest-portal:** wrong parameters for file upload APIs ([#761](#761)) ([cbfef7d](cbfef7d)), closes [#693](#693) [#694](#694) [#700](#700)
* **auth:** add additional authentication providers ([85f73b2](85f73b2))
* **bulk geocoding:** clean up code in bulk geocoding ([5e28028](5e28028)), closes [#630](#630)
* **common:** Fix location test xy ([27cab54](27cab54))
* **edit:** ensure IEditFeatureResult is exported ([2c65102](2c65102))
* **geocode:** ensure the magicKey property is passed through. ([#603](#603)) ([cc2c352](cc2c352)), closes [#601](#601)
* **ITable.id type:** change ITable.id type to number ([02c609a](02c609a)), closes [#808](#808)
* **lock:** make passing authentication mandatory to methods that update groups ([14bdf88](14bdf88))
* **lock:** pass through url and options for non-federated requests ([802006c](802006c))
* **null:** dont stringify values in item calls ([c0f48fc](c0f48fc))
* **portal:** searchGroupUsers will now respect joined and memberType parameters ([79b15b5](79b15b5))
* **portal:** setting item access to public shares correctly ([6a2b115](6a2b115))
* **removeItemResource:** support correct parameters ([#835](#835)) ([96798fe](96798fe))
* **routing:** Fix switched x and y ([cc22727](cc22727))
* **search:** add support for untyped, grouped search strings ([39fc213](39fc213)), closes [#544](#544)
* **search:** allow NOT as a standalone modifier ([36a6bca](36a6bca)), closes [#542](#542)
* **search:** sortOrder is a valid search param, searchDir is not ([9caeafd](9caeafd)), closes [#540](#540)
* **updateItemResources:** support item resource prefix ([98be7a7](98be7a7)), closes [#824](#824)
* **UserSession:** remove /sharing/rest from server url during postMessage auth ([04fcdbd](04fcdbd))
* **UserSession:** switch "duration" to "expiration" in IOAuth2Options ([#847](#847)) ([392f5bb](392f5bb)), closes [#843](#843)
* ensure platformSelf sends cookie ([29e33cb](29e33cb))
* export app-tokens ([0171204](0171204))
* export validateAppAccess function ([b087de2](b087de2))
* platformSelf to send cookies and append f=json in url ([ed81919](ed81919))
* update IPlatformSelfResponse to include expires_in ([dd3557b](dd3557b))
* **auth:** improve query and error handling when completing sign in ([4b3905c](4b3905c))
* **getItemResources:** allow user to override paging ([97cbec0](97cbec0))
* **getItemResources:** do not mutate requestOptions in getItemResources ([cac63e8](cac63e8))
* **queryFeatures:** pass along f, geometry, geometryType, and spatialRel params ([f4b775d](f4b775d)), closes [#588](#588)
* **search:** ensure no space is inserted between search fields and terms ([ff90f51](ff90f51)), closes [#545](#545)
* **searchGroupUsers func:** searchOptions is now an optional parameter ([d54bddb](d54bddb)), closes [#615](#615)
* **server root url:** improve discovery of services endpoint root url ([b2eed90](b2eed90)), closes [#581](#581)
* **sharing:** correct the item sharing logic to reflect what the api actually allows ([48b67e5](48b67e5))
* **sharing:** only item owner, group owner or group admin can unshare ([d264137](d264137))
* **try:** try an anonymous request before throwing an auth error ([9209035](9209035))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([#550](#550)) ([1a527a3](1a527a3))
* **UserSession:** will now update expired tokens on non-federated servers ([af121c1](af121c1))
* catch err internally when getItemData doesnt find any ([#505](#505)) ([914a5be](914a5be)), closes [#504](#504)
* default to GET when fetching attachments ([b6d746c](b6d746c))
* ensure no space is inserted between search fields and terms ([#552](#552)) ([391e3f8](391e3f8))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([3b41f3d](3b41f3d)), closes [#549](#549)
* ensure failure to generate a token results in an auth err ([bd03b19](bd03b19)), closes [#476](#476)
* ensure JSON and binary data are both handled consistently ([9f85087](9f85087))
* force FormData when calling /updateResources ([24af241](24af241)), closes [#499](#499)
* let request do the serializing ([c2d2671](c2d2671))
* **:2nd_place_medal::** added numViews and size properties to IItem ([1d38da1](1d38da1)), closes [#378](#378)
* **:basecamp::** ensure decodeValues() isnt derailled by attributes not present in metadata ([e9b4581](e9b4581))
* **:bathtub::** add utility method to trim whitespace and trailing slashes from input urls ([8f86578](8f86578))
* **:bathtub::** ensure add/update/deleteFeatures dont pass extraneous parameters ([8566860](8566860))
* **:bug::** ensure fix session.portal url when cred.server contains sharing/rest ([815de49](815de49))
* **:bug::** ensure getGeocodeService() is exported ([71801c2](71801c2)), closes [#267](#267)
* **:bug::** ensure that the same referer is set in Node.js applications that is passed along in toke ([afaa564](afaa564))
* **:bug::** improve error message when no FormData or Promise can be found ([89ff196](89ff196)), closes [#322](#322)
* **:bug::** support use in Node.js with custom fetch (and no global) ([90f9e75](90f9e75)), closes [#203](#203)
* **:bug::** tags arent required to create a group ([72ffd35](72ffd35))
* **:bug::** treat ArcGIS Online orgs as equivalent to arcgis.com when testing a portal ([18c3a7f](18c3a7f)), closes [#233](#233)
* **:closed_lock_with_key::** expose option to customize expiration of ApplicationSession tokens ([5af14d7](5af14d7)), closes [#314](#314)
* **:couple::** make it possible to update a service using a layer definition ([462af65](462af65))
* **:grey_question::** make item.protected optional, since search doesnt return it ([7aa8123](7aa8123))
* **:mag::** allow node.js clients to access streams ([95a35ce](95a35ce)), closes [#373](#373)
* **:moyai::** ensure first class citizen geocode request options are passed through ([ad28f27](ad28f27))
* **:musical_keyboard::** more types for new services/layer definitions ([8bdb30b](8bdb30b))
* **arcgis-rest-auth:** ensure that mixed casing of federated server urls does not break the system ([07c92f5](07c92f5))
* **ArcGISRequestError:** replace null or empty messages and codes with UNKNOWN_ERROR and UNKNOWN_ERR ([bcea1da](bcea1da))
* **auth:** allow trailing slash in portal URL ([b76da90](b76da90))
* **auth:** better regex match for usernames ([d38a7fb](d38a7fb))
* **auth:** decode username when parsing response from OAuth ([e0c2a44](e0c2a44)), closes [#165](#165)
* **auth:** use www.arcgis.com consistently ([a7dc28d](a7dc28d)), closes [#223](#223)
* **build:** set other @esri/arcgis-rest-js-* pacakges as external ([2f77c9f](2f77c9f)), closes [#128](#128)
* **check-for-errors:** throw an error for a response with a \`failure\` status ([9ee1c0c](9ee1c0c))
* **common-types:** ensure typings are distributed in common-types npm package ([bec3fbf](bec3fbf)), closes [#151](#151)
* **createItem:** owner > item.owner > authentication.username ([76680a1](76680a1))
* **enterprise:** fetch fresh token manually when u/pw are provided ([299f3c0](299f3c0)), closes [#161](#161)
* **fetch:** set credentials: 'same-origin' in fetch options to support sending IWA cookies ([a4d0115](a4d0115))
* **Fixes geocoder issue where it tries to assign a spatial reference to a null extent:** implemented ([bfad977](bfad977)), closes [#376](#376)
* get slack notifications working again ([85fd55c](85fd55c))
* **crud:** enforce more AGOL rules in item crud operations ([3f365d9](3f365d9)), closes [#246](#246)
* **encodeFormData:** append file name based on object type instead of key and name properties ([401c6dd](401c6dd))
* **geocode:** max sure user supplied request options are all passed through ([3ffa710](3ffa710))
* **geocoding-demo:** change placeholders to values ([cfc7f7a](cfc7f7a))
* **getPortalUrl:** make getPortalUrl use portal in request options if passed in ([6103101](6103101)), closes [#180](#180)
* **IItem:** make all IItem properties optional ([8df9278](8df9278)), closes [#171](#171)
* **item:** use fileName parameter to name Blobs when present ([9f5c093](9f5c093))
* **items:** dont override user supplied parameters when updating items ([eaa1656](eaa1656)), closes [#117](#117)
* **itemSearch:** max sure user supplied request options are all passed through ([afb9e38](afb9e38)), closes [#183](#183)
* **oauth:** check for window parent correctly in ouath without popup ([a27bb7d](a27bb7d))
* **oAuth:** fix oAuth2 methods in IE 11 and Edge ([462f980](462f980))
* **oauth-demo:** remove ES2015 buts from oAuth Demo for IE 11 ([22ec948](22ec948))
* **OAuth2 options:** added locale and state parameters for browser based OAuth2 ([b05996e](b05996e))
* **params:** flip param values in updateItemResource so they are passed correctly ([5093e39](5093e39)), closes [#118](#118)
* **portal:** fetch tokens for rest admin requests to services federated with ArcGIS Enterprise too ([79dda00](79dda00)), closes [#329](#329)
* **query features:** add count and extent to IQueryFeaturesResponse ([2ab9f33](2ab9f33))
* **release:** resolve issues from accidental 1.0.1 release. ([ddd3d6c](ddd3d6c))
* **release-automation:** checkout a temporary branch for release to not polute the main branch ([75a9dec](75a9dec))
* **release-automation:** fix issues found in #80. ([3b42fe9](3b42fe9))
* **release-automation:** fix issues uncovered by 1st release ([a73b76f](a73b76f))
* **release-automation:** fix release automation to prep for a 1.0.2 relase ([9dfd957](9dfd957))
* **release-automation:** run git fetch --all in release:prepare to make sure all changes are fetch f ([bb7d9e8](bb7d9e8))
* **request:** allow options.fetch without global fetch ([99cf01c](99cf01c)), closes [#108](#108)
* **request:** ensure falsy request parameters are passed through ([3c69a10](3c69a10)), closes [#142](#142)
* **request:** ensure request is passed through as a request parameter ([77ad553](77ad553)), closes [#142](#142)
* **request:** fix binding of default global fetch ([6d04ded](6d04ded))
* **search:** ensure searchItems can mixin arbitrary parameters with a searchform ([a26b935](a26b935))
* **sharing:** ensure internal sharing metadata calls pass through custom request options ([e70a10d](e70a10d)), closes [#276](#276)
* **sharing:** rework group membership checking, fix UserSession.getUser scope issue ([909a37e](909a37e))
* **umd:** strip outdated umd files from npm packages ([2e1764d](2e1764d)), closes [#198](#198)
* **users:** users defaults to https://www.arcgis.com instead of http:// ([7e3d9f6](7e3d9f6))
* **UserSession:** throw ArcGISAuthError instead of Error when unable to refresh a token ([8854765](8854765)), closes [#56](#56)

### Code Refactoring

* **feature responses:** removes unneccessay feature layer response interfaces ([1948010](1948010))
* **feature-layer:** rename *Params -> *Options ([4adff11](4adff11))
* **getLayer():** brings getLayer() signature inline w/ the rest of esri-arcgis-feature-service ([f59fa90](f59fa90))
* **interface names:** removes "Request" from interface names in routing and service-admin ([5702526](5702526))
* **interfaces:** removes "Request" from option interface names ([8bce221](8bce221))
* **portal interfaces:** renames portal request/response interfaces to match their functions ([faa5b3d](faa5b3d))
* change casing of IOauth2Options to IOAuth2Options ([9ffd227](9ffd227))
* deprecate common-types package (in favor of common) ([6ab2e75](6ab2e75))
* deprecate feature-service-admin package (and bundle code in feature-service) ([f5a17b1](f5a17b1))
* remove IGeocodeParams ([b874132](b874132))
* remove IItemResourceAddRequestOptions ([ded66d3](ded66d3))
* remove serializeGroup method ([9a63219](9a63219))
* remove serviceInfo() from geocoder package ([e4e1a2d](e4e1a2d))
* remove the word Request from custom geocoding RequestOptions interfaces ([f8c6255](f8c6255))
* rename esriGeometryType interface GeometryType ([1057850](1057850))
* replace items, groups, sharing and user packages with single portal package ([64a3fd9](64a3fd9))
* stop reexporting appendCustomParams from feature-service package ([c0852cb](c0852cb))
* the signature of getItemResources is now consistent with the other getItem methods ([c6148bf](c6148bf))

### Features

* add commitlint config and release scripts ([1bb1a8f](1bb1a8f))
* **:snowman::** add basic support for accessing secure non-federated services ([fc2f06b](fc2f06b)), closes [#174](#174)
* **:two_men_holding_hands::** add getRelatedItems function to items package ([4e67637](4e67637)), closes [#282](#282)
* **:two_women_holding_hands::** add addItemRelationship and removeItemRelationship methods ([228f3d7](228f3d7)), closes [#282](#282)
* **add applyEdits function:** adds \`applyEdits()\` to feature-layer for bulk crud transactions. ([ec36841](ec36841))
* **arcgis-rest-auth:** add postMessage auth support ([a6b8a17](a6b8a17))
* **search:** allows use of the newly added but undocumented searchUserAccess and searchUserName par ([279ef9e](279ef9e))
* service name and service info fns ([bb5f90d](bb5f90d))
* **arcgis-rest-auth:** add validateAppAccess function and UserSession method ([2478ea5](2478ea5))
* **arcgis-rest-auth:** reduce postMessageAuth query params ([154515f](154515f))
* **arcgis-rest-portal:** add getPortalSettings function ([e956dc5](e956dc5))
* **arcgis-rest-portal:** add searchUsers function ([235766c](235766c))
* **arcgis-rest-types:** add editingInfo to ILayerDefinition ([e5467f0](e5467f0))
* **getItemBaseUrl:** add function to get the base REST API URL for an item ([d6ec9fc](d6ec9fc))
* **getItemInfo:** add a function to fetch an info file for an item ([a9dd7d6](a9dd7d6)), closes [#738](#738)
* **getItemMetadata:** add a function to fetch the metadata XML for an item ([c263e1b](c263e1b))
* **getJsonResource and scrubControlChars:** add getJsonResource and scrubControlChars ([6bb9215](6bb9215))
* **group:** refactor searchGroups to make use of SearchQueryBuilder ([72f2898](72f2898)), closes [#104](#104)
* **join:** new joinGroup and leaveGroup methods ([fa604de](fa604de))
* **portal:** a new function to add members to a given group ([998d3a7](998d3a7)), closes [#584](#584)
* **portal:** add reassignItem ([1756cc4](1756cc4))
* **portal:** add the function to get user tags ([#614](#614)) ([d49159f](d49159f))
* **portal:** add updateGroupMembership, isItemSharedWithGroup ([14848db](14848db))
* **portal:** searchGroupUsers searches the users in the given group ([d9151a1](d9151a1))
* **routing:** Support elevation in routing ([6b2a77c](6b2a77c))
* **service-admin:** add updateServiceDefinition method ([63c2bc0](63c2bc0))
* **UserSession:** added optional 'popupWindowFeatures' to 'IOAuth2Options' ([f96a581](f96a581))
* add resourcesPrefix parameter to addItemResource ([c368232](c368232))
* **util:** add getUserUrl method to auth package ([d742b34](d742b34))
* add support for streaming request response ([893e647](893e647))
* Support 3d point/location ([6673102](6673102))
* **request:** adds option to return the raw fetch response ([6fb7c79](6fb7c79)), closes [#462](#462)
* add demo for streaming response to file ([5c8ae22](5c8ae22))
* add getItemGroups() function to items package ([#445](#445)) ([c0cd950](c0cd950))
* **:angola::** start with utility function to format cvd codes ([717404f](717404f))
* **:bowtie::** add new method to update a user profile ([33ce92d](33ce92d))
* **:clipboard::** add support for private item resources ([b120e9f](b120e9f))
* **:file_folder::** new generic common package for utility methods AND types ([0bd3ea7](0bd3ea7))
* **:hammer::** new package to create and admin feature services ([cfdcee9](cfdcee9))
* **:nail_care::** add modern feature service metadata props to ILayerDefinition ([7c89396](7c89396))
* **:paperclip::** add support for interacting with feature service attachments ([8d25490](8d25490)), closes [#226](#226)
* **:unlock::** add support for an OAuth flow that triggers social media login automatically ([2e582e1](2e582e1)), closes [#239](#239)
* **all packages:** start shipping an unminified UMD for each package ([52043f5](52043f5)), closes [#135](#135)
* **ApplicationSession:** only allow 1 pending request for a new token at a time ([4e6f9e2](4e6f9e2))
* **arcgis-rest-js:** add a "headers" option to IRequestOptions and pass on the headers to the reque ([266b85a](266b85a))
* by default fetch metadata and make query response readable ([3c96fce](3c96fce)), closes [#375](#375)
* **auth:** add getCredential() method to UserSession for jsapi ([c03430d](c03430d)), closes [#208](#208)
* **auth:** add reflexive method to instantiate UserSession from jsapi auth ([ea64da9](ea64da9)), closes [#208](#208)
* **caring:** methods to un/share items with groups ([8572bb0](8572bb0))
* **caring:** new sharing package with method to set access on items ([a212d59](a212d59)), closes [#43](#43)
* **common-types:** add more common types, keep the 'I' in front of interfaces ([d91dd0e](d91dd0e))
* **common-types:** Added webmap interfaces and types ([e52f115](e52f115))
* **feature-service:** add feature service CRUD methods ([5cb8fbc](5cb8fbc)), closes [#176](#176)
* **groups:** add createGroupNotification ([4baab64](4baab64))
* **lots more common-types:** adding a lot more common data types ([73ce0b8](73ce0b8))
* **new users package:** added rest-users with a single method ([a24ed0b](a24ed0b)), closes [#159](#159)
* **request:** allow passing custom fetch function ([920d1ff](920d1ff))
* **resources:** new method to add a new resource to an item ([9c63075](9c63075)), closes [#281](#281)
* **ResponseFormats:** add support for f=geojson for Feature Layers ([79bc776](79bc776)), closes [#20](#20)
* **users:** add getUserNotifications function ([9fbc5e2](9fbc5e2))
* **users:** add user invitation functions ([80aa6dc](80aa6dc))
* **users:** adds removeNotification function ([b4a55d0](b4a55d0))
* support for adding blobs as item/data ([0cfd275](0cfd275))
* **UserSession:** multiple requests to getToken for similar URLs now return the same Promise ([751e5f1](751e5f1))
* **UserSession:** rename refreshTokenDuration to refreshTokenTTL ([a6406d4](a6406d4))

### Reverts

* Revert "aggs counts should be an array" ([55a1e27](55a1e27))

### BREAKING CHANGES

* deprecated addItemJsonData
* **portal interfaces:** removes "Request" from portal option interfaces & renames response interfaces
* **interface names:** removed "Request" from interface names in routing and service-admin
* **interfaces:** Options interfaces in @esri/arcgis-rest-feature-layer have been renamed
* IGeocodeRequesttOptions is now IGeocodeOptions, IBulkGeocodingRequestOptions is now
IBulkGeocodeOptions
* **feature responses:** removes IAddFeaturesResult, IAddAttachmentResponse, IDeleteFeaturesResult,
IDeleteAttachmentsResponse, IGetAttachmentsResponse, IUpdateFeaturesResult, &
IUpdateAttachmentResponse
* **feature-layer:** renamed IEditFeaturesParams to ISharedEditOptions & ISharedQueryParams to ISharedQueryOptions;
removed IDeleteFeaturesParams
* **getLayer():** changed signature of getLayer() fn to always expect an options hash
* **group:** searchGroups signature change
* replace items, groups, sharing and user packages with single portal package
* deprecate feature-service-admin package (and bundle code in feature-service)
* deprecate common-types package (in favor of common)
* IItemResourceAddRequestOptions has been removed
* the signature of getItemResources is now consistent with the other getItem methods
* rename esriGeometryType interface GeometryType
* remove serializeGroup helper method from groups package
* change casing of IOauth2Options to IOAuth2Options
* appendCustomParams is no longer exported by feature-service package
* remove IGeocodeParams from geocoder package
* remove serviceInfo() from geocoder package
* **routing:** Switch x and y in point for solveRoute
* **lots more common-types:** no longer prefacing interface names with an I
github-actions bot pushed a commit that referenced this issue May 10, 2022
# 1.0.0-beta.1 (2022-05-10)

### Bug Fixes

* **:bathtub::** remove magicKey from suggest, surface it more prominently in geocode ([fb2ba9a](fb2ba9a)), closes [#459](#459)
* **:bug::** allow for group sharing of public items outside an organization ([e47a772](e47a772))
* **🐛:** ensure createFeatureService doesnt swallow errors ([8173aa5](8173aa5))
* **add resource:** make resource an optional parameter ([1db78b7](1db78b7))
* **aggs counts should be array:** aggs counts should be array ([72b3bf7](72b3bf7))
* **arcgis-rest-request:** release: inherit, bump: satisfy ([93e67a8](93e67a8))
* change to request to see how peer-deps are updated ([6f60cc3](6f60cc3))
* **arcgis-rest-auth:** enable oAuth from within an IFrame ([e6538d5](e6538d5)), closes [#711](#711)
* **arcgis-rest-feature-layer:** streamline promises ([ebb8380](ebb8380))
* **arcgis-rest-portal:** add fetchMock setup for intermittent failing tests ([5384984](5384984))
* **arcgis-rest-portal:** share as admin uses content/users/:ownername/items/:id/share end-point ([fd1a960](fd1a960))
* **arcgis-rest-request:** add support for server credentials ([#965](#965)) ([b063bcc](b063bcc))
* **arcgis-rest-request:** adds test to issue with append custom params ([2b9060f](2b9060f))
* **arcgis-rest-request:** fixes an issue in append custom params where valid params of value 0 were ([4a63dd7](4a63dd7))
* add package.json files to builds for individual build types ([#955](#955)) ([c162125](c162125))
* correct package and dep versions in -rest-routing ([c24a081](c24a081))
* ensure platformSelf sends cookie ([29e33cb](29e33cb))
* export app-tokens ([0171204](0171204))
* export validateAppAccess function ([b087de2](b087de2))
* minor edit in package.json ([9c59978](9c59978))
* switch to eslint, fix minor issues, disable other rules ([ab47412](ab47412))
* **arcgis-rest-auth:** export validateAppAccess ([6d1e2ef](6d1e2ef))
* **arcgis-rest-auth:** postMessage internals ([bd8eb6c](bd8eb6c))
* **arcgis-rest-portal:** do not do any membership adjustments if the group is the user's favorites g ([6fc8ada](6fc8ada))
* **arcgis-rest-portal:** make \`layers\` parameter of \`IExportParameters\` optional ([0b584e6](0b584e6))
* **arcgis-rest-portal:** use deleteRelationship not removeRelationship ([890e485](890e485)), closes [#739](#739)
* **arcgis-rest-portal:** wrong parameters for file upload APIs ([#761](#761)) ([cbfef7d](cbfef7d)), closes [#693](#693) [#694](#694) [#700](#700)
* **auth:** add additional authentication providers ([85f73b2](85f73b2))
* **auth:** improve query and error handling when completing sign in ([4b3905c](4b3905c))
* **bulk geocoding:** clean up code in bulk geocoding ([5e28028](5e28028)), closes [#630](#630)
* **common:** Fix location test xy ([27cab54](27cab54))
* **edit:** ensure IEditFeatureResult is exported ([2c65102](2c65102))
* **geocode:** ensure the magicKey property is passed through. ([#603](#603)) ([cc2c352](cc2c352)), closes [#601](#601)
* **getItemResources:** allow user to override paging ([97cbec0](97cbec0))
* **getItemResources:** do not mutate requestOptions in getItemResources ([cac63e8](cac63e8))
* **ITable.id type:** change ITable.id type to number ([02c609a](02c609a)), closes [#808](#808)
* **lock:** make passing authentication mandatory to methods that update groups ([14bdf88](14bdf88))
* **lock:** pass through url and options for non-federated requests ([802006c](802006c))
* **null:** dont stringify values in item calls ([c0f48fc](c0f48fc))
* **portal:** searchGroupUsers will now respect joined and memberType parameters ([79b15b5](79b15b5))
* **portal:** setting item access to public shares correctly ([6a2b115](6a2b115))
* **queryFeatures:** pass along f, geometry, geometryType, and spatialRel params ([f4b775d](f4b775d)), closes [#588](#588)
* **removeItemResource:** support correct parameters ([#835](#835)) ([96798fe](96798fe))
* **routing:** Fix switched x and y ([cc22727](cc22727))
* **search:** add support for untyped, grouped search strings ([39fc213](39fc213)), closes [#544](#544)
* **search:** allow NOT as a standalone modifier ([36a6bca](36a6bca)), closes [#542](#542)
* **search:** ensure no space is inserted between search fields and terms ([ff90f51](ff90f51)), closes [#545](#545)
* **search:** sortOrder is a valid search param, searchDir is not ([9caeafd](9caeafd)), closes [#540](#540)
* **searchGroupUsers func:** searchOptions is now an optional parameter ([d54bddb](d54bddb)), closes [#615](#615)
* **server root url:** improve discovery of services endpoint root url ([b2eed90](b2eed90)), closes [#581](#581)
* **sharing:** correct the item sharing logic to reflect what the api actually allows ([48b67e5](48b67e5))
* **sharing:** only item owner, group owner or group admin can unshare ([d264137](d264137))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([3b41f3d](3b41f3d)), closes [#549](#549)
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([#550](#550)) ([1a527a3](1a527a3))
* **updateItemResources:** support item resource prefix ([98be7a7](98be7a7)), closes [#824](#824)
* **UserSession:** remove /sharing/rest from server url during postMessage auth ([04fcdbd](04fcdbd))
* **UserSession:** switch "duration" to "expiration" in IOAuth2Options ([#847](#847)) ([392f5bb](392f5bb)), closes [#843](#843)
* platformSelf to send cookies and append f=json in url ([ed81919](ed81919))
* **UserSession:** will now update expired tokens on non-federated servers ([af121c1](af121c1))
* default to GET when fetching attachments ([b6d746c](b6d746c))
* **try:** try an anonymous request before throwing an auth error ([9209035](9209035))
* catch err internally when getItemData doesnt find any ([#505](#505)) ([914a5be](914a5be)), closes [#504](#504)
* ensure failure to generate a token results in an auth err ([bd03b19](bd03b19)), closes [#476](#476)
* ensure JSON and binary data are both handled consistently ([9f85087](9f85087))
* ensure no space is inserted between search fields and terms ([#552](#552)) ([391e3f8](391e3f8))
* force FormData when calling /updateResources ([24af241](24af241)), closes [#499](#499)
* let request do the serializing ([c2d2671](c2d2671))
* update IPlatformSelfResponse to include expires_in ([dd3557b](dd3557b))
* **:2nd_place_medal::** added numViews and size properties to IItem ([1d38da1](1d38da1)), closes [#378](#378)
* **:basecamp::** ensure decodeValues() isnt derailled by attributes not present in metadata ([e9b4581](e9b4581))
* **:bathtub::** add utility method to trim whitespace and trailing slashes from input urls ([8f86578](8f86578))
* **:bathtub::** ensure add/update/deleteFeatures dont pass extraneous parameters ([8566860](8566860))
* **:bug::** dont set referer to null in browser apps ([0b1bf2b](0b1bf2b))
* **:bug::** ensure fix session.portal url when cred.server contains sharing/rest ([815de49](815de49))
* **:bug::** ensure getGeocodeService() is exported ([71801c2](71801c2)), closes [#267](#267)
* **:bug::** ensure that custom headers arent misidentified as request parameters ([4ff33b1](4ff33b1)), closes [#290](#290)
* **:bug::** ensure that the same referer is set in Node.js applications that is passed along in toke ([afaa564](afaa564))
* **:bug::** improve error message when no FormData or Promise can be found ([89ff196](89ff196)), closes [#322](#322)
* **:bug::** support use in Node.js with custom fetch (and no global) ([90f9e75](90f9e75)), closes [#203](#203)
* **:bug::** tags arent required to create a group ([72ffd35](72ffd35))
* **:bug::** treat ArcGIS Online orgs as equivalent to arcgis.com when testing a portal ([18c3a7f](18c3a7f)), closes [#233](#233)
* **:closed_lock_with_key::** expose option to customize expiration of ApplicationSession tokens ([5af14d7](5af14d7)), closes [#314](#314)
* **:couple::** make it possible to update a service using a layer definition ([462af65](462af65))
* **:grey_question::** make item.protected optional, since search doesnt return it ([7aa8123](7aa8123))
* **:mag::** allow node.js clients to access streams ([95a35ce](95a35ce)), closes [#373](#373)
* **:moyai::** ensure first class citizen geocode request options are passed through ([ad28f27](ad28f27))
* **:musical_keyboard::** more types for new services/layer definitions ([8bdb30b](8bdb30b))
* **arcgis-rest-auth:** ensure that mixed casing of federated server urls does not break the system ([07c92f5](07c92f5))
* **ArcGISRequestError:** replace null or empty messages and codes with UNKNOWN_ERROR and UNKNOWN_ERR ([bcea1da](bcea1da))
* **auth:** allow trailing slash in portal URL ([b76da90](b76da90))
* **auth:** better regex match for usernames ([d38a7fb](d38a7fb))
* **auth:** decode username when parsing response from OAuth ([e0c2a44](e0c2a44)), closes [#165](#165)
* **auth:** use www.arcgis.com consistently ([a7dc28d](a7dc28d)), closes [#223](#223)
* **build:** set other @esri/arcgis-rest-js-* pacakges as external ([2f77c9f](2f77c9f)), closes [#128](#128)
* **check-for-errors:** throw an error for a response with a \`failure\` status ([9ee1c0c](9ee1c0c))
* **common-types:** ensure typings are distributed in common-types npm package ([bec3fbf](bec3fbf)), closes [#151](#151)
* **createItem:** owner > item.owner > authentication.username ([76680a1](76680a1))
* **crud:** enforce more AGOL rules in item crud operations ([3f365d9](3f365d9)), closes [#246](#246)
* **fetch:** set credentials: 'same-origin' in fetch options to support sending IWA cookies ([a4d0115](a4d0115))
* **Fixes geocoder issue where it tries to assign a spatial reference to a null extent:** implemented ([bfad977](bfad977)), closes [#376](#376)
* get slack notifications working again ([85fd55c](85fd55c))
* **encodeFormData:** append file name based on object type instead of key and name properties ([401c6dd](401c6dd))
* **enterprise:** fetch fresh token manually when u/pw are provided ([299f3c0](299f3c0)), closes [#161](#161)
* **geocode:** max sure user supplied request options are all passed through ([3ffa710](3ffa710))
* **geocoding-demo:** change placeholders to values ([cfc7f7a](cfc7f7a))
* **getPortalUrl:** make getPortalUrl use portal in request options if passed in ([6103101](6103101)), closes [#180](#180)
* **IItem:** make all IItem properties optional ([8df9278](8df9278)), closes [#171](#171)
* **item:** use fileName parameter to name Blobs when present ([9f5c093](9f5c093))
* **items:** dont override user supplied parameters when updating items ([eaa1656](eaa1656)), closes [#117](#117)
* **itemSearch:** max sure user supplied request options are all passed through ([afb9e38](afb9e38)), closes [#183](#183)
* **oauth:** check for window parent correctly in ouath without popup ([a27bb7d](a27bb7d))
* **oAuth:** fix oAuth2 methods in IE 11 and Edge ([462f980](462f980))
* **oauth-demo:** remove ES2015 buts from oAuth Demo for IE 11 ([22ec948](22ec948))
* **OAuth2 options:** added locale and state parameters for browser based OAuth2 ([b05996e](b05996e))
* **params:** flip param values in updateItemResource so they are passed correctly ([5093e39](5093e39)), closes [#118](#118)
* **portal:** fetch tokens for rest admin requests to services federated with ArcGIS Enterprise too ([79dda00](79dda00)), closes [#329](#329)
* **query features:** add count and extent to IQueryFeaturesResponse ([2ab9f33](2ab9f33))
* **release:** resolve issues from accidental 1.0.1 release. ([ddd3d6c](ddd3d6c))
* **release-automation:** checkout a temporary branch for release to not polute the main branch ([75a9dec](75a9dec))
* **release-automation:** fix issues found in #80. ([3b42fe9](3b42fe9))
* **release-automation:** fix issues uncovered by 1st release ([a73b76f](a73b76f))
* **release-automation:** fix release automation to prep for a 1.0.2 relase ([9dfd957](9dfd957))
* **release-automation:** run git fetch --all in release:prepare to make sure all changes are fetch f ([bb7d9e8](bb7d9e8))
* **request:** allow options.fetch without global fetch ([99cf01c](99cf01c)), closes [#108](#108)
* **request:** ensure falsy request parameters are passed through ([3c69a10](3c69a10)), closes [#142](#142)
* **request:** ensure request is passed through as a request parameter ([77ad553](77ad553)), closes [#142](#142)
* **request:** fix binding of default global fetch ([6d04ded](6d04ded))
* **search:** ensure searchItems can mixin arbitrary parameters with a searchform ([a26b935](a26b935))
* **sharing:** ensure internal sharing metadata calls pass through custom request options ([e70a10d](e70a10d)), closes [#276](#276)
* **sharing:** rework group membership checking, fix UserSession.getUser scope issue ([909a37e](909a37e))
* **umd:** strip outdated umd files from npm packages ([2e1764d](2e1764d)), closes [#198](#198)
* **users:** users defaults to https://www.arcgis.com instead of http:// ([7e3d9f6](7e3d9f6))
* **UserSession:** throw ArcGISAuthError instead of Error when unable to refresh a token ([8854765](8854765)), closes [#56](#56)

### Code Refactoring

* **feature responses:** removes unneccessay feature layer response interfaces ([1948010](1948010))
* **feature-layer:** rename *Params -> *Options ([4adff11](4adff11))
* **getLayer():** brings getLayer() signature inline w/ the rest of esri-arcgis-feature-service ([f59fa90](f59fa90))
* **interface names:** removes "Request" from interface names in routing and service-admin ([5702526](5702526))
* **interfaces:** removes "Request" from option interface names ([8bce221](8bce221))
* **portal interfaces:** renames portal request/response interfaces to match their functions ([faa5b3d](faa5b3d))
* change casing of IOauth2Options to IOAuth2Options ([9ffd227](9ffd227))
* deprecate common-types package (in favor of common) ([6ab2e75](6ab2e75))
* deprecate feature-service-admin package (and bundle code in feature-service) ([f5a17b1](f5a17b1))
* remove IGeocodeParams ([b874132](b874132))
* remove IItemResourceAddRequestOptions ([ded66d3](ded66d3))
* remove serializeGroup method ([9a63219](9a63219))
* remove serviceInfo() from geocoder package ([e4e1a2d](e4e1a2d))
* remove the word Request from custom geocoding RequestOptions interfaces ([f8c6255](f8c6255))
* rename esriGeometryType interface GeometryType ([1057850](1057850))
* replace items, groups, sharing and user packages with single portal package ([64a3fd9](64a3fd9))
* stop reexporting appendCustomParams from feature-service package ([c0852cb](c0852cb))
* the signature of getItemResources is now consistent with the other getItem methods ([c6148bf](c6148bf))

### Features

* **add applyEdits function:** adds \`applyEdits()\` to feature-layer for bulk crud transactions. ([ec36841](ec36841))
* **arcgis-rest-auth:** add postMessage auth support ([a6b8a17](a6b8a17))
* **arcgis-rest-auth:** add validateAppAccess function and UserSession method ([2478ea5](2478ea5))
* **arcgis-rest-auth:** reduce postMessageAuth query params ([154515f](154515f))
* **arcgis-rest-request:** add demo and code for ability to share session between client and server ([ee9ac4c](ee9ac4c))
* **arcgis-rest-request:** add support for AbortSignal ([#970](#970)) ([0f314f6](0f314f6))
* **arcgis-rest-request:** allow state variable to be passed through on server side oauth ([fdbe612](fdbe612))
* **arcgis-rest-request:** force dep release ([87c511d](87c511d))
* **arcgis-rest-request:** force dep release ([409e62f](409e62f))
* **arcgis-rest-request:** force release ([9acfacc](9acfacc))
* **arcgis-rest-request:** refresh session and retry with new token for invalid token errors ([54df4ca](54df4ca))
* **arcgis-rest-request:** rewrite oauth 2 functions to use PKCE ([e49f88c](e49f88c))
* add commitlint config and release scripts ([1bb1a8f](1bb1a8f))
* force dep release ([55f665d](55f665d))
* **arcgis-rest-portal:** add getPortalSettings function ([e956dc5](e956dc5))
* **arcgis-rest-portal:** add searchUsers function ([235766c](235766c))
* **arcgis-rest-types:** add editingInfo to ILayerDefinition ([e5467f0](e5467f0))
* **getItemBaseUrl:** add function to get the base REST API URL for an item ([d6ec9fc](d6ec9fc))
* **getItemInfo:** add a function to fetch an info file for an item ([a9dd7d6](a9dd7d6)), closes [#738](#738)
* **getItemMetadata:** add a function to fetch the metadata XML for an item ([c263e1b](c263e1b))
* **group:** refactor searchGroups to make use of SearchQueryBuilder ([72f2898](72f2898)), closes [#104](#104)
* **join:** new joinGroup and leaveGroup methods ([fa604de](fa604de))
* **portal:** a new function to add members to a given group ([998d3a7](998d3a7)), closes [#584](#584)
* **portal:** add reassignItem ([1756cc4](1756cc4))
* **portal:** add the function to get user tags ([#614](#614)) ([d49159f](d49159f))
* **portal:** add updateGroupMembership, isItemSharedWithGroup ([14848db](14848db))
* **request:** adds option to return the raw fetch response ([6fb7c79](6fb7c79)), closes [#462](#462)
* **routing:** Support elevation in routing ([6b2a77c](6b2a77c))
* **search:** allows use of the newly added but undocumented searchUserAccess and searchUserName par ([279ef9e](279ef9e))
* service name and service info fns ([bb5f90d](bb5f90d))
* **getJsonResource and scrubControlChars:** add getJsonResource and scrubControlChars ([6bb9215](6bb9215))
* **portal:** searchGroupUsers searches the users in the given group ([d9151a1](d9151a1))
* **service-admin:** add updateServiceDefinition method ([63c2bc0](63c2bc0))
* **UserSession:** added optional 'popupWindowFeatures' to 'IOAuth2Options' ([f96a581](f96a581))
* add demo for streaming response to file ([5c8ae22](5c8ae22))
* add resourcesPrefix parameter to addItemResource ([c368232](c368232))
* **util:** add getUserUrl method to auth package ([d742b34](d742b34))
* add support for streaming request response ([893e647](893e647))
* Support 3d point/location ([6673102](6673102))
* **:angola::** start with utility function to format cvd codes ([717404f](717404f))
* **:bowtie::** add new method to update a user profile ([33ce92d](33ce92d))
* **:clipboard::** add support for private item resources ([b120e9f](b120e9f))
* **:file_folder::** new generic common package for utility methods AND types ([0bd3ea7](0bd3ea7))
* **:hammer::** new package to create and admin feature services ([cfdcee9](cfdcee9))
* **:nail_care::** add modern feature service metadata props to ILayerDefinition ([7c89396](7c89396))
* **:paperclip::** add support for interacting with feature service attachments ([8d25490](8d25490)), closes [#226](#226)
* **:snowman::** add basic support for accessing secure non-federated services ([fc2f06b](fc2f06b)), closes [#174](#174)
* **:two_men_holding_hands::** add getRelatedItems function to items package ([4e67637](4e67637)), closes [#282](#282)
* **:two_women_holding_hands::** add addItemRelationship and removeItemRelationship methods ([228f3d7](228f3d7)), closes [#282](#282)
* add getItemGroups() function to items package ([#445](#445)) ([c0cd950](c0cd950))
* **:unlock::** add support for an OAuth flow that triggers social media login automatically ([2e582e1](2e582e1)), closes [#239](#239)
* **all packages:** start shipping an unminified UMD for each package ([52043f5](52043f5)), closes [#135](#135)
* **arcgis-rest-js:** add a "headers" option to IRequestOptions and pass on the headers to the reque ([266b85a](266b85a))
* by default fetch metadata and make query response readable ([3c96fce](3c96fce)), closes [#375](#375)
* **ApplicationSession:** only allow 1 pending request for a new token at a time ([4e6f9e2](4e6f9e2))
* **auth:** add getCredential() method to UserSession for jsapi ([c03430d](c03430d)), closes [#208](#208)
* **auth:** add reflexive method to instantiate UserSession from jsapi auth ([ea64da9](ea64da9)), closes [#208](#208)
* **caring:** methods to un/share items with groups ([8572bb0](8572bb0))
* **caring:** new sharing package with method to set access on items ([a212d59](a212d59)), closes [#43](#43)
* **common-types:** add more common types, keep the 'I' in front of interfaces ([d91dd0e](d91dd0e))
* **common-types:** Added webmap interfaces and types ([e52f115](e52f115))
* **feature-service:** add feature service CRUD methods ([5cb8fbc](5cb8fbc)), closes [#176](#176)
* **groups:** add createGroupNotification ([4baab64](4baab64))
* **lots more common-types:** adding a lot more common data types ([73ce0b8](73ce0b8))
* **new users package:** added rest-users with a single method ([a24ed0b](a24ed0b)), closes [#159](#159)
* **request:** allow passing custom fetch function ([920d1ff](920d1ff))
* **resources:** new method to add a new resource to an item ([9c63075](9c63075)), closes [#281](#281)
* **ResponseFormats:** add support for f=geojson for Feature Layers ([79bc776](79bc776)), closes [#20](#20)
* **users:** add getUserNotifications function ([9fbc5e2](9fbc5e2))
* **users:** add user invitation functions ([80aa6dc](80aa6dc))
* **users:** adds removeNotification function ([b4a55d0](b4a55d0))
* support for adding blobs as item/data ([0cfd275](0cfd275))
* **UserSession:** multiple requests to getToken for similar URLs now return the same Promise ([751e5f1](751e5f1))
* **UserSession:** rename refreshTokenDuration to refreshTokenTTL ([a6406d4](a6406d4))

### Reverts

* Revert "aggs counts should be an array" ([55a1e27](55a1e27))

### BREAKING CHANGES

* deprecated addItemJsonData
* **portal interfaces:** removes "Request" from portal option interfaces & renames response interfaces
* **interface names:** removed "Request" from interface names in routing and service-admin
* **interfaces:** Options interfaces in @esri/arcgis-rest-feature-layer have been renamed
* IGeocodeRequesttOptions is now IGeocodeOptions, IBulkGeocodingRequestOptions is now
IBulkGeocodeOptions
* **feature responses:** removes IAddFeaturesResult, IAddAttachmentResponse, IDeleteFeaturesResult,
IDeleteAttachmentsResponse, IGetAttachmentsResponse, IUpdateFeaturesResult, &
IUpdateAttachmentResponse
* **feature-layer:** renamed IEditFeaturesParams to ISharedEditOptions & ISharedQueryParams to ISharedQueryOptions;
removed IDeleteFeaturesParams
* **getLayer():** changed signature of getLayer() fn to always expect an options hash
* **group:** searchGroups signature change
* replace items, groups, sharing and user packages with single portal package
* deprecate feature-service-admin package (and bundle code in feature-service)
* deprecate common-types package (in favor of common)
* IItemResourceAddRequestOptions has been removed
* the signature of getItemResources is now consistent with the other getItem methods
* rename esriGeometryType interface GeometryType
* remove serializeGroup helper method from groups package
* change casing of IOauth2Options to IOAuth2Options
* appendCustomParams is no longer exported by feature-service package
* remove IGeocodeParams from geocoder package
* remove serviceInfo() from geocoder package
* **routing:** Switch x and y in point for solveRoute
* **lots more common-types:** no longer prefacing interface names with an I
@addy
Copy link

addy commented Feb 28, 2023

@AviCueva

Man... this was a fun one to figure out. For those of you still having issues. This is how I was able to publish utilizing GeoJson.

  let file = fs.createReadStream(`Item_${itemNum}.geoJson`)

Were you actually able to upload a Stream through addItemPart? We are getting 400s on our side.

@AviCueva
Copy link

@addy - Yes. One thing to note. I believe I was utilizing version 3.5ish of the API. Not sure about your 400 errors, but if I recall correctly, it's because the item had not yet been created completely yet. This is why I added a manual 15 second delay. I'd try to access the REST end point and see if the item exists and is just waiting for data.

Version 4.0 - Esri provided examples
https://github.com/Esri/arcgis-rest-js/blob/main/demos/attachments-node/index.js

https://github.com/Esri/arcgis-rest-js/blob/main/demos/stream-response-to-file/index.js

github-actions bot pushed a commit that referenced this issue May 4, 2023
# 1.0.0 (2023-05-04)

### Bug Fixes

* **arcgis-rest-auth:** export validateAppAccess ([6d1e2ef](6d1e2ef))
* **arcgis-rest-auth:** postMessage internals ([bd8eb6c](bd8eb6c))
* **arcgis-rest-feature-layer:** streamline promises ([ebb8380](ebb8380))
* **arcgis-rest-feature-service:** use correct path for unpkg ([7585ce7](7585ce7))
* **arcgis-rest-portal:** add fetchMock setup for intermittent failing tests ([5384984](5384984))
* **arcgis-rest-portal:** add supported search fields ([#1017](#1017)) ([2be361a](2be361a))
* **arcgis-rest-portal:** share as admin uses content/users/:ownername/items/:id/share end-point ([fd1a960](fd1a960))
* **arcgis-rest-portal:** use correct path for unpkg ([6e24c1d](6e24c1d))
* **arcgis-rest-request:** add support for server credentials ([#965](#965)) ([b063bcc](b063bcc))
* **arcgis-rest-request:** add withOptions to export ([ea3f2ec](ea3f2ec))
* **arcgis-rest-request:** Added Params Preprocessor for GP Mutilvalue Inputs ([#1027](#1027)) ([cf75cd6](cf75cd6))
* **arcgis-rest-request:** added social providers ([caf8d11](caf8d11))
* **arcgis-rest-request:** adds test to issue with append custom params ([2b9060f](2b9060f))
* **arcgis-rest-request:** fix [#1035](#1035) by adding parsing for generateToken endpoints on ArcGIS Server ([c0ff7a3](c0ff7a3))
* **arcgis-rest-request:** fixes an issue in append custom params where valid params of value 0 were ([4a63dd7](4a63dd7))
* **arcgis-rest-request:** geometry type esriGeometryMultiPatch ([#1102](#1102)) ([b5e1aa4](b5e1aa4))
* **arcgis-rest-request:** pass referer ([c950c4a](c950c4a))
* **arcgis-rest-request:** pass referer ([81c2de8](81c2de8))
* **arcgis-rest-request:** pass referer ([57de1f6](57de1f6))
* **arcgis-rest-request:** pass referer ([5af0c3b](5af0c3b))
* **arcgis-rest-request:** pass referer ([08ec6fd](08ec6fd))
* **arcgis-rest-request:** pass referer ([8ba4890](8ba4890))
* [#995](#995) and [#1006](#1006), issues with redirect urls ([f03ed13](f03ed13))
* add error parameter to IEditFeatureResult ([#1038](#1038)) ([36f78e5](36f78e5))
* **arcgis-rest-routing:** url param ([#1028](#1028)) ([3713b81](3713b81))
* add package.json files to builds for individual build types ([#955](#955)) ([c162125](c162125))
* change all in-repo dep and peerDeps to use ranges ([8091910](8091910))
* correct package and dep versions in -rest-routing ([c24a081](c24a081))
* encode item extent prior to calling request ([135600c](135600c))
* ensure platformSelf sends cookie ([29e33cb](29e33cb))
* export app-tokens ([0171204](0171204))
* export validateAppAccess function ([b087de2](b087de2))
* minor edit in package.json ([9c59978](9c59978))
* platformSelf to send cookies and append f=json in url ([ed81919](ed81919))
* resolve cross-org sharing as admin bug ([1ae4f1a](1ae4f1a))
* switch to eslint, fix minor issues, disable other rules ([ab47412](ab47412))
* update package versions post v4 launch ([2560c34](2560c34))
* **add resource:** make resource an optional parameter ([1db78b7](1db78b7))
* **aggs counts should be array:** aggs counts should be array ([72b3bf7](72b3bf7))
* **arcgis-rest-auth:** enable oAuth from within an IFrame ([e6538d5](e6538d5)), closes [#711](#711)
* **arcgis-rest-portal:** do not do any membership adjustments if the group is the user's favorites g ([6fc8ada](6fc8ada))
* **arcgis-rest-portal:** make \`layers\` parameter of \`IExportParameters\` optional ([0b584e6](0b584e6))
* **arcgis-rest-portal:** use deleteRelationship not removeRelationship ([890e485](890e485)), closes [#739](#739)
* **arcgis-rest-portal:** wrong parameters for file upload APIs ([#761](#761)) ([cbfef7d](cbfef7d)), closes [#693](#693) [#694](#694) [#700](#700)
* **auth:** add additional authentication providers ([85f73b2](85f73b2))
* **auth:** improve query and error handling when completing sign in ([4b3905c](4b3905c))
* **bulk geocoding:** clean up code in bulk geocoding ([5e28028](5e28028)), closes [#630](#630)
* **edit:** ensure IEditFeatureResult is exported ([2c65102](2c65102))
* **geocode:** ensure the magicKey property is passed through. ([#603](#603)) ([cc2c352](cc2c352)), closes [#601](#601)
* **getItemResources:** allow user to override paging ([97cbec0](97cbec0))
* **getItemResources:** do not mutate requestOptions in getItemResources ([cac63e8](cac63e8))
* **ITable.id type:** change ITable.id type to number ([02c609a](02c609a)), closes [#808](#808)
* **lock:** pass through url and options for non-federated requests ([802006c](802006c))
* **portal:** searchGroupUsers will now respect joined and memberType parameters ([79b15b5](79b15b5))
* **portal:** setting item access to public shares correctly ([6a2b115](6a2b115))
* **queryFeatures:** pass along f, geometry, geometryType, and spatialRel params ([f4b775d](f4b775d)), closes [#588](#588)
* **removeItemResource:** support correct parameters ([#835](#835)) ([96798fe](96798fe))
* **search:** add support for untyped, grouped search strings ([39fc213](39fc213)), closes [#544](#544)
* **search:** allow NOT as a standalone modifier ([36a6bca](36a6bca)), closes [#542](#542)
* **search:** ensure no space is inserted between search fields and terms ([ff90f51](ff90f51)), closes [#545](#545)
* **search:** sortOrder is a valid search param, searchDir is not ([9caeafd](9caeafd)), closes [#540](#540)
* **searchGroupUsers func:** searchOptions is now an optional parameter ([d54bddb](d54bddb)), closes [#615](#615)
* **server root url:** improve discovery of services endpoint root url ([b2eed90](b2eed90)), closes [#581](#581)
* **sharing:** correct the item sharing logic to reflect what the api actually allows ([48b67e5](48b67e5))
* **sharing:** only item owner, group owner or group admin can unshare ([d264137](d264137))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([3b41f3d](3b41f3d)), closes [#549](#549)
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([#550](#550)) ([1a527a3](1a527a3))
* **updateItemResources:** support item resource prefix ([98be7a7](98be7a7)), closes [#824](#824)
* **UserSession:** remove /sharing/rest from server url during postMessage auth ([04fcdbd](04fcdbd))
* **UserSession:** switch "duration" to "expiration" in IOAuth2Options ([#847](#847)) ([392f5bb](392f5bb)), closes [#843](#843)
* **UserSession:** will now update expired tokens on non-federated servers ([af121c1](af121c1))
* catch err internally when getItemData doesnt find any ([#505](#505)) ([914a5be](914a5be)), closes [#504](#504)
* default to GET when fetching attachments ([b6d746c](b6d746c))
* **try:** try an anonymous request before throwing an auth error ([9209035](9209035))
* ensure JSON and binary data are both handled consistently ([9f85087](9f85087))
* ensure no space is inserted between search fields and terms ([#552](#552)) ([391e3f8](391e3f8))
* force FormData when calling /updateResources ([24af241](24af241)), closes [#499](#499)
* update IPlatformSelfResponse to include expires_in ([dd3557b](dd3557b))
* **:2nd_place_medal::** added numViews and size properties to IItem ([1d38da1](1d38da1)), closes [#378](#378)
* **:basecamp::** ensure decodeValues() isnt derailled by attributes not present in metadata ([e9b4581](e9b4581))
* **:bathtub::** add utility method to trim whitespace and trailing slashes from input urls ([8f86578](8f86578))
* **:bathtub::** remove magicKey from suggest, surface it more prominently in geocode ([fb2ba9a](fb2ba9a)), closes [#459](#459)
* **:bug::** allow for group sharing of public items outside an organization ([e47a772](e47a772))
* **:bug::** dont set referer to null in browser apps ([0b1bf2b](0b1bf2b))
* **:bug::** ensure fix session.portal url when cred.server contains sharing/rest ([815de49](815de49))
* **:bug::** ensure getGeocodeService() is exported ([71801c2](71801c2)), closes [#267](#267)
* **:bug::** ensure that custom headers arent misidentified as request parameters ([4ff33b1](4ff33b1)), closes [#290](#290)
* **:bug::** ensure that the same referer is set in Node.js applications that is passed along in toke ([afaa564](afaa564))
* **:bug::** improve error message when no FormData or Promise can be found ([89ff196](89ff196)), closes [#322](#322)
* **:bug::** tags arent required to create a group ([72ffd35](72ffd35))
* **:closed_lock_with_key::** expose option to customize expiration of ApplicationSession tokens ([5af14d7](5af14d7)), closes [#314](#314)
* **:couple::** make it possible to update a service using a layer definition ([462af65](462af65))
* **:grey_question::** make item.protected optional, since search doesnt return it ([7aa8123](7aa8123))
* **:mag::** allow node.js clients to access streams ([95a35ce](95a35ce)), closes [#373](#373)
* **:moyai::** ensure first class citizen geocode request options are passed through ([ad28f27](ad28f27))
* **:musical_keyboard::** more types for new services/layer definitions ([8bdb30b](8bdb30b))
* **🐛:** ensure createFeatureService doesnt swallow errors ([8173aa5](8173aa5))
* **arcgis-rest-auth:** ensure that mixed casing of federated server urls does not break the system ([07c92f5](07c92f5))
* **ArcGISRequestError:** replace null or empty messages and codes with UNKNOWN_ERROR and UNKNOWN_ERR ([bcea1da](bcea1da))
* **check-for-errors:** throw an error for a response with a \`failure\` status ([9ee1c0c](9ee1c0c))
* **common:** Fix location test xy ([27cab54](27cab54))
* **encodeFormData:** append file name based on object type instead of key and name properties ([401c6dd](401c6dd))
* **Fixes geocoder issue where it tries to assign a spatial reference to a null extent:** implemented ([bfad977](bfad977)), closes [#376](#376)
* **item:** use fileName parameter to name Blobs when present ([9f5c093](9f5c093))
* **lock:** make passing authentication mandatory to methods that update groups ([14bdf88](14bdf88))
* **null:** dont stringify values in item calls ([c0f48fc](c0f48fc))
* **routing:** Fix switched x and y ([cc22727](cc22727))
* ensure failure to generate a token results in an auth err ([bd03b19](bd03b19)), closes [#476](#476)
* get slack notifications working again ([85fd55c](85fd55c))
* let request do the serializing ([c2d2671](c2d2671))
* **:bathtub::** ensure add/update/deleteFeatures dont pass extraneous parameters ([8566860](8566860))
* **:bug::** support use in Node.js with custom fetch (and no global) ([90f9e75](90f9e75)), closes [#203](#203)
* **:bug::** treat ArcGIS Online orgs as equivalent to arcgis.com when testing a portal ([18c3a7f](18c3a7f)), closes [#233](#233)
* **auth:** allow trailing slash in portal URL ([b76da90](b76da90))
* **auth:** better regex match for usernames ([d38a7fb](d38a7fb))
* **auth:** decode username when parsing response from OAuth ([e0c2a44](e0c2a44)), closes [#165](#165)
* **auth:** use www.arcgis.com consistently ([a7dc28d](a7dc28d)), closes [#223](#223)
* **build:** set other @esri/arcgis-rest-js-* pacakges as external ([2f77c9f](2f77c9f)), closes [#128](#128)
* **common-types:** ensure typings are distributed in common-types npm package ([bec3fbf](bec3fbf)), closes [#151](#151)
* **createItem:** owner > item.owner > authentication.username ([76680a1](76680a1))
* **crud:** enforce more AGOL rules in item crud operations ([3f365d9](3f365d9)), closes [#246](#246)
* **enterprise:** fetch fresh token manually when u/pw are provided ([299f3c0](299f3c0)), closes [#161](#161)
* **fetch:** set credentials: 'same-origin' in fetch options to support sending IWA cookies ([a4d0115](a4d0115))
* **geocode:** max sure user supplied request options are all passed through ([3ffa710](3ffa710))
* **geocoding-demo:** change placeholders to values ([cfc7f7a](cfc7f7a))
* **getPortalUrl:** make getPortalUrl use portal in request options if passed in ([6103101](6103101)), closes [#180](#180)
* **IItem:** make all IItem properties optional ([8df9278](8df9278)), closes [#171](#171)
* **items:** dont override user supplied parameters when updating items ([eaa1656](eaa1656)), closes [#117](#117)
* **itemSearch:** max sure user supplied request options are all passed through ([afb9e38](afb9e38)), closes [#183](#183)
* **oauth:** check for window parent correctly in ouath without popup ([a27bb7d](a27bb7d))
* **oAuth:** fix oAuth2 methods in IE 11 and Edge ([462f980](462f980))
* **oauth-demo:** remove ES2015 buts from oAuth Demo for IE 11 ([22ec948](22ec948))
* **OAuth2 options:** added locale and state parameters for browser based OAuth2 ([b05996e](b05996e))
* **params:** flip param values in updateItemResource so they are passed correctly ([5093e39](5093e39)), closes [#118](#118)
* **portal:** fetch tokens for rest admin requests to services federated with ArcGIS Enterprise too ([79dda00](79dda00)), closes [#329](#329)
* **query features:** add count and extent to IQueryFeaturesResponse ([2ab9f33](2ab9f33))
* **release:** resolve issues from accidental 1.0.1 release. ([ddd3d6c](ddd3d6c))
* **release-automation:** checkout a temporary branch for release to not polute the main branch ([75a9dec](75a9dec))
* **release-automation:** fix issues found in #80. ([3b42fe9](3b42fe9))
* **release-automation:** fix issues uncovered by 1st release ([a73b76f](a73b76f))
* **release-automation:** fix release automation to prep for a 1.0.2 relase ([9dfd957](9dfd957))
* **release-automation:** run git fetch --all in release:prepare to make sure all changes are fetch f ([bb7d9e8](bb7d9e8))
* **request:** allow options.fetch without global fetch ([99cf01c](99cf01c)), closes [#108](#108)
* **request:** ensure falsy request parameters are passed through ([3c69a10](3c69a10)), closes [#142](#142)
* **request:** ensure request is passed through as a request parameter ([77ad553](77ad553)), closes [#142](#142)
* **request:** fix binding of default global fetch ([6d04ded](6d04ded))
* **search:** ensure searchItems can mixin arbitrary parameters with a searchform ([a26b935](a26b935))
* **sharing:** ensure internal sharing metadata calls pass through custom request options ([e70a10d](e70a10d)), closes [#276](#276)
* **sharing:** rework group membership checking, fix UserSession.getUser scope issue ([909a37e](909a37e))
* **umd:** strip outdated umd files from npm packages ([2e1764d](2e1764d)), closes [#198](#198)
* **users:** users defaults to https://www.arcgis.com instead of http:// ([7e3d9f6](7e3d9f6))
* **UserSession:** throw ArcGISAuthError instead of Error when unable to refresh a token ([8854765](8854765)), closes [#56](#56)

### Code Refactoring

* **feature responses:** removes unneccessay feature layer response interfaces ([1948010](1948010))
* **feature-layer:** rename *Params -> *Options ([4adff11](4adff11))
* **getLayer():** brings getLayer() signature inline w/ the rest of esri-arcgis-feature-service ([f59fa90](f59fa90))
* **interface names:** removes "Request" from interface names in routing and service-admin ([5702526](5702526))
* **interfaces:** removes "Request" from option interface names ([8bce221](8bce221))
* **portal interfaces:** renames portal request/response interfaces to match their functions ([faa5b3d](faa5b3d))
* change casing of IOauth2Options to IOAuth2Options ([9ffd227](9ffd227))
* deprecate common-types package (in favor of common) ([6ab2e75](6ab2e75))
* deprecate feature-service-admin package (and bundle code in feature-service) ([f5a17b1](f5a17b1))
* remove IGeocodeParams ([b874132](b874132))
* remove IItemResourceAddRequestOptions ([ded66d3](ded66d3))
* remove serializeGroup method ([9a63219](9a63219))
* remove serviceInfo() from geocoder package ([e4e1a2d](e4e1a2d))
* remove the word Request from custom geocoding RequestOptions interfaces ([f8c6255](f8c6255))
* rename esriGeometryType interface GeometryType ([1057850](1057850))
* replace items, groups, sharing and user packages with single portal package ([64a3fd9](64a3fd9))
* stop reexporting appendCustomParams from feature-service package ([c0852cb](c0852cb))
* the signature of getItemResources is now consistent with the other getItem methods ([c6148bf](c6148bf))

### Features

* **add applyEdits function:** adds \`applyEdits()\` to feature-layer for bulk crud transactions. ([ec36841](ec36841))
* **arcgis-rest-auth:** add postMessage auth support ([a6b8a17](a6b8a17))
* **arcgis-rest-auth:** add validateAppAccess function and UserSession method ([2478ea5](2478ea5))
* **arcgis-rest-places:** Add support for the new Places service via a new arcgis-rest-places package ([6ee5a54](6ee5a54))
* **arcgis-rest-portal:** add documentation ([826e7fd](826e7fd))
* **arcgis-rest-portal:** add getPortalSettings function ([e956dc5](e956dc5))
* **arcgis-rest-portal:** add searchUsers function ([235766c](235766c))
* **arcgis-rest-portal:** add user properties functions ([a9e7352](a9e7352))
* **arcgis-rest-portal:** code coverage ([b668b15](b668b15))
* **arcgis-rest-portal:** export functions ([92831f2](92831f2))
* **arcgis-rest-portal:** pr feedback ([9f0c721](9f0c721))
* **arcgis-rest-portal:** pr feedback ([2e26348](2e26348))
* **arcgis-rest-portal:** remove console statement ([4981383](4981383))
* **arcgis-rest-portal:** split set user properties ([46e15fb](46e15fb))
* **arcgis-rest-portal:** update comment ([96be4bd](96be4bd))
* **arcgis-rest-portal:** v4 updates ([6332675](6332675))
* **arcgis-rest-request:** add a new Job class to support asynchronous long running tasks. ([9c222aa](9c222aa))
* add breaking change ([8205840](8205840))
* setup semantic-release for main branch ([30832eb](30832eb))
* **arcgis-rest-auth:** reduce postMessageAuth query params ([154515f](154515f))
* **arcgis-rest-request:** add demo and code for ability to share session between client and server ([ee9ac4c](ee9ac4c))
* **arcgis-rest-request:** add support for AbortSignal ([#970](#970)) ([0f314f6](0f314f6))
* **arcgis-rest-request:** allow state variable to be passed through on server side oauth ([fdbe612](fdbe612))
* **arcgis-rest-request:** force dep release ([87c511d](87c511d))
* **arcgis-rest-request:** force dep release ([409e62f](409e62f))
* **arcgis-rest-request:** force release ([9acfacc](9acfacc))
* **arcgis-rest-request:** refresh session and retry with new token for invalid token errors ([54df4ca](54df4ca))
* **arcgis-rest-request:** rewrite oauth 2 functions to use PKCE ([e49f88c](e49f88c))
* add commitlint config and release scripts ([1bb1a8f](1bb1a8f))
* force dep release ([55f665d](55f665d))
* **arcgis-rest-types:** add editingInfo to ILayerDefinition ([e5467f0](e5467f0))
* **getItemBaseUrl:** add function to get the base REST API URL for an item ([d6ec9fc](d6ec9fc))
* **getItemInfo:** add a function to fetch an info file for an item ([a9dd7d6](a9dd7d6)), closes [#738](#738)
* **search:** allows use of the newly added but undocumented searchUserAccess and searchUserName par ([279ef9e](279ef9e))
* service name and service info fns ([bb5f90d](bb5f90d))
* **:angola::** start with utility function to format cvd codes ([717404f](717404f))
* **:bowtie::** add new method to update a user profile ([33ce92d](33ce92d))
* **:clipboard::** add support for private item resources ([b120e9f](b120e9f))
* **:file_folder::** new generic common package for utility methods AND types ([0bd3ea7](0bd3ea7))
* **:hammer::** new package to create and admin feature services ([cfdcee9](cfdcee9))
* **:nail_care::** add modern feature service metadata props to ILayerDefinition ([7c89396](7c89396))
* **:paperclip::** add support for interacting with feature service attachments ([8d25490](8d25490)), closes [#226](#226)
* **:snowman::** add basic support for accessing secure non-federated services ([fc2f06b](fc2f06b)), closes [#174](#174)
* **:two_men_holding_hands::** add getRelatedItems function to items package ([4e67637](4e67637)), closes [#282](#282)
* **:two_women_holding_hands::** add addItemRelationship and removeItemRelationship methods ([228f3d7](228f3d7)), closes [#282](#282)
* **:unlock::** add support for an OAuth flow that triggers social media login automatically ([2e582e1](2e582e1)), closes [#239](#239)
* **all packages:** start shipping an unminified UMD for each package ([52043f5](52043f5)), closes [#135](#135)
* **ApplicationSession:** only allow 1 pending request for a new token at a time ([4e6f9e2](4e6f9e2))
* **arcgis-rest-js:** add a "headers" option to IRequestOptions and pass on the headers to the reque ([266b85a](266b85a))
* **auth:** add getCredential() method to UserSession for jsapi ([c03430d](c03430d)), closes [#208](#208)
* **auth:** add reflexive method to instantiate UserSession from jsapi auth ([ea64da9](ea64da9)), closes [#208](#208)
* **caring:** methods to un/share items with groups ([8572bb0](8572bb0))
* **caring:** new sharing package with method to set access on items ([a212d59](a212d59)), closes [#43](#43)
* **common-types:** add more common types, keep the 'I' in front of interfaces ([d91dd0e](d91dd0e))
* **common-types:** Added webmap interfaces and types ([e52f115](e52f115))
* **feature-service:** add feature service CRUD methods ([5cb8fbc](5cb8fbc)), closes [#176](#176)
* **getItemMetadata:** add a function to fetch the metadata XML for an item ([c263e1b](c263e1b))
* **getJsonResource and scrubControlChars:** add getJsonResource and scrubControlChars ([6bb9215](6bb9215))
* **group:** refactor searchGroups to make use of SearchQueryBuilder ([72f2898](72f2898)), closes [#104](#104)
* **groups:** add createGroupNotification ([4baab64](4baab64))
* **join:** new joinGroup and leaveGroup methods ([fa604de](fa604de))
* **portal:** a new function to add members to a given group ([998d3a7](998d3a7)), closes [#584](#584)
* **portal:** add reassignItem ([1756cc4](1756cc4))
* **portal:** add the function to get user tags ([#614](#614)) ([d49159f](d49159f))
* **portal:** add updateGroupMembership, isItemSharedWithGroup ([14848db](14848db))
* **portal:** searchGroupUsers searches the users in the given group ([d9151a1](d9151a1))
* **request:** adds option to return the raw fetch response ([6fb7c79](6fb7c79)), closes [#462](#462)
* **routing:** Support elevation in routing ([6b2a77c](6b2a77c))
* **service-admin:** add updateServiceDefinition method ([63c2bc0](63c2bc0))
* **UserSession:** added optional 'popupWindowFeatures' to 'IOAuth2Options' ([f96a581](f96a581))
* **util:** add getUserUrl method to auth package ([d742b34](d742b34))
* add demo for streaming response to file ([5c8ae22](5c8ae22))
* add getItemGroups() function to items package ([#445](#445)) ([c0cd950](c0cd950))
* add resourcesPrefix parameter to addItemResource ([c368232](c368232))
* add support for streaming request response ([893e647](893e647))
* by default fetch metadata and make query response readable ([3c96fce](3c96fce)), closes [#375](#375)
* Support 3d point/location ([6673102](6673102))
* **lots more common-types:** adding a lot more common data types ([73ce0b8](73ce0b8))
* **new users package:** added rest-users with a single method ([a24ed0b](a24ed0b)), closes [#159](#159)
* **request:** allow passing custom fetch function ([920d1ff](920d1ff))
* **resources:** new method to add a new resource to an item ([9c63075](9c63075)), closes [#281](#281)
* **ResponseFormats:** add support for f=geojson for Feature Layers ([79bc776](79bc776)), closes [#20](#20)
* **users:** add getUserNotifications function ([9fbc5e2](9fbc5e2))
* **users:** add user invitation functions ([80aa6dc](80aa6dc))
* **users:** adds removeNotification function ([b4a55d0](b4a55d0))
* support for adding blobs as item/data ([0cfd275](0cfd275))
* **UserSession:** multiple requests to getToken for similar URLs now return the same Promise ([751e5f1](751e5f1))
* **UserSession:** rename refreshTokenDuration to refreshTokenTTL ([a6406d4](a6406d4))

### Reverts

* Revert "aggs counts should be an array" ([55a1e27](55a1e27))

### BREAKING CHANGES

* force 4.x release
* force semantic release to use 4.0.0
* deprecated addItemJsonData
* **portal interfaces:** removes "Request" from portal option interfaces & renames response interfaces
* **interface names:** removed "Request" from interface names in routing and service-admin
* **interfaces:** Options interfaces in @esri/arcgis-rest-feature-layer have been renamed
* IGeocodeRequesttOptions is now IGeocodeOptions, IBulkGeocodingRequestOptions is now
IBulkGeocodeOptions
* **feature responses:** removes IAddFeaturesResult, IAddAttachmentResponse, IDeleteFeaturesResult,
IDeleteAttachmentsResponse, IGetAttachmentsResponse, IUpdateFeaturesResult, &
IUpdateAttachmentResponse
* **feature-layer:** renamed IEditFeaturesParams to ISharedEditOptions & ISharedQueryParams to ISharedQueryOptions;
removed IDeleteFeaturesParams
* **getLayer():** changed signature of getLayer() fn to always expect an options hash
* **group:** searchGroups signature change
* replace items, groups, sharing and user packages with single portal package
* deprecate feature-service-admin package (and bundle code in feature-service)
* deprecate common-types package (in favor of common)
* IItemResourceAddRequestOptions has been removed
* the signature of getItemResources is now consistent with the other getItem methods
* rename esriGeometryType interface GeometryType
* remove serializeGroup helper method from groups package
* change casing of IOauth2Options to IOAuth2Options
* appendCustomParams is no longer exported by feature-service package
* remove IGeocodeParams from geocoder package
* remove serviceInfo() from geocoder package
* **routing:** Switch x and y in point for solveRoute
* **lots more common-types:** no longer prefacing interface names with an I
github-actions bot pushed a commit that referenced this issue Jul 28, 2023
# 1.0.0 (2023-07-28)

### Bug Fixes

* **arcgis-rest-auth:** export validateAppAccess ([6d1e2ef](6d1e2ef))
* **arcgis-rest-auth:** postMessage internals ([bd8eb6c](bd8eb6c))
* **arcgis-rest-feature-layer:** streamline promises ([ebb8380](ebb8380))
* **arcgis-rest-feature-service:** use correct path for unpkg ([7585ce7](7585ce7))
* **arcgis-rest-places:** update pagination values for latest API ([#1109](#1109)) ([ea5370c](ea5370c))
* **arcgis-rest-portal:** add fetchMock setup for intermittent failing tests ([5384984](5384984))
* **arcgis-rest-portal:** add supported search fields ([#1017](#1017)) ([2be361a](2be361a))
* **arcgis-rest-portal:** share as admin uses content/users/:ownername/items/:id/share end-point ([fd1a960](fd1a960))
* **arcgis-rest-portal:** use correct path for unpkg ([6e24c1d](6e24c1d))
* **arcgis-rest-request:** add support for server credentials ([#965](#965)) ([b063bcc](b063bcc))
* **arcgis-rest-request:** add withOptions to export ([ea3f2ec](ea3f2ec))
* **arcgis-rest-request:** Added Params Preprocessor for GP Mutilvalue Inputs ([#1027](#1027)) ([cf75cd6](cf75cd6))
* **arcgis-rest-request:** added social providers ([caf8d11](caf8d11))
* **arcgis-rest-request:** adds test to issue with append custom params ([2b9060f](2b9060f))
* **arcgis-rest-request:** fix [#1035](#1035) by adding parsing for generateToken endpoints on ArcGIS Server ([c0ff7a3](c0ff7a3))
* **arcgis-rest-request:** fixes an issue in append custom params where valid params of value 0 were ([4a63dd7](4a63dd7))
* **arcgis-rest-request:** geometry type esriGeometryMultiPatch ([#1102](#1102)) ([b5e1aa4](b5e1aa4))
* **arcgis-rest-request:** pass referer ([c950c4a](c950c4a))
* **arcgis-rest-request:** pass referer ([81c2de8](81c2de8))
* **arcgis-rest-request:** pass referer ([57de1f6](57de1f6))
* **arcgis-rest-request:** pass referer ([5af0c3b](5af0c3b))
* **arcgis-rest-request:** pass referer ([08ec6fd](08ec6fd))
* **arcgis-rest-request:** pass referer ([8ba4890](8ba4890))
* add error parameter to IEditFeatureResult ([#1038](#1038)) ([36f78e5](36f78e5))
* **arcgis-rest-routing:** url param ([#1028](#1028)) ([3713b81](3713b81))
* [#995](#995) and [#1006](#1006), issues with redirect urls ([f03ed13](f03ed13))
* add package.json files to builds for individual build types ([#955](#955)) ([c162125](c162125))
* change all in-repo dep and peerDeps to use ranges ([8091910](8091910))
* correct package and dep versions in -rest-routing ([c24a081](c24a081))
* encode item extent prior to calling request ([135600c](135600c))
* ensure platformSelf sends cookie ([29e33cb](29e33cb))
* export app-tokens ([0171204](0171204))
* export validateAppAccess function ([b087de2](b087de2))
* minor edit in package.json ([9c59978](9c59978))
* platformSelf to send cookies and append f=json in url ([ed81919](ed81919))
* resolve cross-org sharing as admin bug ([1ae4f1a](1ae4f1a))
* switch to eslint, fix minor issues, disable other rules ([ab47412](ab47412))
* update package versions post v4 launch ([2560c34](2560c34))
* **add resource:** make resource an optional parameter ([1db78b7](1db78b7))
* **aggs counts should be array:** aggs counts should be array ([72b3bf7](72b3bf7))
* **arcgis-rest-auth:** enable oAuth from within an IFrame ([e6538d5](e6538d5)), closes [#711](#711)
* **arcgis-rest-portal:** do not do any membership adjustments if the group is the user's favorites g ([6fc8ada](6fc8ada))
* **arcgis-rest-portal:** make \`layers\` parameter of \`IExportParameters\` optional ([0b584e6](0b584e6))
* **arcgis-rest-portal:** use deleteRelationship not removeRelationship ([890e485](890e485)), closes [#739](#739)
* **arcgis-rest-portal:** wrong parameters for file upload APIs ([#761](#761)) ([cbfef7d](cbfef7d)), closes [#693](#693) [#694](#694) [#700](#700)
* **auth:** add additional authentication providers ([85f73b2](85f73b2))
* **auth:** improve query and error handling when completing sign in ([4b3905c](4b3905c))
* **bulk geocoding:** clean up code in bulk geocoding ([5e28028](5e28028)), closes [#630](#630)
* **edit:** ensure IEditFeatureResult is exported ([2c65102](2c65102))
* **geocode:** ensure the magicKey property is passed through. ([#603](#603)) ([cc2c352](cc2c352)), closes [#601](#601)
* **getItemResources:** allow user to override paging ([97cbec0](97cbec0))
* **getItemResources:** do not mutate requestOptions in getItemResources ([cac63e8](cac63e8))
* **ITable.id type:** change ITable.id type to number ([02c609a](02c609a)), closes [#808](#808)
* **lock:** pass through url and options for non-federated requests ([802006c](802006c))
* **portal:** searchGroupUsers will now respect joined and memberType parameters ([79b15b5](79b15b5))
* **portal:** setting item access to public shares correctly ([6a2b115](6a2b115))
* **queryFeatures:** pass along f, geometry, geometryType, and spatialRel params ([f4b775d](f4b775d)), closes [#588](#588)
* **removeItemResource:** support correct parameters ([#835](#835)) ([96798fe](96798fe))
* **search:** add support for untyped, grouped search strings ([39fc213](39fc213)), closes [#544](#544)
* **search:** allow NOT as a standalone modifier ([36a6bca](36a6bca)), closes [#542](#542)
* **search:** ensure no space is inserted between search fields and terms ([ff90f51](ff90f51)), closes [#545](#545)
* **search:** sortOrder is a valid search param, searchDir is not ([9caeafd](9caeafd)), closes [#540](#540)
* **searchGroupUsers func:** searchOptions is now an optional parameter ([d54bddb](d54bddb)), closes [#615](#615)
* **server root url:** improve discovery of services endpoint root url ([b2eed90](b2eed90)), closes [#581](#581)
* **sharing:** correct the item sharing logic to reflect what the api actually allows ([48b67e5](48b67e5))
* **sharing:** only item owner, group owner or group admin can unshare ([d264137](d264137))
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([3b41f3d](3b41f3d)), closes [#549](#549)
* **umd:** use typescript2 to ensure type declarations are ignored in umds ([#550](#550)) ([1a527a3](1a527a3))
* **updateItemResources:** support item resource prefix ([98be7a7](98be7a7)), closes [#824](#824)
* **UserSession:** remove /sharing/rest from server url during postMessage auth ([04fcdbd](04fcdbd))
* **UserSession:** switch "duration" to "expiration" in IOAuth2Options ([#847](#847)) ([392f5bb](392f5bb)), closes [#843](#843)
* **UserSession:** will now update expired tokens on non-federated servers ([af121c1](af121c1))
* catch err internally when getItemData doesnt find any ([#505](#505)) ([914a5be](914a5be)), closes [#504](#504)
* default to GET when fetching attachments ([b6d746c](b6d746c))
* **try:** try an anonymous request before throwing an auth error ([9209035](9209035))
* ensure JSON and binary data are both handled consistently ([9f85087](9f85087))
* ensure no space is inserted between search fields and terms ([#552](#552)) ([391e3f8](391e3f8))
* force FormData when calling /updateResources ([24af241](24af241)), closes [#499](#499)
* update IPlatformSelfResponse to include expires_in ([dd3557b](dd3557b))
* **:2nd_place_medal::** added numViews and size properties to IItem ([1d38da1](1d38da1)), closes [#378](#378)
* **:basecamp::** ensure decodeValues() isnt derailled by attributes not present in metadata ([e9b4581](e9b4581))
* **:bathtub::** add utility method to trim whitespace and trailing slashes from input urls ([8f86578](8f86578))
* **:bathtub::** remove magicKey from suggest, surface it more prominently in geocode ([fb2ba9a](fb2ba9a)), closes [#459](#459)
* **:bug::** allow for group sharing of public items outside an organization ([e47a772](e47a772))
* **:bug::** dont set referer to null in browser apps ([0b1bf2b](0b1bf2b))
* **:bug::** ensure fix session.portal url when cred.server contains sharing/rest ([815de49](815de49))
* **:bug::** ensure getGeocodeService() is exported ([71801c2](71801c2)), closes [#267](#267)
* **:bug::** ensure that custom headers arent misidentified as request parameters ([4ff33b1](4ff33b1)), closes [#290](#290)
* **:bug::** ensure that the same referer is set in Node.js applications that is passed along in toke ([afaa564](afaa564))
* **:bug::** improve error message when no FormData or Promise can be found ([89ff196](89ff196)), closes [#322](#322)
* **:bug::** support use in Node.js with custom fetch (and no global) ([90f9e75](90f9e75)), closes [#203](#203)
* **:bug::** tags arent required to create a group ([72ffd35](72ffd35))
* **:closed_lock_with_key::** expose option to customize expiration of ApplicationSession tokens ([5af14d7](5af14d7)), closes [#314](#314)
* **:couple::** make it possible to update a service using a layer definition ([462af65](462af65))
* **:grey_question::** make item.protected optional, since search doesnt return it ([7aa8123](7aa8123))
* **:mag::** allow node.js clients to access streams ([95a35ce](95a35ce)), closes [#373](#373)
* **:moyai::** ensure first class citizen geocode request options are passed through ([ad28f27](ad28f27))
* **:musical_keyboard::** more types for new services/layer definitions ([8bdb30b](8bdb30b))
* **🐛:** ensure createFeatureService doesnt swallow errors ([8173aa5](8173aa5))
* **arcgis-rest-auth:** ensure that mixed casing of federated server urls does not break the system ([07c92f5](07c92f5))
* **ArcGISRequestError:** replace null or empty messages and codes with UNKNOWN_ERROR and UNKNOWN_ERR ([bcea1da](bcea1da))
* **check-for-errors:** throw an error for a response with a \`failure\` status ([9ee1c0c](9ee1c0c))
* **common:** Fix location test xy ([27cab54](27cab54))
* **encodeFormData:** append file name based on object type instead of key and name properties ([401c6dd](401c6dd))
* **Fixes geocoder issue where it tries to assign a spatial reference to a null extent:** implemented ([bfad977](bfad977)), closes [#376](#376)
* **item:** use fileName parameter to name Blobs when present ([9f5c093](9f5c093))
* **lock:** make passing authentication mandatory to methods that update groups ([14bdf88](14bdf88))
* **null:** dont stringify values in item calls ([c0f48fc](c0f48fc))
* **routing:** Fix switched x and y ([cc22727](cc22727))
* ensure failure to generate a token results in an auth err ([bd03b19](bd03b19)), closes [#476](#476)
* get slack notifications working again ([85fd55c](85fd55c))
* let request do the serializing ([c2d2671](c2d2671))
* **:bathtub::** ensure add/update/deleteFeatures dont pass extraneous parameters ([8566860](8566860))
* **:bug::** treat ArcGIS Online orgs as equivalent to arcgis.com when testing a portal ([18c3a7f](18c3a7f)), closes [#233](#233)
* **auth:** allow trailing slash in portal URL ([b76da90](b76da90))
* **auth:** better regex match for usernames ([d38a7fb](d38a7fb))
* **auth:** decode username when parsing response from OAuth ([e0c2a44](e0c2a44)), closes [#165](#165)
* **auth:** use www.arcgis.com consistently ([a7dc28d](a7dc28d)), closes [#223](#223)
* **build:** set other @esri/arcgis-rest-js-* pacakges as external ([2f77c9f](2f77c9f)), closes [#128](#128)
* **common-types:** ensure typings are distributed in common-types npm package ([bec3fbf](bec3fbf)), closes [#151](#151)
* **createItem:** owner > item.owner > authentication.username ([76680a1](76680a1))
* **crud:** enforce more AGOL rules in item crud operations ([3f365d9](3f365d9)), closes [#246](#246)
* **enterprise:** fetch fresh token manually when u/pw are provided ([299f3c0](299f3c0)), closes [#161](#161)
* **fetch:** set credentials: 'same-origin' in fetch options to support sending IWA cookies ([a4d0115](a4d0115))
* **geocode:** max sure user supplied request options are all passed through ([3ffa710](3ffa710))
* **geocoding-demo:** change placeholders to values ([cfc7f7a](cfc7f7a))
* **getPortalUrl:** make getPortalUrl use portal in request options if passed in ([6103101](6103101)), closes [#180](#180)
* **IItem:** make all IItem properties optional ([8df9278](8df9278)), closes [#171](#171)
* **items:** dont override user supplied parameters when updating items ([eaa1656](eaa1656)), closes [#117](#117)
* **itemSearch:** max sure user supplied request options are all passed through ([afb9e38](afb9e38)), closes [#183](#183)
* **oauth:** check for window parent correctly in ouath without popup ([a27bb7d](a27bb7d))
* **oAuth:** fix oAuth2 methods in IE 11 and Edge ([462f980](462f980))
* **oauth-demo:** remove ES2015 buts from oAuth Demo for IE 11 ([22ec948](22ec948))
* **OAuth2 options:** added locale and state parameters for browser based OAuth2 ([b05996e](b05996e))
* **params:** flip param values in updateItemResource so they are passed correctly ([5093e39](5093e39)), closes [#118](#118)
* **portal:** fetch tokens for rest admin requests to services federated with ArcGIS Enterprise too ([79dda00](79dda00)), closes [#329](#329)
* **query features:** add count and extent to IQueryFeaturesResponse ([2ab9f33](2ab9f33))
* **release:** resolve issues from accidental 1.0.1 release. ([ddd3d6c](ddd3d6c))
* **release-automation:** checkout a temporary branch for release to not polute the main branch ([75a9dec](75a9dec))
* **release-automation:** fix issues found in #80. ([3b42fe9](3b42fe9))
* **release-automation:** fix issues uncovered by 1st release ([a73b76f](a73b76f))
* **release-automation:** fix release automation to prep for a 1.0.2 relase ([9dfd957](9dfd957))
* **release-automation:** run git fetch --all in release:prepare to make sure all changes are fetch f ([bb7d9e8](bb7d9e8))
* **request:** allow options.fetch without global fetch ([99cf01c](99cf01c)), closes [#108](#108)
* **request:** ensure falsy request parameters are passed through ([3c69a10](3c69a10)), closes [#142](#142)
* **request:** ensure request is passed through as a request parameter ([77ad553](77ad553)), closes [#142](#142)
* **request:** fix binding of default global fetch ([6d04ded](6d04ded))
* **search:** ensure searchItems can mixin arbitrary parameters with a searchform ([a26b935](a26b935))
* **sharing:** ensure internal sharing metadata calls pass through custom request options ([e70a10d](e70a10d)), closes [#276](#276)
* **sharing:** rework group membership checking, fix UserSession.getUser scope issue ([909a37e](909a37e))
* **umd:** strip outdated umd files from npm packages ([2e1764d](2e1764d)), closes [#198](#198)
* **users:** users defaults to https://www.arcgis.com instead of http:// ([7e3d9f6](7e3d9f6))
* **UserSession:** throw ArcGISAuthError instead of Error when unable to refresh a token ([8854765](8854765)), closes [#56](#56)

### Code Refactoring

* **feature responses:** removes unneccessay feature layer response interfaces ([1948010](1948010))
* **feature-layer:** rename *Params -> *Options ([4adff11](4adff11))
* **getLayer():** brings getLayer() signature inline w/ the rest of esri-arcgis-feature-service ([f59fa90](f59fa90))
* **interface names:** removes "Request" from interface names in routing and service-admin ([5702526](5702526))
* **interfaces:** removes "Request" from option interface names ([8bce221](8bce221))
* **portal interfaces:** renames portal request/response interfaces to match their functions ([faa5b3d](faa5b3d))
* change casing of IOauth2Options to IOAuth2Options ([9ffd227](9ffd227))
* deprecate common-types package (in favor of common) ([6ab2e75](6ab2e75))
* deprecate feature-service-admin package (and bundle code in feature-service) ([f5a17b1](f5a17b1))
* remove IGeocodeParams ([b874132](b874132))
* remove IItemResourceAddRequestOptions ([ded66d3](ded66d3))
* remove serializeGroup method ([9a63219](9a63219))
* remove serviceInfo() from geocoder package ([e4e1a2d](e4e1a2d))
* remove the word Request from custom geocoding RequestOptions interfaces ([f8c6255](f8c6255))
* rename esriGeometryType interface GeometryType ([1057850](1057850))
* replace items, groups, sharing and user packages with single portal package ([64a3fd9](64a3fd9))
* stop reexporting appendCustomParams from feature-service package ([c0852cb](c0852cb))
* the signature of getItemResources is now consistent with the other getItem methods ([c6148bf](c6148bf))

### Features

* **add applyEdits function:** adds \`applyEdits()\` to feature-layer for bulk crud transactions. ([ec36841](ec36841))
* **arcgis-rest-auth:** add postMessage auth support ([a6b8a17](a6b8a17))
* **arcgis-rest-developer-credentials:** Initial package release ([68e1249](68e1249))
* **arcgis-rest-places:** Add support for the new Places service via a new arcgis-rest-places package ([6ee5a54](6ee5a54))
* **arcgis-rest-portal:** add documentation ([826e7fd](826e7fd))
* **arcgis-rest-portal:** add getPortalSettings function ([e956dc5](e956dc5))
* **arcgis-rest-portal:** add searchUsers function ([235766c](235766c))
* **arcgis-rest-portal:** add user properties functions ([a9e7352](a9e7352))
* **arcgis-rest-portal:** code coverage ([b668b15](b668b15))
* **arcgis-rest-portal:** export functions ([92831f2](92831f2))
* **arcgis-rest-portal:** pr feedback ([9f0c721](9f0c721))
* **arcgis-rest-portal:** pr feedback ([2e26348](2e26348))
* **arcgis-rest-portal:** remove console statement ([4981383](4981383))
* **arcgis-rest-portal:** split set user properties ([46e15fb](46e15fb))
* **arcgis-rest-portal:** update comment ([96be4bd](96be4bd))
* **arcgis-rest-portal:** v4 updates ([6332675](6332675))
* **arcgis-rest-request:** add a new Job class to support asynchronous long running tasks. ([9c222aa](9c222aa))
* add breaking change ([8205840](8205840))
* setup semantic-release for main branch ([30832eb](30832eb))
* **arcgis-rest-auth:** add validateAppAccess function and UserSession method ([2478ea5](2478ea5))
* **arcgis-rest-auth:** reduce postMessageAuth query params ([154515f](154515f))
* **arcgis-rest-request:** add demo and code for ability to share session between client and server ([ee9ac4c](ee9ac4c))
* **arcgis-rest-request:** add support for AbortSignal ([#970](#970)) ([0f314f6](0f314f6))
* **arcgis-rest-request:** allow state variable to be passed through on server side oauth ([fdbe612](fdbe612))
* **arcgis-rest-request:** force dep release ([87c511d](87c511d))
* **arcgis-rest-request:** force dep release ([409e62f](409e62f))
* **arcgis-rest-request:** force release ([9acfacc](9acfacc))
* **arcgis-rest-request:** refresh session and retry with new token for invalid token errors ([54df4ca](54df4ca))
* **arcgis-rest-request:** rewrite oauth 2 functions to use PKCE ([e49f88c](e49f88c))
* add commitlint config and release scripts ([1bb1a8f](1bb1a8f))
* force dep release ([55f665d](55f665d))
* **arcgis-rest-types:** add editingInfo to ILayerDefinition ([e5467f0](e5467f0))
* **getItemBaseUrl:** add function to get the base REST API URL for an item ([d6ec9fc](d6ec9fc))
* **getItemInfo:** add a function to fetch an info file for an item ([a9dd7d6](a9dd7d6)), closes [#738](#738)
* **search:** allows use of the newly added but undocumented searchUserAccess and searchUserName par ([279ef9e](279ef9e))
* service name and service info fns ([bb5f90d](bb5f90d))
* **:angola::** start with utility function to format cvd codes ([717404f](717404f))
* **:bowtie::** add new method to update a user profile ([33ce92d](33ce92d))
* **:clipboard::** add support for private item resources ([b120e9f](b120e9f))
* **:file_folder::** new generic common package for utility methods AND types ([0bd3ea7](0bd3ea7))
* **:hammer::** new package to create and admin feature services ([cfdcee9](cfdcee9))
* **:nail_care::** add modern feature service metadata props to ILayerDefinition ([7c89396](7c89396))
* **:paperclip::** add support for interacting with feature service attachments ([8d25490](8d25490)), closes [#226](#226)
* **:snowman::** add basic support for accessing secure non-federated services ([fc2f06b](fc2f06b)), closes [#174](#174)
* **:two_men_holding_hands::** add getRelatedItems function to items package ([4e67637](4e67637)), closes [#282](#282)
* **:two_women_holding_hands::** add addItemRelationship and removeItemRelationship methods ([228f3d7](228f3d7)), closes [#282](#282)
* **:unlock::** add support for an OAuth flow that triggers social media login automatically ([2e582e1](2e582e1)), closes [#239](#239)
* **all packages:** start shipping an unminified UMD for each package ([52043f5](52043f5)), closes [#135](#135)
* **ApplicationSession:** only allow 1 pending request for a new token at a time ([4e6f9e2](4e6f9e2))
* **arcgis-rest-js:** add a "headers" option to IRequestOptions and pass on the headers to the reque ([266b85a](266b85a))
* **auth:** add getCredential() method to UserSession for jsapi ([c03430d](c03430d)), closes [#208](#208)
* **auth:** add reflexive method to instantiate UserSession from jsapi auth ([ea64da9](ea64da9)), closes [#208](#208)
* **caring:** methods to un/share items with groups ([8572bb0](8572bb0))
* **caring:** new sharing package with method to set access on items ([a212d59](a212d59)), closes [#43](#43)
* **common-types:** add more common types, keep the 'I' in front of interfaces ([d91dd0e](d91dd0e))
* **common-types:** Added webmap interfaces and types ([e52f115](e52f115))
* **feature-service:** add feature service CRUD methods ([5cb8fbc](5cb8fbc)), closes [#176](#176)
* **getItemMetadata:** add a function to fetch the metadata XML for an item ([c263e1b](c263e1b))
* **getJsonResource and scrubControlChars:** add getJsonResource and scrubControlChars ([6bb9215](6bb9215))
* **group:** refactor searchGroups to make use of SearchQueryBuilder ([72f2898](72f2898)), closes [#104](#104)
* **groups:** add createGroupNotification ([4baab64](4baab64))
* **join:** new joinGroup and leaveGroup methods ([fa604de](fa604de))
* **portal:** a new function to add members to a given group ([998d3a7](998d3a7)), closes [#584](#584)
* **portal:** add reassignItem ([1756cc4](1756cc4))
* **portal:** add the function to get user tags ([#614](#614)) ([d49159f](d49159f))
* **portal:** add updateGroupMembership, isItemSharedWithGroup ([14848db](14848db))
* **portal:** searchGroupUsers searches the users in the given group ([d9151a1](d9151a1))
* **request:** adds option to return the raw fetch response ([6fb7c79](6fb7c79)), closes [#462](#462)
* **routing:** Support elevation in routing ([6b2a77c](6b2a77c))
* **service-admin:** add updateServiceDefinition method ([63c2bc0](63c2bc0))
* **UserSession:** added optional 'popupWindowFeatures' to 'IOAuth2Options' ([f96a581](f96a581))
* **util:** add getUserUrl method to auth package ([d742b34](d742b34))
* add demo for streaming response to file ([5c8ae22](5c8ae22))
* add getItemGroups() function to items package ([#445](#445)) ([c0cd950](c0cd950))
* add resourcesPrefix parameter to addItemResource ([c368232](c368232))
* add support for streaming request response ([893e647](893e647))
* by default fetch metadata and make query response readable ([3c96fce](3c96fce)), closes [#375](#375)
* Support 3d point/location ([6673102](6673102))
* **lots more common-types:** adding a lot more common data types ([73ce0b8](73ce0b8))
* **new users package:** added rest-users with a single method ([a24ed0b](a24ed0b)), closes [#159](#159)
* **request:** allow passing custom fetch function ([920d1ff](920d1ff))
* **resources:** new method to add a new resource to an item ([9c63075](9c63075)), closes [#281](#281)
* **ResponseFormats:** add support for f=geojson for Feature Layers ([79bc776](79bc776)), closes [#20](#20)
* **users:** add getUserNotifications function ([9fbc5e2](9fbc5e2))
* **users:** add user invitation functions ([80aa6dc](80aa6dc))
* **users:** adds removeNotification function ([b4a55d0](b4a55d0))
* support for adding blobs as item/data ([0cfd275](0cfd275))
* **UserSession:** multiple requests to getToken for similar URLs now return the same Promise ([751e5f1](751e5f1))
* **UserSession:** rename refreshTokenDuration to refreshTokenTTL ([a6406d4](a6406d4))

### Reverts

* Revert "aggs counts should be an array" ([55a1e27](55a1e27))

### BREAKING CHANGES

* force 4.x release
* force semantic release to use 4.0.0
* deprecated addItemJsonData
* **portal interfaces:** removes "Request" from portal option interfaces & renames response interfaces
* **interface names:** removed "Request" from interface names in routing and service-admin
* **interfaces:** Options interfaces in @esri/arcgis-rest-feature-layer have been renamed
* IGeocodeRequesttOptions is now IGeocodeOptions, IBulkGeocodingRequestOptions is now
IBulkGeocodeOptions
* **feature responses:** removes IAddFeaturesResult, IAddAttachmentResponse, IDeleteFeaturesResult,
IDeleteAttachmentsResponse, IGetAttachmentsResponse, IUpdateFeaturesResult, &
IUpdateAttachmentResponse
* **feature-layer:** renamed IEditFeaturesParams to ISharedEditOptions & ISharedQueryParams to ISharedQueryOptions;
removed IDeleteFeaturesParams
* **getLayer():** changed signature of getLayer() fn to always expect an options hash
* **group:** searchGroups signature change
* replace items, groups, sharing and user packages with single portal package
* deprecate feature-service-admin package (and bundle code in feature-service)
* deprecate common-types package (in favor of common)
* IItemResourceAddRequestOptions has been removed
* the signature of getItemResources is now consistent with the other getItem methods
* rename esriGeometryType interface GeometryType
* remove serializeGroup helper method from groups package
* change casing of IOauth2Options to IOAuth2Options
* appendCustomParams is no longer exported by feature-service package
* remove IGeocodeParams from geocoder package
* remove serviceInfo() from geocoder package
* **routing:** Switch x and y in point for solveRoute
* **lots more common-types:** no longer prefacing interface names with an I
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants