---
title: Data Sink
description: Data sink is the downstream consumer of data within Ping Autonomous Identity for service connectors and is accessible through API endpoints.
component: autonomous-identity
version: 2022.11.12
page_id: autonomous-identity:api-guide:chap-datasink-api
canonical_url: https://docs.pingidentity.com/autonomous-identity/2022.11.12/api-guide/chap-datasink-api.html
section_ids:
  datasink-create: POST /api/datasink/create
  datasink-update: POST /api/datasink/update
  datasink-delete: POST /api/datasink/delete
  datasink-update-status-assignments: POST /api/datasink/update/status/assignments
  datasink-update-status-rules: POST /api/datasink/update/status/rules
  datasink-update-status-roles: POST /api/datasink/update/status/roles
  datasink-query: POST /api/datasink/query
  datasink-update-timestamp: POST /api/datasink/update/timestamp
  datasink-query-logs: POST /api/datasink/query/logs
  datasink-update-logs: POST /api/datasink/update/logs
---

# Data Sink

Data sink is the downstream consumer of data within Ping Autonomous Identity for service connectors and is accessible through API endpoints.

> **Collapse: See a conceptual image of Data Sink**
>
> ![Data Sink](_images/datasink.png)

The following are Ping Autonomous Identity datasink endpoints:

## POST /api/datasink/create

* POST /api/datasink/create

  Create a new /common/datasink entity.

  Endpoint

  ```
  /api/datasink/create
  ```

  Authorization

  ```
  <Bearer Token JWT-value>
  ```

  **JSON Body Parameters**

  | Parameter            | Type   | Description                                                                    |
  | -------------------- | ------ | ------------------------------------------------------------------------------ |
  | id                   | string | Data sink ID (format: UUID) (required)                                         |
  | name                 | string | Data sink name (required)                                                      |
  | config               | object | Free form client-defined connection object                                     |
  | autoCertifyTimestamp | string | Last auto-certification operation timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ) |
  | autoRequestTimestamp | string | Last auto-request operation timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ)       |
  | certifyTimestamp     | string | Last certification operation timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ)      |
  | revokeTimestamp      | string | Last revoke operation timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ)             |
  | rolePublishTimestamp | string | Last role publish timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ)                 |
  | logs                 | object | Free form client-defined log object                                            |

  Example Request

  ```
  curl -k -X POST https://autoid-ui.forgerock.com/api/datasink/create' \
  -H 'Authorization: Bearer <token value>' \
  -H 'Content-Type: application/json' \
  -d '{
    "id": "eaa19702-3806-4ee7-9466-91f0968699d9",
    "name": "Test",
    "config": { "something": 1234 }
  }'
  ```

  Example Response (Success)

  ```
  {
    "message": "ok"
  }
  ```

## POST /api/datasink/update

* POST /api/datasink/update

  Update a /common/datasink entity.

  Endpoint

  ```
  /api/datasink/update
  ```

  Authorization

  ```
  <Bearer Token JWT-value>
  ```

  **JSON Body Parameters**

  | Parameter            | Type   | Description                                                                    |
  | -------------------- | ------ | ------------------------------------------------------------------------------ |
  | id                   | string | Data sink ID (format: UUID) (required)                                         |
  | name                 | string | Data sink name (required)                                                      |
  | config               | object | Free form client-defined connection object                                     |
  | autoCertifyTimestamp | string | Last auto-certification operation timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ) |
  | autoRequestTimestamp | string | Last auto-request operation timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ)       |
  | certifyTimestamp     | string | Last certification operation timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ)      |
  | revokeTimestamp      | string | Last revoke operation timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ)             |
  | rolePublishTimestamp | string | Last role publish timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ)                 |
  | logs                 | object | Free form client-defined log object                                            |

  Example Request

  ```
  curl -k -X POST https://autoid-ui.forgerock.com/api/datasink/update' \
  -H 'Authorization: Bearer <token value>' \
  -H 'Content-Type: application/json' \
  -d '{
    "id": "eaa19702-3806-4ee7-9466-91f0968699d9",
    "name": "Test3",
    "config": { "something": 5678 }
  }'
  ```

  Example Response (Success)

  ```
  {
    "message": ok
  }
  ```

