Pular para o conteúdo principal

Instagram Profile Post

Gerencie posts do Instagram para uma loja específica. Crie, liste, atualize e remova posts do Instagram.

Endpoint

GET /social-media/instagram/profile-post/{dealer_id}
POST /social-media/instagram/profile-post/{dealer_id}
GET /social-media/instagram/profile-post/{dealer_id}/{id}
PUT /social-media/instagram/profile-post/{dealer_id}/{id}
PATCH /social-media/instagram/profile-post/{dealer_id}/{id}
DELETE /social-media/instagram/profile-post/{dealer_id}/{id}

Métodos

  • GET: Lista todos os posts do Instagram da loja
  • POST: Cria um novo post do Instagram
  • GET (com ID): Retorna detalhes de um post específico
  • PUT: Atualiza completamente um post
  • PATCH: Atualiza parcialmente um post
  • DELETE: Remove um post

Parâmetros de URL

ParâmetroTipoDescrição
dealer_idintegerID da loja
idintegerID do post (para detalhe, atualização ou remoção)

Autenticação

Este endpoint requer autenticação via JWT. Inclua o token no header:

Authorization: Bearer {access_token}
X-Client-ID: {client_id do seu app}
X-Client-Secret: {client_secret do seu app}

Exemplo de Resposta

Lista de Posts

Status Code: 200 OK

{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"dealer_id": 10,
"dealer_name": "LOJA TESTE",
"ad_id": 12345,
"asset": "https://media.integradordeanuncios.com.br/media/instagram_post/post_1.jpg",
"asset_type": 1,
"asset_type_display": "Imagem",
"asset_id": "instagram_asset_123",
"user_id": 1,
"user_name": "João Silva",
"created_at": "2024-01-15T10:30:00Z",
"published_at": "2024-01-15T10:35:00Z",
"status": 2,
"status_display": "Publicado",
"error": null,
"ig_post_id": "17841405309211850",
"instagram_publish_status": 2,
"instagram_publish_status_display": "Publicado",
"caption": "Veículo em excelente estado! #carros #automoveis",
"link": "https://www.instagram.com/p/ABC123/"
},
{
"id": 2,
"dealer_id": 10,
"dealer_name": "LOJA TESTE",
"ad_id": 12346,
"asset": "https://media.integradordeanuncios.com.br/media/instagram_post/post_2.mp4",
"asset_type": 2,
"asset_type_display": "Vídeo",
"asset_id": "instagram_asset_124",
"user_id": 1,
"user_name": "João Silva",
"created_at": "2024-01-16T14:20:00Z",
"published_at": null,
"status": 1,
"status_display": "Na Fila",
"error": null,
"ig_post_id": null,
"instagram_publish_status": 1,
"instagram_publish_status_display": "Na Fila",
"caption": "Confira este veículo incrível! #automoveis",
"link": null
}
]
}

Detalhe de um Post

Status Code: 200 OK

{
"id": 1,
"dealer_id": 10,
"dealer_name": "LOJA TESTE",
"ad_id": 12345,
"asset": "https://media.integradordeanuncios.com.br/media/instagram_post/post_1.jpg",
"asset_type": 1,
"asset_type_display": "Imagem",
"asset_id": "instagram_asset_123",
"user_id": 1,
"user_name": "João Silva",
"created_at": "2024-01-15T10:30:00Z",
"published_at": "2024-01-15T10:35:00Z",
"status": 2,
"status_display": "Publicado",
"error": null,
"ig_post_id": "17841405309211850",
"instagram_publish_status": 2,
"instagram_publish_status_display": "Publicado",
"caption": "Veículo em excelente estado! #carros #automoveis",
"link": "https://www.instagram.com/p/ABC123/"
}

Estrutura de Dados

Estrutura da Resposta Paginada (Lista)

CampoTipoDescrição
countintegerTotal de posts encontrados
nextstringURL da próxima página (null se não houver)
previousstringURL da página anterior (null se não houver)
resultsarrayArray com os resultados da página atual

Estrutura de um Item de Post

CampoTipoDescrição
idintegerIdentificador único do post
dealer_idintegerID da loja (somente leitura)
dealer_namestringNome da loja (somente leitura)
ad_idintegerID do anúncio associado (pode ser null)
assetstringURL do arquivo (imagem ou vídeo)
asset_typeintegerTipo do asset (1=Imagem, 2=Vídeo)
asset_type_displaystringNome do tipo de asset (somente leitura)
asset_idstringID do asset no Instagram
user_idintegerID do usuário que criou (somente leitura)
user_namestringNome do usuário que criou (somente leitura)
created_atstringData de criação (ISO 8601)
published_atstringData de publicação (ISO 8601, pode ser null)
statusintegerStatus do post (1=Na Fila, 2=Publicado, 3=Erro)
status_displaystringNome do status (somente leitura)
errorstringMensagem de erro (pode ser null)
ig_post_idstringID do post no Instagram (pode ser null)
instagram_publish_statusintegerStatus de publicação no Instagram (1=Na Fila, 2=Publicado, 3=Erro)
instagram_publish_status_displaystringNome do status de publicação (somente leitura)
captionstringLegenda do post
linkstringURL do post no Instagram (pode ser null)

Criar um Novo Post

Requisição

Método: POST

Endpoint: /social-media/instagram/profile-post/{dealer_id}

Payload:

{
"ad_id": 12345,
"asset_type": 1,
"asset_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD...",
"caption": "Veículo em excelente estado! #carros #automoveis",
"status": 1,
"instagram_publish_status": 1
}

Campos Obrigatórios

CampoTipoDescrição
captionstringLegenda do post (texto que aparecerá no Instagram)

Campos Opcionais

