Skip to content

[feature]: Add Sunshine Conversations API SDK entry point#65

Open
lmeilibr wants to merge 1 commit intomainfrom
feature/conversations-api
Open

[feature]: Add Sunshine Conversations API SDK entry point#65
lmeilibr wants to merge 1 commit intomainfrom
feature/conversations-api

Conversation

@lmeilibr
Copy link
Copy Markdown
Contributor

Prefácio

Implementação do entry point Conversations para a API de Sunshine Conversations (formerly Smooch) do Zendesk. API completamente diferente do padrão Zendesk: usa autenticação Basic com key_id/secret, base path /sc, e paginação com page[size] usando literal brackets.

CHANGELOG

Adicionado

  • Entry point Conversations exportado de libzapi com autenticação via key_id/key_secret + app_id
  • Apps: CRUD completo
  • App Keys: list, get, create, delete
  • Conversations: list_by_user(user_id), get, create, update, delete
  • Messages: list, post, delete_all, delete
  • Participants: list, join, leave
  • Activities: post
  • Switchboard Actions: accept_control, offer_control, pass_control, release_control
  • Integrations: CRUD completo
  • Integration API Keys: list, get, create, delete
  • Webhooks: CRUD completo
  • Switchboards: list, create, update, delete
  • Switchboard Integrations: list, create, update, delete
  • Users: list_by_email(email), get, create, update, delete, delete_personal_info, sync
  • Clients: list, create, remove
  • Devices: list, get
  • Attachments: upload (multipart), delete
  • 270 testes unitários cobrindo todos os API clients
  • 12 testes de integração com setup/teardown adequado

Infraestrutura

  • basic_key_headers(key_id, key_secret) em auth.py para autenticação Basic
  • get_raw(url) em HttpClient para enviar URLs com brackets literais sem percent-encoding
  • sunco_yield_items() paginador customizado usando get_raw para page[size]
  • HttpClient.get() agora aceita params opcional (backward-compatible)

Notas técnicas

  • List Users requer filter[identities.email] — exposto como list_by_email(email)
  • List Conversations requer filter[userId] — exposto como list_by_user(user_id)
  • Conversas pessoais não podem ser deletadas diretamente — deletar o usuário limpa automaticamente
  • App-scoped keys não podem listar apps ou webhooks de certas integrações (testes fazem skip)

BACKLOG

  • Adicionar testes de serviço dedicados
  • Suporte a JWT Bearer token como alternativa ao Basic auth

ISSUES

Nenhuma issue relacionada.

REQUISITOS

  • Zendesk account com Sunshine Conversations habilitado
  • Credenciais: ZENDESK_URL, SUNCO_KEY_ID, SUNCO_KEY_SECRET, SUNCO_APP_ID

🤖 Generated with Claude Code

Implement the Conversations entry point for the Sunshine Conversations
(formerly Smooch) API with 16 resources: Apps, App Keys, Conversations,
Messages, Participants, Activities, Switchboard Actions, Integrations,
Integration API Keys, Webhooks, Switchboards, Switchboard Integrations,
Users, Clients, Devices, and Attachments.

Key design decisions:
- Uses Basic auth (key_id:secret) with /sc base path
- Custom pagination helper (sunco_yield_items) with get_raw() to avoid
  bracket encoding in page[size] query params
- Users list requires filter[identities.email] (list_by_email)
- Conversations list requires filter[userId] (list_by_user)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
78.4% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

Copy link
Copy Markdown
Collaborator

@monteiroliveira monteiroliveira left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Acabei ficando off esse fim de semana.. Demorei um pouco para ver esse PR.

Os nomes dos campos da dataclass não estão em snake case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants