# List

To list the existing files you need to execute a **GET** request against the **/libraries/:id/files** endpoint.&#x20;

Since potentially there could be thousands of files, pagination is supported with **limit**, **order** and **after** arguments. Read about [pagination](https://docs.digitalsamba.com/reference/rest-api/pagination) to learn the details of it. By default maximum 100 files will be returned in the response.

{% hint style="info" %}
If you want to retrieve the details of one concrete file execute a **GET** request against the **/libraries/:libraryId/files/:fileId** endpoint
{% endhint %}

#### Request (listing all files)

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --request GET \
  --url https://api.digitalsamba.com/api/v1/libraries/45d125d8-bac9-43a5-a6a8-311a5433239d/files \
  --user YOUR_TEAM_ID:YOUR_DEVELOPER_KEY
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}

```java
import com.fasterxml.jackson.databind.ObjectMapper;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.util.Base64;
import java.util.Map;

String TEAM_ID = "YOUR_TEAM_ID";
String DEVELOPER_KEY = "YOUR_DEVELOPER_KEY";
String authorizationHeader = "Bearer " + Base64.getEncoder().encodeToString((TEAM_ID + ":" + DEVELOPER_KEY).getBytes());

//Put your library id here - this value is just an example
String libraryId = "45d125d8-bac9-43a5-a6a8-311a5433239d";

HttpRequest request = HttpRequest.newBuilder()
  .GET()
  .uri(new URI("https://api.digitalsamba.com/api/v1/libraries/" + libraryId + "/files"))
  .header("Authorization", authorizationHeader)
  .build();

HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());

System.out.println("Status code: " + response.statusCode());
System.out.println("Body: " + response.body());
```

{% endtab %}
{% endtabs %}

#### Response (200 OK)

```json
{
    "total_count": 6124,
    "data": [
        {
            "id": "2e74f71d-5eb5-45b1-9493-6461e5400e8f",
            "folder_id": "e6a08bd6-7262-4fa2-8adf-1f7ddefe6907",
            "name": "nightjar.jpg",
            "type": "image",
            "size": 637962,
            "source": "api",
            "status": "completed",
            "created_at": "2024-10-14T11:44:57Z"
        },
        ...............99 more files...............
    ]
} 
```

{% hint style="info" %}
The **total\_count** is the total amount of files  you have in the library. It is **NOT** the amount of files  in the current page returned in the **data** array. In the above example you have 6124 files  in total, but in the data array there will be maximum 100 files (the default limit argument value).
{% endhint %}

#### Request (get a concrete file)

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --request GET \
  --url https://api.digitalsamba.com/api/v1/libraries/45d125d8-bac9-43a5-a6a8-311a5433239d/files/2e74f71d-5eb5-45b1-9493-6461e5400e8f \
  --user YOUR_TEAM_ID:YOUR_DEVELOPER_KEY
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}

```java
import com.fasterxml.jackson.databind.ObjectMapper;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.util.Base64;
import java.util.Map;

String TEAM_ID = "YOUR_TEAM_ID";
String DEVELOPER_KEY = "YOUR_DEVELOPER_KEY";
String authorizationHeader = "Bearer " + Base64.getEncoder().encodeToString((TEAM_ID + ":" + DEVELOPER_KEY).getBytes());

//Put your library id here - this value is just an example
String libraryId = "45d125d8-bac9-43a5-a6a8-311a5433239d";

//Put your file id here - this value is just an example
String fileId = "2e74f71d-5eb5-45b1-9493-6461e5400e8f";

HttpRequest request = HttpRequest.newBuilder()
  .GET()
  .uri(new URI("https://api.digitalsamba.com/api/v1/libraries/" + libraryId + "/files/" + fileId))
  .header("Authorization", authorizationHeader)
  .build();

HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());

System.out.println("Status code: " + response.statusCode());
System.out.println("Body: " + response.body());
```

{% endtab %}
{% endtabs %}

#### Response (200 OK)

```json
{
    "id": "2e74f71d-5eb5-45b1-9493-6461e5400e8f",
    "folder_id": "e6a08bd6-7262-4fa2-8adf-1f7ddefe6907",
    "name": "nightjar.jpg",
    "type": "image",
    "size": 637962,
    "source": "api",
    "status": "completed",
    "created_at": "2024-10-14T11:44:57Z"
}

```

**Request (retrieve download links)**

{% tabs %}
{% tab title="cURL" %}
{% code overflow="wrap" %}

```bash
curl --request GET \
  --url https://api.digitalsamba.com/api/v1/libraries/45d125d8-bac9-43a5-a6a8-311a5433239d/files/2e74f71d-5eb5-45b1-9493-6461e5400e8f/links \
  --user YOUR_TEAM_ID:YOUR_DEVELOPER_KEY
```

{% endcode %}
{% endtab %}

{% tab title="Java" %}

```java
import com.fasterxml.jackson.databind.ObjectMapper;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.util.Base64;
import java.util.Map;

String TEAM_ID = "YOUR_TEAM_ID";
String DEVELOPER_KEY = "YOUR_DEVELOPER_KEY";
String authorizationHeader = "Bearer " + Base64.getEncoder().encodeToString((TEAM_ID + ":" + DEVELOPER_KEY).getBytes());

//Put your library id here - this value is just an example
String libraryId = "45d125d8-bac9-43a5-a6a8-311a5433239d";

//Put your file id here - this value is just an example
String fileId = "2e74f71d-5eb5-45b1-9493-6461e5400e8f";

HttpRequest request = HttpRequest.newBuilder()
  .GET()
  .uri(new URI("https://api.digitalsamba.com/api/v1/libraries/" + libraryId + "/files/" + fileId + "/links"))
  .header("Authorization", authorizationHeader)
  .build();

HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());

System.out.println("Status code: " + response.statusCode());
System.out.println("Body: " + response.body());
```

{% endtab %}
{% endtabs %}

#### Response (200 OK)

In case of a image:

```json
{
    "url": "......................"
}
```

In case of a multi-page (e.g. PDF):

```json
{
    "pages": [
        {
            "url": "................",
            "thumbnail_url": "................"
        },
        {
            "url": "................",
            "thumbnail_url": "................"
        },
        ...............................
    ]
}
```

The response includes time-limited download URLs (expire in 1 day).

For multi-page documents there is also a download link to the thumbnail for each page.
