# Class ServiceRegistry

- [TopLevel.Object](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md)
  - [dw.svc.ServiceRegistry](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceRegistry.md)

The ServiceRegistry is responsible for managing Service definitions and their instances.

Typical usage involves several steps:

1. The service is defined in the Business Manager and configured with necessary credentials.

2. The service callback is configured once during cartridge initialization:
   ```
   ServiceRegistry.configure("MyFTPService", {    mockExec : function(svc:FTPService, params) {        return [            { "name": "file1", "timestamp": new Date(2011, 02, 21)},            { "name": "file2", "timestamp": new Date(2012, 02, 21)},            { "name": "file3", "timestamp": new Date(2013, 02, 21)}        ];    },    createRequest: function(svc:FTPService, params) {        svc.setOperation("list", "/");    },    parseResponse : function(svc:FTPService, listOutput) {        var x : Array = [];        var resp : Array = listOutput;        for(var i = 0; i <resp.length; i++) {            var f = resp[i];            x.push( { "name": f['name'], "timestamp": f['timestamp'] } );        }        return x;    }});
   ```

3. A new service instance is created and called in order to perform the operation:
   ```
   var result : Result = ServiceRegistry.get("MyFTPService").call();if(result.status == 'OK') {    // The result.object is the object returned by the 'after' callback.} else {    // Handle the error. See result.error for more information.}
   ```

See [ServiceCallback](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceCallback.md) for all the callback options, and individual [ServiceDefinition](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceDefinition.md)
classes for customization specific to a service type.

**Deprecated:**

:::warning
It is recommended to use the [LocalServiceRegistry](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.LocalServiceRegistry.md) instead of this class.
:::

**API Version:**

:::note
No longer available as of version 19.10.
:::

## Constructor Summary

This class does not have a constructor, so you cannot create it directly.

## Method Summary

| Method                                                                                                                                                                                                                                                                                             | Description                                                                          |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| static [configure](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceRegistry.md#configurestring-object)([String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md), [Object](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md)) | Configure the given serviceId with a callback.                                       |
| static [get](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceRegistry.md#getstring)([String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md))                                                                                                        | Constructs a new instance of the given service.                                      |
| static [getDefinition](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceRegistry.md#getdefinitionstring)([String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md))                                                                                    | Gets a Service Definition.                                                           |
| static [isConfigured](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceRegistry.md#isconfiguredstring)([String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md))                                                                                      | Returns the status of whether the given service has been configured with a callback. |

### Methods inherited from class Object

[assign](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#assignobject-object), [create](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#createobject), [create](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#createobject-object), [defineProperties](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#definepropertiesobject-object), [defineProperty](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#definepropertyobject-object-object), [entries](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#entriesobject), [freeze](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#freezeobject), [fromEntries](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#fromentriesiterable), [getOwnPropertyDescriptor](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#getownpropertydescriptorobject-object), [getOwnPropertyNames](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#getownpropertynamesobject), [getOwnPropertySymbols](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#getownpropertysymbolsobject), [getPrototypeOf](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#getprototypeofobject), [hasOwnProperty](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#hasownpropertystring), [is](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#isobject-object), [isExtensible](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#isextensibleobject), [isFrozen](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#isfrozenobject), [isPrototypeOf](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#isprototypeofobject), [isSealed](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#issealedobject), [keys](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#keysobject), [preventExtensions](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#preventextensionsobject), [propertyIsEnumerable](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#propertyisenumerablestring), [seal](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#sealobject), [setPrototypeOf](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#setprototypeofobject-object), [toLocaleString](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#tolocalestring), [toString](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#tostring), [valueOf](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#valueof), [values](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md#valuesobject)

## Method Details

### configure(String, Object)

- static configure(serviceID: [String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md), configObj: [Object](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Object.md)): [ServiceDefinition](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceDefinition.md)
  - : Configure the given serviceId with a callback.

    If the service is already configured, the given callback will replace any existing one.

    **Parameters:**

    - serviceID - Unique Service ID.
    - configObj - Configuration callback. See [ServiceCallback](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceCallback.md) for a description of available callback methods.

    **Returns:**

    - Associated [ServiceDefinition](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceDefinition.md), which can be used for further protocol-specific
      configuration.

***

### get(String)

- static get(serviceID: [String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md)): [Service](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.Service.md)
  - : Constructs a new instance of the given service.

    **Parameters:**

    - serviceID - Unique Service ID.

    **Returns:**

    - Service instance.

***

### getDefinition(String)

- static getDefinition(serviceID: [String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md)): [ServiceDefinition](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceDefinition.md)
  - : Gets a Service Definition.

    This Service Definition is shared across all Service instances returned by [get(String)](/docs/commerce/b2c-commerce/references/b2c-script-api/dw.svc.ServiceRegistry.md#getstring).

    **Parameters:**

    - serviceID - Unique Service ID.

    **Returns:**

    - ServiceDefinition

***

### isConfigured(String)

- static isConfigured(serviceID: [String](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.String.md)): [Boolean](/docs/commerce/b2c-commerce/references/b2c-script-api/TopLevel.Boolean.md)
  - : Returns the status of whether the given service has been configured with a callback.

    **Parameters:**

    - serviceID - Unique Service ID.

    **Returns:**

    - true if configure has already been called, false otherwise.

***
