Pular para o conteúdo principal

Facebook Story

Gerencie stories do Facebook para uma loja específica. Crie, liste, atualize stories do Facebook.

Endpoint

GET /social-media/facebook/story/{dealer_id}
POST /social-media/facebook/story/{dealer_id}
GET /social-media/facebook/story/{dealer_id}/{id}
PUT /social-media/facebook/story/{dealer_id}/{id}
PATCH /social-media/facebook/story/{dealer_id}/{id}

Métodos

  • GET: Lista todos os stories do Facebook da loja
  • POST: Cria um novo story do Facebook
  • GET (com ID): Retorna detalhes de um story específico
  • PUT: Atualiza completamente um story
  • PATCH: Atualiza parcialmente um story

Parâmetros de URL

ParâmetroTipoDescrição
dealer_idintegerID da loja
idintegerID do story (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 Stories

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/facebook_story/story_1.jpg",
"asset_type": 1,
"asset_type_display": "Imagem",
"asset_id": "facebook_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,
"page_id": "123456789",
"facebook_post_id": "987654321",
"facebook_publish_status": 2,
"facebook_publish_status_display": "Publicado",
"story_url": "https://www.facebook.com/stories/987654321"
},
{
"id": 2,
"dealer_id": 10,
"dealer_name": "LOJA TESTE",
"ad_id": 12346,
"asset": "https://media.integradordeanuncios.com.br/media/facebook_story/story_2.mp4",
"asset_type": 2,
"asset_type_display": "Vídeo",
"asset_id": "facebook_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,
"page_id": "123456789",
"facebook_post_id": null,
"facebook_publish_status": 1,
"facebook_publish_status_display": "Na Fila",
"story_url": null
}
]
}

Detalhe de um Story

Status Code: 200 OK

{
"id": 1,
"dealer_id": 10,
"dealer_name": "LOJA TESTE",
"ad_id": 12345,
"asset": "https://media.integradordeanuncios.com.br/media/facebook_story/story_1.jpg",
"asset_type": 1,
"asset_type_display": "Imagem",
"asset_id": "facebook_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,
"page_id": "123456789",
"facebook_post_id": "987654321",
"facebook_publish_status": 2,
"facebook_publish_status_display": "Publicado",
"story_url": "https://www.facebook.com/stories/987654321"
}

Estrutura de Dados

Estrutura da Resposta Paginada (Lista)

CampoTipoDescrição
countintegerTotal de stories 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 Story

CampoTipoDescrição
idintegerIdentificador único do story
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 Facebook
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 story (1=Na Fila, 2=Publicado, 3=Erro)
status_displaystringNome do status (somente leitura)
errorstringMensagem de erro (pode ser null)
page_idstringID da página do Facebook
facebook_post_idstringID do post no Facebook (pode ser null)
facebook_publish_statusintegerStatus de publicação no Facebook (1=Na Fila, 2=Publicado, 3=Erro)
facebook_publish_status_displaystringNome do status de publicação (somente leitura)
story_urlstringURL do story no Facebook (pode ser null)

Criar um Novo Story

Requisição

Método: POST

Endpoint: /social-media/facebook/story/{dealer_id}

Payload:

{
"ad_id": 12345,
"asset_type": 1,
"page_id": "123456789",
"asset_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD...",
"status": 1,
"facebook_publish_status": 1
}

Campos Obrigatórios

CampoTipoDescrição
asset_typeintegerTipo do asset (1=Imagem, 2=Vídeo)
page_idstringID da página do Facebook (deve pertencer à loja)

Campos Opcionais

CampoTipoDescrição
ad_idintegerID do anúncio associado
asset_base64stringArquivo codificado em Base64 (imagem ou vídeo). Pode incluir o prefixo data:image/tipo;base64, ou data:video/tipo;base64,
statusintegerStatus do story (1=Na Fila, 2=Publicado, 3=Erro). Padrão: 1
facebook_publish_statusintegerStatus de publicação no Facebook (1=Na Fila, 2=Publicado, 3=Erro). Padrão: 1

Exemplo com Imagem

{
"ad_id": 12345,
"asset_type": 1,
"page_id": "123456789",
"asset_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD...",
"status": 1,
"facebook_publish_status": 1
}

Exemplo com Vídeo

{
"ad_id": 12345,
"asset_type": 2,
"page_id": "123456789",
"asset_base64": "data:video/mp4;base64,AAAAIGZ0eXBpc29t...",
"status": 1,
"facebook_publish_status": 1
}

Resposta de Sucesso

Status Code: 201 Created

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

Atualizar um Story

Requisição

Método: PUT ou PATCH

Endpoint: /social-media/facebook/story/{dealer_id}/{id}

Payload (PUT - atualização completa):

{
"ad_id": 12345,
"asset_type": 1,
"page_id": "123456789",
"asset_base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD...",
"status": 2,
"facebook_publish_status": 2
}

Payload (PATCH - atualização parcial):

{
"status": 2,
"facebook_publish_status": 2
}

Resposta de Sucesso

Status Code: 200 OK

Validações Importantes

  1. page_id: O page_id informado deve pertencer à loja especificada no dealer_id. Caso contrário, a requisição retornará erro de validação.

  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
  4. Status:

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

Observações

  • Os stories 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 page_id deve corresponder a uma página do Facebook vinculada à loja
  • O campo ad_id é opcional e pode ser usado para associar o story a um anúncio específico

Possíveis Retornos de Erro

400 Bad Request

Validação de page_id

Retornado quando o page_id não pertence à loja especificada.

{
"page_id": ["Page ID 'invalid_page_id' does not belong to dealer ID '10'"]
}

Validação de Campos

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

{
"asset_type": ["Este campo é obrigatório."],
"page_id": ["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 story específico não é encontrado (ao acessar /social-media/facebook/story/{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"
}