# Automatizaciones con API

### Obtención de la clave de API&#x20;

El primer paso es obtener la clave de la API en el menú de Configuración del portal de administración.

<figure><img src="https://docs.powerembedded.com.br/assets/configuracoes_chave_api_geral.png" alt=""><figcaption></figcaption></figure>



También es posible generar claves de autenticación basadas en permisos, de modo que el administrador pueda generar claves que permitan el acceso únicamente a un subconjunto de los endpoints.

<figure><img src="https://docs.powerembedded.com.br/assets/configuracoes_chave_api_permissao.png" alt=""><figcaption></figcaption></figure>



### Administración de usuarios mediante la API

La documentación de la API puede consultarse [aquí](https://api.powerembedded.com.br/index.html) Utilizando la ruta GET /api/user podemos realizar un listado de los usuarios del sistema.

```bash
curl -X 'GET' \
  'https://api.powerembedded.com.br/api/user' \
  -H 'accept: application/json' \
  -H 'X-API-Key: HNhlHXAG1g21NyIsIkFwaUtleSI6Ik'
```

Ejemplo de respuesta del servidor, donde la propiedad "reports" tiene asociado un array con todos los IDs de los informes a los que mi usuario tiene acceso y "groups" apunta a un array con todos los grupos de los que mi usuario forma parte.

```json
{
  "pageIndex": 1,
  "totalPages": 2,
  "hasNextPage": true,
  "hasPreviousPage": false,
  "data": [
    {
      "id": "dd668e6d-4f83-4715-a155-b55213677dd8",
      "email": "usuario@empresa.com",
      "name": "Usuário Xpto",
      "role": 3,
      "reports": [
        "c3aa3e62-7c43-4c0f-ab1d-3f9e0fbbad0e",
        "57e23242-ad69-455b-8955-1a0b4e35e6ed",
        "359a3241-08e2-45d1-b046-78c3c9c7ea8f",
        "7c8a79ec-23d0-4edc-8299-89461e134c34",
        "48dc89e1-240d-4b25-bba2-e8cb2d3d16d4",
        "9339a616-9d09-49dd-a848-3289161b2c2a"
      ],
      "companies": [],
      "groups": [
        "5d47cdd0-bd05-4e27-a87a-45b45da4360e",
        "833e6b83-f157-47ef-9f1f-7545d705c5a1"
      ],
      "reportLandingPage": null,
      "department": "BI ",
      "expirationDate": null,
      "windowsAdUser": null,
      "canEditReport": true,
      "canCreateReport": false,
      "canOverwriteReport": false
    }
  ]
}
```

Para filtrar la lista de usuarios por nombre y correo electrónico, basta con utilizar los parámetros de consulta "name" y "email", respectivamente.

```bash
curl -X 'GET' \
  'https://api.powerembedded.com.br/api/user?name=Usuario%20Xpto&email=usuario%40empresa.com' \
  -H 'accept: application/json' \
  -H 'X-API-Key: HNhlHXAG1g21NyIsIkFwaUtleSI6Ik'
```

Para crear un nuevo usuario en el sistema, utilice la ruta POST /api/user. Donde la clave "role" define la [función de usuario](../../portal-de-administracion/usuarios/tipos-de-roles-de-usuario.md) siendo:

1. Administrador
2. Colaborador
3. Visualizador
4. Colaborador de workspace

```bash
curl -X 'POST' \
  'https://api.powerembedded.com.br/api/user' \
  -H 'accept: */*' \
  -H 'X-API-Key: HNhlHXAG1g21NyIsIkFwaUtleSI6Ik' \
  -H 'Content-Type: application/json' \
  -d '{
  "email": "usuario@empresa.com",
  "name": "Usuário Xpto",
  "role": 1
}'
```

Para eliminar un usuario del sistema, utilice la ruta DELETE /api/user/{userEmail}, donde "userEmail" es el correo electrónico del usuario que se eliminará.

```bash
curl -X 'DELETE' \
  'https://api.powerembedded.com.br/api/user/usuario%40empresa.com' \
  -H 'accept: */*' \
  -H 'X-API-Key: HNhlHXAG1g21NyIsIkFwaUtleSI6Ik'
```

### Control de permisos en informes mediante la API

También puede otorgar permiso de acceso a uno o más informes a un usuario utilizando la ruta POST /api/user/link-reports. Basta con pasar los IDs de los informes en el array "reports" y el correo electrónico del usuario en "userEmail".

```bash
curl -X 'PUT' \
  'https://api.powerembedded.com.br/api/user/link-reports' \
  -H 'accept: */*' \
  -H 'X-API-Key: HNhlHXAG1g21NyIsIkFwaUtleSI6Ik' \
  -H 'Content-Type: application/json' \
  -d '{
  "userEmail": "usuario@empresa.com",
  "reports": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "2fa8bf64-3615-5162-b3fb-1c963f66afa5"
  ]
}'
```

Para eliminar el permiso de acceso a uno o más informes, basta con utilizar la ruta POST /api/user/unlink-reports.

```bash
curl -X 'PUT' \
  'https://api.powerembedded.com.br/api/user/unlink-reports' \
  -H 'accept: */*' \
  -H 'X-API-Key: HNhlHXAG1g21NyIsIkFwaUtleSI6Ik' \
  -H 'Content-Type: application/json' \
  -d '{
  "userEmail": "usuario@empresa.com",
  "reports": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  ]
}'
```



### Listado de los informes existentes en Power Embedded

Además de listar usuarios, también es posible listar informes. De esta forma es posible tener acceso a algunos metadatos, como los IDs de los informes. Para ello, basta con utilizar la ruta GET /api/report.

```bash
curl -X 'GET' \
  'https://api.powerembedded.com.br/api/report' \
  -H 'accept: application/json' \
  -H 'X-API-Key: HNhlHXAG1g21NyIsIkFwaUtleSI6Ik'
```

Ejemplo de respuesta del servidor.

```json
{
  "pageIndex": 1,
  "totalPages": 3,
  "hasNextPage": true,
  "hasPreviousPage": false,
  "data": [
    {
      "id": "f8dd3f97-be3a-423b-91d5-923da88f5ec6",
      "name": "Relatório de vendas",
      "description": "Relatório com informações de vendas",
      "datasetId": "b6bd5b2b-8983-41b1-970e-aa95bec52f39",
      "embedUrl": "https://app.powerbi.com/reportEmbed?reportId=f8dd3f97-be3a-423b-91d5-923da88f5ec6&groupId=d397e342-a1a0-47e4-94ee-acd6f23ddc52&w=2&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUJSQVpJTC1TT1VUSC1yZWRpcmVjdC5hbmFseXNpcy53aW5kb3dzLm5ldCIsImVtYmVkRmVhdHVyZXMiOnsidXNhZ2VNZXRyaWNzVk5leHQiOnRydWV9fQ%3d%3d",
      "workspaceId": "d397e342-a1a0-47e4-94ee-acd6f23ddc52",
      "reportType": 1,
      "folderId": null,
      "workspaceName": "BI",
      "userOwner": null
    }
  ]
}
```

Al igual que en el endpoint de usuarios, también es posible filtrar el informe mediante parámetros de consulta. En el ejemplo siguiente, utilizo los parámetros "reportName" y "workspaceName".

```bash
curl -X 'GET' \
  'https://api.powerembedded.com.br/api/report?reportName=Atendimento%20laboratorial&workspaceName=BI' \
  -H 'accept: application/json' \
  -H 'X-API-Key: d397e342-a1a0-47e4-94ee-acd6f23ddc52'
```

Respuesta del servidor.

```json
{
  "pageIndex": 1,
  "totalPages": 1,
  "hasNextPage": false,
  "hasPreviousPage": false,
  "data": [
    {
      "id": "cb56555d-546c-40a2-b988-b1903cbbe39c",
      "name": "Atendimento Laboratorial",
      "description": null,
      "datasetId": "693527e8-d0d6-4ef0-a570-7213e9ba59bc",
      "embedUrl": "https://app.powerbi.com/reportEmbed?reportId=cb56555d-546c-40a2-b988-b1903cbbe39c&groupId=d397e342-a1a0-47e4-94ee-acd6f23ddc52&w=2&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLUJSQVpJTC1TT1VUSC1yZWRpcmVjdC5hbmFseXNpcy53aW5kb3dzLm5ldCIsImVtYmVkRmVhdHVyZXMiOnsidXNhZ2VNZXRyaWNzVk5leHQiOnRydWV9fQ%3d%3d",
      "workspaceId": "d397e342-a1a0-47e4-94ee-acd6f23ddc52",
      "reportType": 1,
      "folderId": null,
      "workspaceName": "BI",
      "userOwner": null
    }
  ]
}
```



### Row-Level Security (RLS) utilizando la API

Para listar todos los roles vinculados a sus datasets, basta con utilizar la ruta GET /api/datasets/rls.

```bash
curl -X 'GET' \
  'https://api.powerembedded.com.br/api/datasets/rls' \
  -H 'accept: application/json' \
  -H 'X-API-Key: d397e342-a1a0-47e4-94ee-acd6f23ddc52'
```

Respuesta del servidor.

```json
{
  "pageIndex": 1,
  "totalPages": 2,
  "hasNextPage": true,
  "hasPreviousPage": false,
  "data": [
    {
      "id": "213cb3bd-ddf6-4e7b-9707-37859200f938",
      "name": "Admin",
      "users": [
        "b3569847-98af-4d3d-837c-b679afed8f64",
        "ca506817-6bff-4564-81ae-7e3d40c27947",
        "22672557-bb9d-49bd-8f97-e6341390cca0"
      ],
      "groups": [],
      "datasetId": "a57cae24-1073-41e3-818b-b7a82b76cc88",
      "userEmails": [
        "rafael.mendonca@powertuning.com.br",
        "alison.pezzott@powertuning.com.br",
        "dirceu.resende@powertuning.com.br"
      ]
    }
  ]
}
```

También es posible el uso de parámetros de consulta. En el ejemplo siguiente, informé el ID de un dataset en el parámetro "datasetId".

```bash
curl -X 'GET' \
  'https://api.powerembedded.com.br/api/datasets/rls?datasetId=c07dce01-f9b3-4a5c-be5d-dae7dc39a4fe' \
  -H 'accept: application/json' \
  -H 'X-API-Key: d397e342-a1a0-47e4-94ee-acd6f23ddc52'
```

Respuesta del servidor.

```json
{
  "pageIndex": 1,
  "totalPages": 1,
  "hasNextPage": false,
  "hasPreviousPage": false,
  "data": [
    {
      "id": "58f4a4ae-d85e-4c60-afdc-e0e26f6f96d5",
      "name": "Geral",
      "users": [],
      "groups": [],
      "datasetId": "c07dce01-f9b3-4a5c-be5d-dae7dc39a4fe",
      "userEmails": []
    },
    {
      "id": "95050ddf-b0c5-4631-9aa8-56eebece752b",
      "name": "Recepcionista15",
      "users": [
        "fabff0b5-73f3-44c8-885d-34445a8df76a",
        "2d60d03d-6bcf-435d-acad-0a3900ce0f6c"
      ],
      "groups": [],
      "datasetId": "c07dce01-f9b3-4a5c-be5d-dae7dc39a4fe",
      "userEmails": [
        "usuario@empresa.com",
        "outro@empresa.com"
      ]
    }
  ]
}
```

Para vincular una función RLS a un usuario o grupo, pueden utilizarse las rutas PUT /api/datasets/rls/link-users y PUT /api/datasets/rls/link-groups, respectivamente. Para desvincular, /unlink-users y /unlink-groups.

A continuación, un ejemplo con PUT /api/datasets/rls/link-users.

```bash
curl -X 'PUT' \
  'https://api.powerembedded.com.br/api/datasets/rls/link-users' \
  -H 'accept: */*' \
  -H 'X-API-Key: d397e342-a1a0-47e4-94ee-acd6f23ddc52' \
  -H 'Content-Type: application/json' \
  -d '{
  "usersEmails": [
    "usuario@empresa.com"
  ],
  "datasetId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "role": "Admin"
}'
```



### Consulta del registro de accesos a informes de Power Embedded mediante la API

También puede utilizar la ruta GET /api/report-audit para acceder al registro de auditoría de informes, consultando todos los accesos a informes realizados por los usuarios de Power Embedded.

```bash
curl -X 'GET' \
  'https://api.powerembedded.com.br/api/report-audit' \
  -H 'accept: application/json' \
  -H 'X-API-Key: d397e342-a1a0-47e4-94ee-acd6f23ddc52'
```

Respuesta del servidor.

```json
{
  "pageIndex": 1,
  "totalPages": 184,
  "hasNextPage": true,
  "hasPreviousPage": false,
  "data": [
    {
      "id": "fd00daf2-15b4-42f7-b929-3e1a593558ee",
      "createdAt": "2025-10-10T14:09:58.372834Z",
      "organizationId": "4b532635-a0c6-48ae-bea8-a5197c63f057",
      "userId": "c3bc257a-b32b-4979-922e-832ce61b205b",
      "userEmail": "francisco.neto@powertuning.com.br",
      "reportId": "cb56555d-546c-40a2-b988-b1903cbbe39c",
      "reportName": "Atendimento Laboratorial",
      "action": 1,
      "actionName": "TokenRequested"
    }
  ]
}
```

También es posible filtrar por parámetros de consulta, como "userEmail", "reportName", "pageNumber", entre otros.



### **Cómo mostrar los informes de Power BI en su aplicación**

{% hint style="info" %}
Para saber más sobre la visualización de informes en aplicaciones externas, acceda a la página [Mostrar informes en su sistema](mostrar-informe-en-su-sistema.md).
{% endhint %}



### **Documentación**

Documentación completa de la API:\
[Swagger UI (powerembedded.com.br)](https://api.powerembedded.com.br/index.html)

Página de demostración de la API para incrustar (embeddar) los informes:\
[Demo – PowerPortal.IntegrationDemo (powerembedded.com.br)](https://dev.demoapi.powerembedded.com.br/)