## POST /api/datasink/delete

* POST /api/datasink/delete

  Remove a /common/datasink entity.

  Endpoint

  ```
  /api/datasink/delete
  ```

  Authorization

  ```
  <Bearer Token JWT-value>
  ```

  **JSON Body Parameters**

  | Parameter | Type   | Description                            |
  | --------- | ------ | -------------------------------------- |
  | id        | string | Data sink ID (format: UUID) (required) |

  Example Request

  ```
  curl -k -X POST https://autoid-ui.forgerock.com/api/datasink/delete' \
  -H 'Authorization: Bearer <token value>' \
  -H 'Content-Type: application/json' \
  -d '{
    "id": "eaa19702-3806-4ee7-9466-91f0968699d9"
  }'
  ```

  Example Response (Success)

  ```
  {
    "message": ok
  }
  ```

## POST /api/datasink/update/status/assignments

* POST /api/datasink/update/status/assignments

  Update data sink status for assignment decisions. Decisions are stored in the /autoid/api/user\_access\_decisions JAS entity and *entitlement-assignment* Elasticsearch index.

  Endpoint

  ```
  /api/datasink/update/status/assignments
  ```

  Authorization

  ```
  <API Key>
  ```

  **JSON Body Parameters**

  | Parameter   | Type  | Description                                               |
  | ----------- | ----- | --------------------------------------------------------- |
  | assignments | array | Array of assignment objects (properties below) (required) |

  **Base Assignment Object Properties**

  | Parameter        | Type         | Description                         |
  | ---------------- | ------------ | ----------------------------------- |
  | user             | string       | User ID (required)                  |
  | entitlements     | string array | Array of entitlement IDs (required) |
  | datasink\_status | string       | Updated data sink status (required) |

  Example Request

  ```
  curl -k -X POST \
  https://autoid-ui.forgerock.com/api/datasink/update/status/assignments \
  -H 'X-API-KEY: <api key value>' \
  -H 'Content-Type: application/json' \
  -d '{
    "assignments": [
      {
        "user": "john.doe",
        "entitlements": [
          "entitlement_1"
        ],
        "datasink_status": "ack"
      },
      {
        "user": "jane.smith",
        "entitlements": [
          "entitlement_1",
          "entitlement_2",
        ],
        "datasink_status": "nack"
      }
    ]
  }'
  ```

  Example Response (Success)

  ```
  {
    "message": ok
  }
  ```

## POST /api/datasink/update/status/rules

* POST /api/datasink/update/status/rules

  Update data sink status for rule decisions. Decisions are stored in the /autoid/api/rule\_access\_decisions JAS entity and *entitlement-assignment* Elasticsearch index.

  Endpoint

  ```
  /api/datasink/update/status/rules
  ```

  Authorization

  ```
  <API Key>
  ```

  **JSON Body Parameters**

  | Parameter | Type  | Description                                         |
  | --------- | ----- | --------------------------------------------------- |
  | rules     | array | Array of rule objects (properties below) (required) |

  **Base Rules Object Properties**

  | Parameter        | Type         | Description                         |
  | ---------------- | ------------ | ----------------------------------- |
  | entitlement      | string       | Entitlement ID (required)           |
  | justification    | string array | Array of justifications (required)  |
  | datasink\_status | string       | Updated data sink status (required) |

  Example Request

  ```
  curl -k -X POST \
  https://autoid-ui.forgerock.com/api/datasink/update/status/rules \
  -H 'X-API-KEY: <api key value>' \
  -H 'Content-Type: application/json' \
  -d '{
    "rules": [
      {
        "entitlement": "entitlement_1",
        "justification": [
          "0B_COST_CENTER_OP_TS5",
          "0C_USR_EMP_TYPE_Non-Employee",
          "10_LINE_OF_BUSINESS_Health and Safety",
          "13_USR_DEPARTMENT_NAME_Testing"
        ],
        "datasink_status": "nack"
      }
    ]
  }'
  ```

  Example Response (Success)

  ```
  {
    "message": ok
  }
  ```

## POST /api/datasink/update/status/roles

