> This page is for Plataforma, version Heredado.
> For other versions, use one of these documentation indexes:
> - V4 (default): https://next.developer.frame.io/platform/v4/llms.txt
> - V4 experimental: https://next.developer.frame.io/platform/v4-experimental/llms.txt
> - Heredado: https://next.developer.frame.io/platform/v2/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://next.developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://next.developer.frame.io/_mcp/server.

# Obtener entradas del registro de auditoría para un usuario especificado

GET https://api.frame.io/v2/users/{user_id}/events

Recupere registros de auditoría para un usuario determinado con algunas funciones de filtrado mediante parámetros de consulta. Funciona mejor al considerarlo un registro de _activity_ para el usuario especificado

Reference: https://next.developer.frame.io/platform/v2/api-reference/audit-logs/get-user-audit-logs

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `user_id` (string, required, default: erfb57e0-79f2-4bc7-9b70-99fbc175175c) — User ID

### Query parameters

- `filters[start_date]` (string, optional) — Fecha ISO de inicio
- `filters[end_date]` (string, optional) — Fecha ISO de finalización
- `filters[resource_type]` (enum, optional) — Filtrar por tipo de activo
  - Allowed values: `asset`, `review_link`, `presentation`, `collaborator`, `pending_collaborator`, `comment`, `review_link_item`, `account`, `account_member`, `pending_account_member`, `subscription`, `subscription_line_item`, `team`, `team_member`, `pending_team_member`, `user`, `action`, `oauth_app`, `user_token`, `webhook`, `file`, `folder`, `version_stack`, `like`, `read`
- `filters[event_type]` (enum, optional) — Filtrar por tipo de actividad
  - Allowed values: `email_address_changed`, `email_change_confirmation_requested`, `email_confirmed`, `google_auth_disabled`, `google_auth_enabled`, `login_factor_created`, `login_factor_validated`, `new_device_login`, `new_user_email_confirmation_requested`, `oauth_app_created`, `oauth_app_deleted`, `password_changed`, `password_reset_requested`, `push_tokens_added`, `push_tokens_deleted`, `role_added`, `role_removed`, `session_revoked`, `user_deactivated`, `user_login`, `user_login_attempt`, `user_mfa_enforced`, `user_reactivated`, `user_signup`, `user_token_created`, `user_token_deleted`, `user_token_disabled`, `user_token_enabled`, `user_token_updated`, `user_updated`
- `filters[team_id]` (string, optional) — Filtrar por ID de equipo
- `filters[project_id]` (string, optional) — Filtrar por ID de proyecto
- `filters[resource_id]` (string, optional) — Filtrar por ID de activo (ID de activo, ID de proyecto, ID de usuario)
- `filters[user_id]` (string, optional) — Filtrar por ID de usuario
- `filters[ip_address]` (string, optional) — Filtrar por dirección IP
- `page` (integer, optional, default: 1) — Número de página
- `page_size` (integer, optional, default: 50) — Registros por página

## Response

### 200

Succesful Event logs response

- `list of AuditEvent`

## Errors

### 401 Unauthorized Error

Unauthorized response

- `code` (integer, optional)
- `errors` (list of HttpErrorErrorsItems, optional)
- `message` (string, optional)

### 404 Not Found Error

Not Found response

- `code` (integer, optional)
- `errors` (list of HttpErrorErrorsItems, optional)
- `message` (string, optional)

## Types

### AuditEvent