CampoTipoDescrição
ad_idintegerID do anúncio associado
asset_typeintegerTipo do asset (1=Imagem, 2=Vídeo)
asset_base64stringArquivo codificado em Base64 (imagem ou vídeo). Pode incluir o prefixo data:image/tipo;base64, ou data:video/tipo;base64,
ig_post_idstringID do post no Instagram (geralmente gerado automaticamente após publicação)
statusintegerStatus do post (1=Na Fila, 2=Publicado, 3=Erro). Padrão: 1
instagram_publish_statusintegerStatus de publicação no Instagram (1=Na Fila, 2=Publicado, 3=Erro). Padrão: 1

Exemplo com Imagem

{
"ad_id": 12345,
"asset_type": 1,
"asset_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD...",
"caption": "Veículo em excelente estado! #carros #automoveis",
"status": 1,
"instagram_publish_status": 1
}

Exemplo com Vídeo

{
"ad_id": 12345,
"asset_type": 2,
"asset_base64": "data:video/mp4;base64,AAAAIGZ0eXBpc29t...",
"caption": "Confira este veículo incrível! #automoveis",
"status": 1,
"instagram_publish_status": 1
}

Exemplo sem Asset (Apenas Legenda)

{
"ad_id": 12345,
"caption": "Novo veículo disponível! Entre em contato. #carros",
"status": 1,
"instagram_publish_status": 1
}

Resposta de Sucesso

Status Code: 201 Created

Retorna o objeto completo do post criado, incluindo o ID gerado e todos os dados relacionados.

Atualizar um Post

Requisição

Método: PUT ou PATCH

Endpoint: /social-media/instagram/profile-post/{dealer_id}/{id}

Payload (PUT - atualização completa):

{
"ad_id": 12345,
"asset_type": 1,
"asset_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD...",
"caption": "Legenda atualizada do post",
"status": 2,
"instagram_publish_status": 2
}

Payload (PATCH - atualização parcial):

{
"caption": "Nova legenda do post",
"status": 2
}

Resposta de Sucesso

Status Code: 200 OK

Retorna o objeto atualizado do post.

Remover um Post

Requisição

Método: DELETE

Endpoint: /social-media/instagram/profile-post/{dealer_id}/{id}

Resposta de Sucesso

Status Code: 204 No Content

Filtros

Este endpoint suporta os seguintes filtros através de query parameters:

ParâmetroTipoDescrição
inventoryintegerFiltra posts por ID do anúncio (ad_id)
date_created_fromdateFiltra posts criados a partir desta data (formato: YYYY-MM-DD)
date_created_todateFiltra posts criados até esta data (formato: YYYY-MM-DD)

Exemplos de Uso de Filtros

Filtrar por anúncio:

GET /social-media/instagram/profile-post/{dealer_id}?inventory=12345

Filtrar por data de criação (a partir de):

GET /social-media/instagram/profile-post/{dealer_id}?date_created_from=2024-01-01

Filtrar por data de criação (até):

GET /social-media/instagram/profile-post/{dealer_id}?date_created_to=2024-01-31

Filtrar por intervalo de datas:

GET /social-media/instagram/profile-post/{dealer_id}?date_created_from=2024-01-01&date_created_to=2024-01-31

Validações Importantes

  1. caption: Campo obrigatório. Deve conter a legenda do post que será exibida no Instagram.

  2. asset_type:

    • 1 = Imagem (formato suportado: JPG, PNG)
    • 2 = Vídeo (formato suportado: MP4)
  3. asset_base64:

    • Pode incluir o prefixo data:image/tipo;base64, ou data:video/tipo;base64,
    • Ou apenas a string Base64 pura
    • O arquivo será processado e salvo automaticamente
    • Campo opcional - é possível criar um post apenas com legenda
  4. ig_post_id:

    • Campo opcional
    • Geralmente é gerado automaticamente pelo Instagram após a publicação
    • Pode ser fornecido manualmente se você já possui o ID do post
  5. Status:

    • 1 = Na Fila (aguardando publicação)
    • 2 = Publicado
    • 3 = Erro

Observações

  • Os posts são ordenados por data de criação (mais recentes primeiro)
  • O campo asset é gerado automaticamente após o processamento do asset_base64
  • O campo caption é obrigatório e deve conter a legenda que aparecerá no Instagram
  • O campo ad_id é opcional e pode ser usado para associar o post a um anúncio específico
  • É possível criar um post apenas com legenda, sem asset (imagem ou vídeo)
  • O campo ig_post_id é preenchido automaticamente após a publicação no Instagram

Possíveis Retornos de Erro

400 Bad Request

Validação de Campos

Retornado quando há erros de validação nos dados enviados.

{
"caption": ["Este campo é obrigatório."]
}

Erro no Processamento de Base64

Retornado quando há erro ao processar o arquivo Base64.

{
"error": "Error processing base64 image: Invalid base64 string"
}

401 Unauthorized

Retornado quando o token de autenticação não foi fornecido ou é inválido.

{
"detail": "As credenciais de autenticação não foram fornecidas."
}

ou

{
"detail": "Token inválido ou expirado."
}

403 Forbidden

Retornado quando o usuário autenticado não tem permissão para acessar este recurso ou quando tenta acessar uma loja que não está autorizado a gerenciar.

{
"detail": "Você não tem permissão para executar essa ação."
}

404 Not Found

Retornado quando um post específico não é encontrado (ao acessar /social-media/instagram/profile-post/{dealer_id}/{id}).

{
"detail": "Não encontrado."
}

400 Bad Request - Parâmetro Ausente

Retornado quando o parâmetro dealer_id não é fornecido na URL.

{
"detail": "Parâmetro ID da Loja não encontrado"
}