# Class: SentinelHub

This documentation is for OpenLayers v10.9.0. The latest is v.

## ol/source/SentinelHub~SentinelHub

    import SentinelHub from 'ol/source/SentinelHub.js';

A tile source that generates tiles using the Sentinel Hub Processing API. All of the constructor options are optional, however the source will not be ready for rendering until the `auth`, `data`, and `evalscript` properties are provided. These can be set after construction with the `setAuth`, `setData`, and `setEvalscript` methods.

If there are errors while configuring the source or fetching an access token, the `change` event will be fired and the source state will be set to `error`. See the `getError` method for details on handling these errors.

#### new SentinelHub(options)

source/SentinelHub.js, line 390

  Name | Type | Description
  --- | --- | ---
  `auth` | AuthConfig | string | undefined | The authentication configuration with `clientId` and `clientSecret` or an access token. See Sentinel Hub authentication for details. If not provided in the constructor, the source will not be rendered until `setAuth` is called.
  `data` | Array<ProcessRequestInputDataItem> | undefined | The input data configuration. If not provided in the constructor, the source will not be rendered until `setData` is called.
  `evalscript` | Evalscript | string | undefined | The process applied to the input data. If not provided in the constructor, the source will not be rendered until `setEvalscript` is called. See the `setEvalscript` documentation for details on the restrictions when passing process functions.
  `tileSize` | number | Size (defaults to [512, 512]) | The pixel width and height of the source tiles.
  `url` | string (defaults to 'https://services.sentinel-hub.com/api/v1/process') | The Sentinel Hub Processing API URL.
  `projection` | ProjectionLike | undefined | Projection. Default is the view projection.
  `attributionsCollapsible` | boolean (defaults to true) | Allow the attributions to be collapsed.
  `interpolate` | boolean (defaults to true) | Use interpolated values when resampling. By default, linear interpolation is used when resampling. Set to false to use the nearest neighbor instead.
  `wrapX` | boolean (defaults to true) | Wrap the world horizontally.
  `transition` | number | undefined | Duration of the opacity transition for rendering. To disable the opacity transition, pass `transition: 0`.

  ##### Fires:

  - `change` (BaseEvent) - Generic change event. Triggered when the revision counter is increased.
  - `error` (BaseEvent) - Generic error event. Triggered when an error occurs.
  - `propertychange` (ObjectEvent) - Triggered when a property is changed.
  - `tileloadend` (TileSourceEvent) - Triggered when a tile finishes loading, either when its data is loaded, or when loading was aborted because the tile is no longer needed.
  - `tileloaderror` (TileSourceEvent) - Triggered if tile loading results in an error. Note that this is not the right place to re-fetch tiles. See `load` for details.
  - `tileloadstart` (TileSourceEvent) - Triggered when a tile starts loading.

### Extends

- DataTileSource

### Methods

#### changed() inherited

Observable.js, line 68

  Increases the revision counter and dispatches a 'change' event.

#### clear() inherited

source/Tile.js, line 258

  Remove all cached reprojected tiles from the source. The next render cycle will create new tiles.

#### dispatchEvent(event){boolean | undefined} inherited

events/Target.js, line 85

  Dispatches an event and calls all listeners listening for events of this type. The event parameter can either be a string or an Object with a `type` property.

  Name | Type | Description
  --- | --- | ---
  `event` | BaseEvent | string | Event object.

  ##### Returns:

  `false` if anyone called preventDefault on the event object or if any of the listeners returned false.

#### get(key){*} inherited

Object.js, line 136

  Gets a value.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.

  ##### Returns:

  Value.

#### getAttributions(){Attribution} inherited

source/Source.js, line 129

  Get the attribution function for the source.

  ##### Returns:

  Attribution function.

#### getAttributionsCollapsible(){boolean} inherited

source/Source.js, line 137

  ##### Returns:

  Attributions are collapsible.

#### getError(){Error | null}

source/SentinelHub.js, line 632

  When the source state is `error`, use this function to get more information about the error. To debug a faulty configuration, you may want to use a listener like this:

      source.on('change', () => {
        if (source.getState() === 'error') {
          console.error(source.getError());
        }
      });

  ##### Returns:

  A source loading error.

#### getKeys(){Array.<string>} inherited

Object.js, line 149

  Get a list of object property names.

  ##### Returns:

  List of property names.

#### getProjection(){Projection | null} inherited

source/Source.js, line 146

  Get the projection of the source.

  ##### Returns:

  Projection.

#### getProperties(){NoInfer.<Properties>} inherited

Object.js, line 158

  Get an object of all property names and values.

  ##### Returns:

  Object.