- `account_id` (string, optional, nullable)
- `anonymous_user_id` (string, optional, nullable)
- `client` (string, optional, nullable) — El cliente de API que activó el evento de auditoría. No siempre se rellenará. Cuando la llamada de API que generó un evento se realiza mediante una aplicación OAuth, tendrá este formato: `oauth_app/:uuid`, y si se realiza mediante un token de desarrollador, tendrá este formato: `user_token/:uuid`, donde el UUID es el ID de usuario al que pertenece el token. A continuación, se muestran algunos ejemplos: - `user_token/57823879-e541-49b0-b902-c43794c4400c` - `oauth_app/80ccf0bb-ae91-49c4-8aec-8f6238c14947` - `web/2024-06-10-18-15` - `pipeline-media-warden/cbd0061f6f190489e8af3137b8707b33f498f53f` - `null`
- `event_type` (enum, optional)
  - Allowed values: `account_locked`, `account_member_created`, `account_member_deleted`, `account_member_updated`, `account_mfa_enforced`, `account_fio_version_migrated`, `account_fio_version_migrated`, `account_ownership_transferred`, `account_restored`, `account_updated`, `label_updated`, `collaborator_added`, `comment_created`, `email_address_changed`, `email_confirmed`, `google_auth_disabled`, `join_presentation_request_approved`, `join_project_request_approved`, `join_review_link_request_approved`, `join_team_request_approved`, `login_factor_created`, `login_factor_validated`, `account_permissions_granted_to_user`, `comment_liked`, `email_change_confirmation_requested`, `file_uploaded`, `google_auth_enabled`, `new_user_email_confirmation_requested`, `project_permissions_granted_to_account_user_group`, `project_permissions_granted_to_user`, `resource_invite_sent`, `share_viewed`, `transfer_batch_completed`, `user_mfa_enforced`, `workspace_permissions_granted_to_account_user_group`, `workspace_permissions_granted_to_user`, `new_device_login`, `password_changed`, `password_reset_requested`, `pending_account_member_created`, `pending_account_member_deleted`, `pending_team_member_created`, `pending_team_member_deleted`, `project_unarchived`, `push_tokens_added`, `push_tokens_deleted`, `role_added`, `role_removed`, `session_revoked`, `team_created`, `team_creator_updated`, `team_deleted`, `team_lifecycle_policy_updated`, `team_member_created`, `team_member_deleted`, `team_member_reset`, `team_member_updated`, `team_updated`, `user_deactivated`, `user_login`, `user_login_attempt`, `user_reactivated`, `user_updated`, `anonymous_user_created`, `comment_completed`, `comment_deleted`, `comment_uncompleted`, `comment_updated`, `join_request_accepted`, `join_request_created`, `join_request_declined`, `join_request_deleted`, `join_request_reset`, `pending_reviewer_created`, `pending_reviewer_deleted`, `presentation_created`, `presentation_deleted`, `presentation_updated`, `project_archived`, `project_created`, `project_deleted`, `project_invite_link_created`, `project_invite_link_revoked`, `project_moved`, `project_restored`, `project_updated`, `reviewer_created`, `reviewer_deleted`, `review_link_assets_added`, `review_link_assets_deleted`, `review_link_created`, `review_link_deleted`, `review_link_emailed`, `review_link_updated`, `subscription_cancelled`, `subscription_card_updated`, `subscription_created`, `subscription_line_item_created`, `subscription_line_item_deleted`, `subscription_restored`, `subscription_updated`, `user_signup`, `action_created`, `action_deleted`, `action_updated`, `oauth_app_created`, `oauth_app_deleted`, `oauth_app_updated`, `oauth_app_enabled`, `oauth_app_disabled`, `user_token_created`, `user_token_deleted`, `user_token_disabled`, `user_token_enabled`, `user_token_updated`, `webhook_created`, `webhook_deleted`, `webhook_updated`, `asset_copied`, `asset_created`, `asset_deleted`, `asset_moved`, `asset_restored`, `assets_unversioned`, `asset_updated`, `asset_versioned`, `high_risk_sign_up`, `sbwm_template_created`, `sbwm_template_deleted`, `sbwm_template_updated`, `allowed_domain_created`, `allowed_domain_deleted`, `collaborator_deleted`, `media_deleted`, `asset_metadata_created`, `media_created`, `pending_collaborator_created`, `pending_collaborator_deleted`, `plan_created`, `plan_deleted`, `plan_updated`, `preference_updated`, `asset_archived`, `asset_unarchived`, `project_archive_completed`, `project_unarchive_completed`, `reply_created`
- `event_details` (AuditEventEventDetails, optional) — Los detalles para el evento. Esto varía bastante de un tipo de evento a otro, pero hay algunos ejemplos en las respuestas de ejemplo.
- `id` (double, optional) — Identificador único
- `inserted_at` (string, optional)
- `ip_address` (string, optional, nullable) — La dirección IP asociada a este evento
- `project_id` (string, optional, nullable) — El ID de proyecto en el que se produjo esta acción
- `resource_id` (string, optional) — El ID del activo referenciado
- `resource_type` (enum, optional) — El tipo de activo referenciado
  - Allowed values: `account`, `account_member`, `action`, `anonymous_user`, `asset`, `comment_impression`, `comment`, `folder`, `join_request`, `login_factor`, `oauth_app`, `pending_account_member`, `pending_reviewer`, `pending_team_member`, `presentation`, `project`, `project_invite_link`, `reviewer`, `review_link`, `reset_token`, `share`, `subscription`, `subscription_line_item`, `team`, `team_member`, `user`, `user_token`, `transfer_batch`, `version_stack`, `webhook`
- `team_id` (string, optional, nullable) — ID de equipo
- `source` (enum, optional) — La fuente de la acción que ha generado una entrada determinada del registro de auditoría
  - Allowed values: `device`, `internal`, `external`, `unknown`
- `user_id` (string, optional, nullable) — ID de usuario
- `updated_at` (string, optional)

### HttpErrorErrorsItems

- `code` (integer, optional)
- `detail` (string, optional)
- `status` (integer, optional)
- `title` (string, optional)

### AuditEventEventDetails

Los detalles para el evento. Esto varía bastante de un tipo de evento a otro, pero hay algunos ejemplos en las respuestas de ejemplo.

## Examples

### Asset Created

**Response**

