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 lojaPOST: Cria um novo post do InstagramGET(com ID): Retorna detalhes de um post específicoPUT: Atualiza completamente um postPATCH: Atualiza parcialmente um postDELETE: Remove um post
Parâmetros de URL
| Parâmetro | Tipo | Descrição |
|---|---|---|
dealer_id | integer | ID da loja |
id | integer | ID 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)
| Campo | Tipo | Descrição |
|---|---|---|
count | integer | Total de posts encontrados |
next | string | URL da próxima página (null se não houver) |
previous | string | URL da página anterior (null se não houver) |
results | array | Array com os resultados da página atual |
Estrutura de um Item de Post
| Campo | Tipo | Descrição |
|---|---|---|
id | integer | Identificador único do post |
dealer_id | integer | ID da loja (somente leitura) |
dealer_name | string | Nome da loja (somente leitura) |
ad_id | integer | ID do anúncio associado (pode ser null) |
asset | string | URL do arquivo (imagem ou vídeo) |
asset_type | integer | Tipo do asset (1=Imagem, 2=Vídeo) |
asset_type_display | string | Nome do tipo de asset (somente leitura) |
asset_id | string | ID do asset no Instagram |
user_id | integer | ID do usuário que criou (somente leitura) |
user_name | string | Nome do usuário que criou (somente leitura) |
created_at | string | Data de criação (ISO 8601) |
published_at | string | Data de publicação (ISO 8601, pode ser null) |
status | integer | Status do post (1=Na Fila, 2=Publicado, 3=Erro) |
status_display | string | Nome do status (somente leitura) |
error | string | Mensagem de erro (pode ser null) |
ig_post_id | string | ID do post no Instagram (pode ser null) |
instagram_publish_status | integer | Status de publicação no Instagram (1=Na Fila, 2=Publicado, 3=Erro) |
instagram_publish_status_display | string | Nome do status de publicação (somente leitura) |
caption | string | Legenda do post |
link | string | URL 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
| Campo | Tipo | Descrição |
|---|---|---|
caption | string | Legenda do post (texto que aparecerá no Instagram) |
Campos Opcionais
| Campo | Tipo | Descrição |
|---|---|---|
ad_id | integer | ID do anúncio associado |
asset_type | integer | Tipo do asset (1=Imagem, 2=Vídeo) |
asset_base64 | string | Arquivo codificado em Base64 (imagem ou vídeo). Pode incluir o prefixo data:image/tipo;base64, ou data:video/tipo;base64, |
ig_post_id | string | ID do post no Instagram (geralmente gerado automaticamente após publicação) |
status | integer | Status do post (1=Na Fila, 2=Publicado, 3=Erro). Padrão: 1 |
instagram_publish_status | integer | Status 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âmetro | Tipo | Descrição |
|---|---|---|
inventory | integer | Filtra posts por ID do anúncio (ad_id) |
date_created_from | date | Filtra posts criados a partir desta data (formato: YYYY-MM-DD) |
date_created_to | date | Filtra 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
-
caption: Campo obrigatório. Deve conter a legenda do post que será exibida no Instagram. -
asset_type:1= Imagem (formato suportado: JPG, PNG)2= Vídeo (formato suportado: MP4)
-
asset_base64:- Pode incluir o prefixo
data:image/tipo;base64,oudata: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
- Pode incluir o prefixo
-
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
-
Status:
1= Na Fila (aguardando publicação)2= Publicado3= 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 doasset_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"
}