apibrasil 1.0.0

SDK oficial Rust da plataforma APIBrasil: WhatsApp, SMS, consultas de CPF/CNPJ, veiculos, CEP, correios, pagamentos PIX/boleto e mais.
Documentation
use std::fmt::Display;

use crate::core::{IntoBody, Json, Result};

platform_service! {
    /// Conta: saldo, faturas, notificações e tickets.
    AccountService
}

impl AccountService {
    /// Marca uma notificação como lida:
    /// `PATCH /notifications/{id}/read`.
    pub async fn mark_notification_read(&self, id: impl Display) -> Result<Json> {
        self.base
            .patch(&format!("notifications/{id}/read"), None)
            .await
    }

    /// Atualiza um ticket: `PUT /ticket/{id}`.
    pub async fn update_ticket(&self, id: impl Display, body: impl IntoBody) -> Result<Json> {
        self.base.put(&format!("ticket/{id}"), body).await
    }

    /// Lista as mensagens de um ticket: `GET /ticket/{id}/messages`.
    pub async fn ticket_messages(&self, id: impl Display) -> Result<Json> {
        self.base.get(&format!("ticket/{id}/messages")).await
    }

    /// Responde um ticket: `POST /ticket/{id}/messages`.
    pub async fn add_ticket_message(&self, id: impl Display, body: impl IntoBody) -> Result<Json> {
        self.base.post(&format!("ticket/{id}/messages"), body).await
    }
}

json_get! {
    AccountService {
        /// Saldo/créditos da conta: `GET /balance`.
        balance => "balance",
        /// Plano atual: `GET /plan`.
        plan => "plan",
        /// Lista as faturas: `GET /invoices`.
        invoices => "invoices",
        /// Notas fiscais das faturas: `GET /invoices/notes`.
        invoice_notes => "invoices/notes",
        /// Jobs em fila do usuário: `GET /jobs`.
        jobs => "jobs",
        /// Credenciais do usuário: `GET /credentials`.
        credentials => "credentials",
        /// Indicações do usuário: `GET /indications`.
        indications => "indications",
        /// Lista as notificações: `GET /notifications`.
        notifications => "notifications",
        /// Lista os tickets de suporte: `GET /tickets`.
        tickets => "tickets",
    }
}

json_body! {
    AccountService {
        /// Paga uma fatura: `POST /invoices/pay`.
        pay_invoice => post "invoices/pay",
        /// Histórico de requisições da conta: `POST /requests`.
        requests => post "requests",
        /// Histórico de requisições por API: `POST /api/requests`.
        api_requests => post "api/requests",
        /// Abre um ticket: `POST /ticket`.
        create_ticket => post "ticket",
    }
}

json_empty! {
    AccountService {
        /// Marca todas as notificações como lidas:
        /// `POST /notifications/mark-all-read`.
        mark_all_notifications_read => post "notifications/mark-all-read",
    }
}