```json
[
  {
    "anonymous_user_id": null,
    "client": null,
    "event_type": "asset_created",
    "event_details": {
      "account_id": "6bdcb4d9-9a2e-4548-a765-ae6b27a6c024",
      "ext": ".png",
      "filesize": 170144,
      "filetype": "image/png",
      "index": -17,
      "name": "Sample asset.png",
      "parent_id": "ba6cd478-5ca3-4c1a-2186-82cdaecb3e6c",
      "private": false,
      "project_id": "e9794c94-16a4-4e33-b4e6-cdd9757d0e24",
      "sm_refresh_at": "2024-06-28T21:42:54Z",
      "uploaded_at": "2024-06-28T21:42:54.437202Z"
    },
    "id": 1944044771,
    "inserted_at": "2024-06-28T21:42:54.516273Z",
    "ip_address": "255.255.255.255",
    "project_id": "j2794c94-16a4-4e33-b4e6-cdd9757d0e24",
    "resource_id": "92je2963-24ae-4cd1-be13-19a93c92eb6e",
    "resource_type": "asset",
    "team_id": "5j4d6420-fa8d-4e85-af05-0f26785c54f5",
    "source": "unknown",
    "user_id": "b72b57e0-79f2-4bc7-9b70-99fbc175175c",
    "updated_at": "2024-06-28T21:42:54.516273Z"
  }
]
```

**SDK Code**

```python Asset Created
import requests

url = "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Asset Created
const url = 'https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Asset Created
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Asset Created
require 'uri'
require 'net/http'

url = URI("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java Asset Created
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Asset Created
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp Asset Created
using RestSharp;

var client = new RestClient("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Asset Created
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Asset Moved

**Response**

```json
[
  {
    "anonymous_user_id": null,
    "client": null,
    "event_type": "asset_moved",
    "event_details": {
      "new_parent_id": "66c38214-390f-4609-9522-fd858dac8569",
      "old_parent_id": "aasfd478-5ca3-4c1a-a186-82cdaecb3e6c"
    },
    "id": 1943856518,
    "inserted_at": "2024-06-28T21:44:54.091046Z",
    "ip_address": null,
    "project_id": "e97s7c94-16a4-4e33-b4e6-cdd9757d0e24",
    "resource_id": "c99e2963-24ae-4cd1-be13-19a93c92eb6e",
    "resource_type": "asset",
    "team_id": "b44d1220-fa8d-4e85-af05-0f26785c54f5",
    "source": "unknown",
    "user_id": "eefbf97e0-79f2-4bc7-9b70-99fbc175175c",
    "updated_at": "2024-06-28T21:44:54.091046Z"
  }
]
```

**SDK Code**

```python Asset Moved
import requests

url = "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Asset Moved
const url = 'https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Asset Moved
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Asset Moved
require 'uri'
require 'net/http'

url = URI("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java Asset Moved
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Asset Moved
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp Asset Moved
using RestSharp;

var client = new RestClient("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Asset Moved
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Review Link Updated

**Response**

```json
[
  {
    "anonymous_user_id": null,
    "client": "web/2024-06-24-18-11",
    "event_type": "review_link_updated",
    "event_details": {
      "password": "pas"
    },
    "id": 1929542681,
    "inserted_at": "2024-06-27T09:43:37.358532Z",
    "ip_address": "97.120.111.2",
    "project_id": "e9791f94-16a4-4e33-b4e6-cdd9757d0e24",
    "resource_id": "a57eb65f-ff57-4099-ac61-b2f0a13365c0",
    "resource_type": "review_link",
    "team_id": "b4td6420-fa8d-4e85-af05-0f26785c54f5",
    "source": "internal",
    "user_id": "ezrb57e0-79f2-4bc7-9b70-99fbc125175c",
    "updated_at": "2024-06-27T09:43:37.358532Z"
  }
]
```

**SDK Code**

```python Review Link Updated
import requests

url = "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Review Link Updated
const url = 'https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Review Link Updated
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Review Link Updated
require 'uri'
require 'net/http'

url = URI("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java Review Link Updated
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Review Link Updated
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp Review Link Updated
using RestSharp;

var client = new RestClient("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Review Link Updated
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### User Login Attempt

**Response**

```json
[
  {
    "anonymous_user_id": null,
    "client": "auth",
    "event_type": "user_login_attempt",
    "event_details": {
      "strikes": 1
    },
    "id": 1740327297,
    "inserted_at": "2024-06-04T21:29:37.320025Z",
    "ip_address": "172.250.231.232",
    "project_id": null,
    "resource_id": "zrfb57e0-9b70-79f2-4bc7-99fbc175175c",
    "resource_type": "user",
    "team_id": null,
    "source": "unknown",
    "user_id": "zrfb57e0-9b70-79f2-4bc7-99fbc175175c",
    "updated_at": "2024-06-04T21:29:37.320025Z"
  }
]
```

**SDK Code**

```python User Login Attempt
import requests

url = "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript User Login Attempt
const url = 'https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go User Login Attempt
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby User Login Attempt
require 'uri'
require 'net/http'

url = URI("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java User Login Attempt
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php User Login Attempt
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp User Login Attempt
using RestSharp;

var client = new RestClient("https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift User Login Attempt
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.frame.io/v2/users/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```