* POST /api/datasink/update/status/roles

  Update data sink status for exported roles.

  Endpoint

  ```
  /api/datasink/update/status/roles
  ```

  Authorization

  ```
  <API Key>
  ```

  **JSON Body Parameters**

  | Parameter | Type  | Description                                         |
  | --------- | ----- | --------------------------------------------------- |
  | roles     | array | Array of role objects (properties below) (required) |

  **Base Roles Object Properties**

  | Parameter        | Type   | Description                                       |
  | ---------------- | ------ | ------------------------------------------------- |
  | role\_id         | string | Role ID (required)                                |
  | status           | string | Role status (draft, candidate, active) (required) |
  | datasink\_status | string | Updated data sink status (required)               |

  Example Request

  ```
  curl -k -X POST \
  /https://autoid-ui.forgerock.com/api/datasink/update/status/roles \
  -H 'X-API-KEY: <api key value>' \
  -H 'Content-Type: application/json' \
  -d '{
    "roles": [
      {
        "role_id": "027d9a1d-9a2f-488a-8ab2-adf404e0aecb",
        "status": "draft",
        "datasink_status": "nack"
      }
    ]
  }'
  ```

  Example Response (Success)

  ```
  {
    "message": ok
  }
  ```

## POST /api/datasink/query

* POST /api/datasink/query

  Query data sink entities. Optional filtering can be applied as a JSON request body outlined below.

  Endpoint

  ```
  /api/datasink/query
  ```

  Authorization

  ```
  <API Key>
  ```

  **JSON Body Parameters**

  | Parameter            | Type   | Description                                                                      |
  | -------------------- | ------ | -------------------------------------------------------------------------------- |
  | id                   | string | Data sink ID (format: UUID)                                                      |
  | name                 | string | Data sink name                                                                   |
  | autoCertifyTimestamp | object | Last auto-certify operation timestamp filter object (available properties below) |
  | autoRequestTimestamp | object | Last auto-request operation timestamp filter object (available properties below) |
  | certifyTimestamp     | object | Last certify operation timestamp filter object (available properties below)      |
  | revokeTimestamp      | object | Last revoke operation timestamp filter object (available properties below)       |
  | rolePublishTimestamp | object | Last role publish timestamp filter object (available properties below)           |

  **timestampThresholds Object Properties**

  | Parameter | Type   | Description                                                                                        |
  | --------- | ------ | -------------------------------------------------------------------------------------------------- |
  | gt        | string | Greater than timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ). Cannot be present with **gte**.         |
  | gte       | string | Greater than or equal timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ). Cannot be present with **gt**. |
  | lt        | string | Less than timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ). Cannot be present with **lte**.            |
  | lte       | string | Less than or equal timestamp (format: yyyy-mm-ddThh:mm:ss.SSSZ). Cannot be present with **le**.    |

  Example Request

  ```
  curl -k -X POST \
  https://autoid-ui.forgerock.com/api/datasink/query \
  -H 'X-API-KEY: <api key value>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "IIQ",
    "certifyTimestamp": {
      "gt": "2021-11-19T10:01:19.937Z",
      "lte": "2021-11-20T10:01:19.937Z"
    }
  }'
  ```

  Example Response (Success)

  ```
  [
    {
      "id": "b72c15b7-7dcb-44ac-b1d3-162565e360b4",
      "name": "IIQ",
      "certifyTimestamp": "2021-11-19T11:01:19.937Z",
      "auto_request_timestamp": "2021-10-01T10:01:19.937Z"
    },
    {
      "id": "9501810e-1480-4f41-80d4-bc97154fddeb",
      "name": "IIQ",
      "certifyTimestamp": "2021-11-20T09:01:19.937Z",
      "auto_request_timestamp": "2021-10-01T10:01:19.937Z"
    }
  ]
  ```

## POST /api/datasink/update/timestamp

