LINKEDIN COMPANY LIST MANAGED - Listar Empresas Gerenciadas
O que é esta operação?
O LinkedIn Company List Managed é a operação responsável por listar todas as empresas/páginas que o usuário autenticado gerencia no LinkedIn (admin de página).
Por que esta operação existe?
Gerenciamento de múltiplas páginas corporativas. O Company List Managed existe para:
- Multi-account management: Gerenciar várias páginas de clientes
- Automação em escala: Publicar em todas as páginas gerenciadas
- Auditoria: Ver quais páginas você administra
- Seleção de conta: Permitir usuário escolher em qual página publicar
- Dashboard: Mostrar estatísticas de todas as páginas
Como funciona internamente?
Quando o Company List Managed é executado, o sistema:
- Valida access token com escopo
r_organization_social - Faz GET para
/v2/organizationAcls?q=roleAssignee&role=ADMINISTRATOR - Filtra apenas organizações onde usuário é admin
- Usa projection para incluir dados da organização
- Retorna array de empresas gerenciadas
- Armazena resultado na variável especificada
Código interno (linkedin.executor.ts:142-150):
case 'list_managed':
// List companies user manages
const managedResponse = await axios.get(`${baseUrl}/organizationAcls?q=roleAssignee&role=ADMINISTRATOR&projection=(elements*(organization~(localizedName,vanityName)))`, {
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
});
return managedResponse.data;
Quando você DEVE usar esta operação?
Use Company List Managed sempre que precisar listar páginas administradas:
Casos de uso:
- Dashboard de agência: Mostrar todas as páginas de clientes
- Seletor de página: Permitir escolher onde publicar
- Publicação em massa: Postar em todas as páginas gerenciadas
- Auditoria de acessos: Ver quais páginas você gerencia
- Multi-tenant SaaS: Gerenciar páginas de múltiplos clientes
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| resource | string | Sim | Sempre "companies" |
| operation | string | Sim | Sempre "list_managed" |
| config.accessToken | string | Sim | Token OAuth 2.0 com r_organization_social |
| responseVariable | string | Não | Nome da variável de resposta (padrão: linkedInResult) |
Exemplo 1: Dashboard de Agência
Objetivo: Listar todas as páginas de clientes gerenciadas
JSON para Importar
{
"name": "LinkedIn - Dashboard Páginas Gerenciadas",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Token",
"parameters": {
"name": "linkedin_token",
"value": "SEU_TOKEN"
}
}
},
{
"id": "linkedin_1",
"type": "linkedin",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Listar Páginas",
"resource": "companies",
"operation": "list_managed",
"config": {
"accessToken": "{{linkedin_token}}"
},
"responseVariable": "minhasPaginas"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Mostrar Lista",
"parameters": {
"message": "🏢 PÁGINAS GERENCIADAS\n\nTotal: {{minhasPaginas.paging.total}}\n\n1. {{minhasPaginas.elements[0].organization~.localizedName}}\n2. {{minhasPaginas.elements[1].organization~.localizedName}}\n3. {{minhasPaginas.elements[2].organization~.localizedName}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "linkedin_1" },
{ "source": "linkedin_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Exemplo 2: Publicar em Todas as Páginas
Objetivo: Postar mesmo conteúdo em todas as páginas gerenciadas
JSON para Importar
{
"name": "LinkedIn - Post em Todas Páginas",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Pedir Conteúdo",
"parameters": {
"message": "Digite o conteúdo para publicar em todas as páginas:",
"variable": "conteudo"
}
}
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Token",
"parameters": {
"name": "linkedin_token",
"value": "SEU_TOKEN"
}
}
},
{
"id": "linkedin_list",
"type": "linkedin",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Listar Páginas",
"resource": "companies",
"operation": "list_managed",
"config": {
"accessToken": "{{linkedin_token}}"
},
"responseVariable": "paginas"
}
},
{
"id": "loop_1",
"type": "loop",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Para Cada Página",
"parameters": {
"array": "{{paginas.elements}}",
"itemVariable": "paginaAtual"
}
}
},
{
"id": "linkedin_post",
"type": "linkedin",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Publicar",
"resource": "companies",
"operation": "create_post",
"config": {
"accessToken": "{{linkedin_token}}"
},
"companyId": "{{paginaAtual.organization}}",
"content": "{{conteudo}}",
"responseVariable": "postResult"
}
},
{
"id": "message_final",
"type": "message",
"position": { "x": 1300, "y": 100 },
"data": {
"label": "Concluído",
"parameters": {
"message": "✅ Publicado em {{paginas.paging.total}} páginas!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1500, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "variable_1" },
{ "source": "variable_1", "target": "linkedin_list" },
{ "source": "linkedin_list", "target": "loop_1" },
{ "source": "loop_1", "target": "linkedin_post" },
{ "source": "linkedin_post", "target": "loop_1" },
{ "source": "loop_1", "target": "message_final", "label": "done" },
{ "source": "message_final", "target": "end_1" }
]
}
Resposta do Node
{
"paging": {
"count": 3,
"start": 0,
"total": 3
},
"elements": [
{
"organization": "urn:li:organization:1234567",
"organization~": {
"localizedName": "Tech Startup Inc",
"vanityName": "tech-startup"
},
"role": "ADMINISTRATOR",
"state": "APPROVED"
}
]
}
Boas Práticas
✅ SIM: - Use LOOP para processar múltiplas páginas - Valide permissões antes de publicar - Cache lista de páginas (mudam raramente) - Use DELAY entre posts em múltiplas páginas
❌ NÃO: - Não publique sem validar permissões - Não ignore rate limits em publicações em massa
Próximo Node
→ Company Create Post - Publicar em página → Company Get - Obter dados de empresa → Post Create - Criar publicação pessoal