#### getRevision(){number} inherited

Observable.js, line 79

  Get the version number for this object. Each time the object is modified, its version number will be incremented.

  ##### Returns:

  Revision.

#### getState(){State} inherited

source/Source.js, line 170

  Get the state of the source, see `State` for possible states.

  ##### Returns:

  State.

#### getTileGrid(){TileGrid | null} inherited

source/Tile.js, line 190

  Return the tile grid of the tile source.

  ##### Returns:

  Tile grid.

#### on(type, listener){EventsKey | Array<EventsKey>} inherited

Observable.js, line 152

  Listen for a certain type of event.

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | The event type or array of event types.
  `listener` | function | The listener function.

  ##### Returns:

  Unique key for the listener. If called with an array of event types as the first argument, the return will be an array of keys.

#### once(type, listener){EventsKey | Array<EventsKey>} inherited

Observable.js, line 164

  Listen once for a certain type of event.

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | The event type or array of event types.
  `listener` | function | The listener function.

  ##### Returns:

  Unique key for the listener. If called with an array of event types as the first argument, the return will be an array of keys.

#### set(key, value, silent) inherited

Object.js, line 218

  Sets a value.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.
  `value` | * | Value.
  `silent` | boolean | undefined | Update without triggering an event.

#### setAttributions(attributions) inherited

source/Source.js, line 203

  Set the attributions of the source.

  Name | Type | Description
  --- | --- | ---
  `attributions` | AttributionLike | undefined | Attributions. Can be passed as `string`, `Array<string>`, `Attribution`, or `undefined`.

#### setAuth(auth)

source/SentinelHub.js, line 468

  Set the authentication configuration for the source (if not provided in the constructor). If an object with `clientId` and `clientSecret` is provided, an access token will be fetched and used with processing requests. Alternatively, an access token can be supplied directly.

  Name | Type | Description
  --- | --- | ---
  `auth` | The auth config or access token.
  Name | Type | Description
  --- | --- | ---
  `tokenUrl` | string (defaults to 'https://services.sentinel-hub.com/auth/realms/main/protocol/openid-connect/token') | The URL to get the authentication token.
  `clientId` | string | The client ID.
  `clientSecret` | string | The client secret.

#### setData(data)

source/SentinelHub.js, line 509

  Set or update the input data used.

  Name | Type | Description
  --- | --- | ---
  `data` | Array<ProcessRequestInputDataItem> | The input data configuration.

#### setEvalscript(evalscript)

source/SentinelHub.js, line 524

  Set or update the Evalscript used to process the data. Either a process object or a string Evalscript can be provided. If a process object is provided, it will be serialized to produce the Evalscript string. Because these functions will be serialized and executed by the Processing API, they cannot refer to other variables or functions that are not provided by the Processing API context.

  Name | Type | Description
  --- | --- | ---
  `evalscript` | The process to apply to the input data.
  Name | Type | Description
  --- | --- | ---
  `setup` | Setup | The setup function.
  `evaluatePixel` | EvaluatePixel | The function to transform input samples into output values.
  `updateOutput` | UpdateOutput | undefined | Optional function to adjust the output bands.
  `updateOutputMetadata` | UpdateOutputMetadata | undefined | Optional function to update the output metadata.
  `preProcessScenes` | Collections | undefined | Optional function called before processing.
  `version` | string (defaults to '3') | The Evalscript version.

#### setProperties(values, silent) inherited

Object.js, line 238

  Sets a collection of key-value pairs. Note that this changes any existing properties and adds new ones (it does not remove any existing properties).

  Name | Type | Description
  --- | --- | ---
  `values` | Partial.<NoInfer.<Properties>> | Values.
  `silent` | boolean | undefined | Update without triggering an event.

#### setTileGridForProjection(projection, tilegrid) inherited

source/DataTile.js, line 468

  Sets the tile grid to use when reprojecting the tiles to the given projection instead of the default tile grid for the projection.

  This can be useful when the default tile grid cannot be created (e.g. projection has no extent defined) or for optimization reasons (custom tile size, resolutions, ...).

  Name | Type | Description
  --- | --- | ---
  `projection` | ProjectionLike | Projection.
  `tilegrid` | TileGrid | Tile grid to use for the projection.

#### un(type, listener) inherited

Observable.js, line 173

  Unlisten for a certain type of event.

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | The event type or array of event types.
  `listener` | function | The listener function.

#### unset(key, silent) inherited

Object.js, line 262

  Unsets a property.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.
  `silent` | boolean | undefined | Unset without triggering an event.