* POST /api/datasink/update/timestamp

  Update timestamps for a data sink entity.

  Endpoint

  ```
  /api/datasink/update/timestamp
  ```

  Authorization

  ```
  <API Key>
  ```

  **JSON Body Parameters**

  | Parameter            | Type   | Description                                                                            |
  | -------------------- | ------ | -------------------------------------------------------------------------------------- |
  | id                   | string | Data sink ID (format: UUID)                                                            |
  | autoCertifyTimestamp | object | Last auto-certify operation timestamp filter object (format: yyyy-mm-ddThh:mm:ss.SSSZ) |
  | autoRequestTimestamp | object | Last auto-request operation timestamp filter object (format: yyyy-mm-ddThh:mm:ss.SSSZ) |
  | certifyTimestamp     | object | Last certify operation timestamp filter object (format: yyyy-mm-ddThh:mm:ss.SSSZ)      |
  | revokeTimestamp      | object | Last revoke operation timestamp filter object (format: yyyy-mm-ddThh:mm:ss.SSSZ)       |
  | rolePublishTimestamp | object | Last role publish timestamp filter object (format: yyyy-mm-ddThh:mm:ss.SSSZ)           |

  Example Request

  ```
  curl -k -X POST \
  https://autoid-ui.forgerock.com/api/datasink/update/timestamp \
  -H 'X-API-KEY: <api key value>' \
  -H 'Content-Type: application/json' \
  -d ' {
    "id": "87e341c0-c1aa-4b0e-9ae5-1384bb6de8fc",
    "certifyTimestamp": "2021-11-19T10:01:19.937Z",
    "revokeTimestamp": "2021-11-19T10:01:19.937Z"
  }'
  ```

  Example Response (Success)

  ```
  {
    "message": "ok"
  }
  ```

## POST /api/datasink/query/logs

* POST /api/datasink/query/logs

  Query data sink logs. Optional filtering can be applied as a JSON request body outlined below.

  Endpoint

  ```
  /api/datasink/query/logs
  ```

  Authorization

  ```
  <API Key>
  ```

  **JSON Body Parameters**

  | Parameter | Type   | Description                 |
  | --------- | ------ | --------------------------- |
  | id        | string | Data sink ID (format: UUID) |
  | name      | string | Data sink name              |

  Example Request

  ```
  curl -k -X POST \
  https://autoid-ui.forgerock.com/api/datasink/query/logs \
  -H 'X-API-KEY: <api key value>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "IIQ"
  }'
  ```

  Example Response (Success)

  ```
  [
    {
      "id": "5f8c48c5-8f70-43a0-a9a6-61d1b017dac7",
      "name": "IIQ",
      "certify_timestamp": "2021-10-01T10:01:19.937Z",
      "revokeTimestamp": "2021-10-23T10:01:19.937Z",
      "logs": [
        {
          "message": "log 1"
        },
        {
          "message": "log 2"
        }
      ]
    },
    {
      "id": "9c68c658-2d7d-487c-a0ce-6d9cdcc7eaf7",
      "name": "IIQ",
      "certify_timestamp": "2021-10-01T10:01:19.937Z",
      "revokeTimestamp": "2021-10-01T10:01:19.937Z",
      "logs": [
        {
          "message": "log 1"
        },
        {
          "message": "log 2"
        }
      ]
    }
  ]
  ```

## POST /api/datasink/update/logs

* POST /api/datasink/update/logs

  Update data sink logs.

  Endpoint

  ```
  /api/datasink/update/logs
  ```

  Authorization

  ```
  <API Key>
  ```

  **JSON Body Parameters**

  | Parameter | Type   | Description                            |
  | --------- | ------ | -------------------------------------- |
  | id        | string | Data sink ID (format: UUID) (required) |
  | logs      | object | JSON logs object (required)            |

  Example Request

  ```
  curl -k -X POST \
  https://autoid-ui.forgerock.com/api/datasink/update/logs \
  -H 'X-API-KEY: <api key value>' \
  -H 'Content-Type: application/json' \
  -d '{
    "id": "87e341c0-c1aa-4b0e-9ae5-1384bb6de8fc",
    "logs": {
      "logs": [
        {
          "created": "2021-11-19T09:01:19.937Z",
          "type": "INFO",
          "message": "transaction started"
        },
        {
          "created": "2021-11-19T10:01:19.937Z",
          "type": "INFO",
          "message": "transaction successful"
        }
      ]
    }
  }'
  ```

  Example Response (Success)

  ```
  {
    "message": "ok"
  }
  ```
