---
title: Attribute drop-off process
description: To drop off user attributes to PingFederate, configure your application to authenticate itself, provide the encoded attributes, and store a reference ID from the response.
component: agentless
page_id: agentless:custom_application_setup:pf_agentless_ik_attribute_drop_off_process
canonical_url: https://docs.pingidentity.com/integrations/agentless/custom_application_setup/pf_agentless_ik_attribute_drop_off_process.html
revdate: June 7, 2024
section_ids:
  providing-the-user-attributes: Providing the user attributes
  parsing-the-reference-id-from-the-response: Parsing the reference ID from the response
---

# Attribute drop-off process

To drop off user attributes to PingFederate, configure your application to authenticate itself, provide the encoded attributes, and store a reference ID from the response.

![A diagram showing an overview of the attribute drop-off process.](_images/wzf1646074412793.png)

## Providing the user attributes

Configure your application to make an HTTP POST call to the Reference ID Adapter dropoff endpoint:

```
https://pf_host:pf_port/ext/ref/dropoff
```

In the call, provide the following:

* Authentication credentials, if you are using the HTTP Basic or HTTP header authentication. Learn more in [Authentication methods](pf_agentless_ik_authentication_methods.html).

* The ID of the Reference ID Adapter instance.

* The user attributes.

PingFederate expects the attributes to be encoded as a JSON object or as query parameters in the URL, depending on the **Incoming Attribute Format** setting in your adapter instance configuration.

Example code:

```
// Drop the attributes into PingFederate
String dropoffLocation = "https://localhost:9031/ext/ref/dropoff";
System.out.println(dropoffLocation);
URL dropUrl = new URL(dropoffLocation);
URLConnection urlConnection = dropUrl.openConnection();
HttpsURLConnection httpsURLConnection = (HttpsURLConnection)urlConnection;
httpsURLConnection.setSSLSocketFactory(socketFactory);
urlConnection.setRequestProperty("ping.uname", "changeme"); urlConnection.setRequestProperty("ping.pwd", "this is a default example and should not be used in production"); urlConnection.setRequestProperty("ping.instanceId", "idpadapter");

// Write the attributes in URL Connection, this example uses UTF-8 encoding
urlConnection.setDoOutput(true);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(urlConnection.getOutputStream(), StandardCharsets.UTF_8);
idpUserAttributes.writeJSONString(outputStreamWriter);
outputStreamWriter.flush();
outputStreamWriter.close();
```

## Parsing the reference ID from the response

The response from PingFederate includes a newly-generated reference ID associated with the attributes it received. You will use this `REF` value later in the authentication flow.

Example response:

```
HTTP/1.1 200 OK

{
"REF":"54321"
}
```

Configure your application to parse the response and store the reference ID.

Example code:

```
// Get the response and parse it into a JSON object
InputStream is = urlConnection.getInputStream();
InputStreamReader streamReader = new InputStreamReader(is, StandardCharsets.UTF_8);

JSONParser parser = new JSONParser();
JSONObject jsonRespObj = (JSONObject)parser.parse(streamReader);

// Grab the value of the reference Id from the JSON Object. This value
// must be passed to {pingfed} on resumePath as the parameter 'REF'
String referenceValue = (String)jsonRespObj.get("REF");
System.out.println("Reference ID = " + referenceValue);
```
