---
title: ICF interfaces
description: The ICF framework supports the following interfaces:
component: openicf
page_id: openicf:connector-reference:interfaces
canonical_url: https://docs.pingidentity.com/openicf/connector-reference/interfaces.html
---

# ICF interfaces

The ICF framework supports the following interfaces:

|   |                                                            |
| - | ---------------------------------------------------------- |
|   | Some connectors support only a subset of these interfaces. |

* AttributeNormalizer

  Normalize attributes to ensure consistent filtering.

- Authenticate

  Provides simple authentication with two parameters, presumed to be a username and password. IDM requires the connector to implement the [`AuthenticateOp` interface](../connector-dev-guide/operations/operation-authenticate.html) to provide pass-through authentication.

  The following connectors support pass-through authentication using the `AuthenticateOp` interface by default:

  * [LDAP connector](ldap.html)

  * [CSV file connector](csv.html)

  * [Database Table connector](dbtable.html)

  * [Microsoft Graph API connector](ms-graph-api.html)

  * [Scripted SQL connector](scripted-sql.html)

  |   |                                                                                                                                                                                                                                                                                                                                                                                                                      |
  | - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  |   | All [Scripted Groovy](groovy.html)-based connectors are capable of pass-through authentication if the `AuthenticateScript.groovy` script is implemented, but the only default implementation is the ScriptedSQL connector. Learn more in [Authenticate script](../connector-dev-guide/scripts/script-authenticate.html) and [Authenticate operation](../connector-dev-guide/operations/operation-authenticate.html). |

* Batch

  Execute a series of operations in a single request. If a resource doesn't support batch operations, the connector won't implement the batch operation interface. The ICF framework will still support batched requests but the operations will be executed iteratively through the connector.

- Connector Event

  Subscribe for notification of any specified event on the target resource. This operation can be used in the context of IoT device reports, to receive notification of events such as low battery signals, inactive devices, and so on.

* Create

  Create an object and return its UID.

- Delete

  Delete an object by its UID.

* Get

  Get an object by its UID.

- PoolableConnector

  Use pools of target resources.

* Resolve Username

  Resolve an object to its UID based on its username.

- Schema

  Describe supported object types, operations, and options.

* Script on Connector

  Allow script execution on the connector.

- Script on Resource

  Allow script execution on the resource.

* Search

  Allow searches for resource objects.

  Connectors that implement *only* this interface can only be used for reconciliation operations.

- Sync

  Poll for synchronization events, which are native changes to target objects.

* Sync Event

  Subscribe for notification of synchronization events, which are native changes to target objects.

- Test

  Test the connection configuration, including connecting to the resource.

* Update

  Allows an authorized caller to update (modify or replace) objects on the target resource.

- Update Attribute Values

  Allows an authorized caller to update (modify or replace) attribute values on the target resource. This operation is more advanced than the `UpdateOp` operation, and provides better performance and atomicity semantics.
