Documentação de Autenticação e Conta - Superaudio Play

Endpoints de autenticação, cadastro e gerenciamento de conta de usuários Controla/RadioStore (ManagerClientsController e StoreClientsController), além de endereços (AddressController) e dados públicos de rádios (RDS e playlists via RadioPlayWebController) usados pelo Superaudio Play.

Esta API não utiliza o código 401 (Unauthorized). Falhas de autenticação/autorização retornam 403 (Forbidden).

400 - Bad Request (parâmetros obrigatórios ausentes ou inválidos)
{
    "status": "error",
    "message": "É necessário informar social_app_id ou password."
}
403 - Forbidden (credenciais inválidas ou token de autenticação ausente/inválido)
{
    "status": "error",
    "message": "Sua senha ou seu e-mail não conferem."
}
404 - Not Found (recurso não encontrado, ex: perfil de acesso ou cliente inexistente)
{
    "status": "error",
    "message": "Perfil de acesso inválido"
}
500 - Internal Server Error (erro inesperado no servidor)
{
    "status": "error",
    "message": "Ocorreu um erro inesperado. Tente novamente mais tarde."
}

Conta / Autenticação (RadioStore)

POST /radio-store/manager-clients/authorize-client-id Fazer login

Autentica por e-mail/senha ou, alternativamente, por login social (social_app_id + email).

Parâmetros POST

emailobrigatórioE-mail do usuário.
passwordSenha do usuário (obrigatório quando social_app_id não for informado).
social_app_idID do provedor de login social (alternativa ao password, para login via redes sociais).

Em caso de sucesso, a resposta também inclui api_token (JWT) e api_token_expires_in.

POST /radio-store/manager-clients/client-logout Fazer logout

Headers

AuthorizationobrigatórioToken do usuário autenticado.

Exemplo

axios
    .post(url, {}, {
        headers: {
            Authorization: 'Bearer ' + token,
        }
    });
GET /radio-store/manager-clients/get-client-logged Buscar usuário logado

Headers

AuthorizationobrigatórioToken do usuário autenticado.

Exemplo

axios
    .get(url, {
        headers: {
            Authorization: 'Bearer ' + token,
        }
    });
POST /radio-store/store-clients/ajax-recovery-account Recuperar conta (gerar nova senha)

Uma nova senha será gerada e enviada para o email especificado.

Parâmetros POST

emailobrigatórioE-mail do usuário.
request_fromOrigem do cadastro. Options: Web, App, VirtualAudioCard. Default: Web.
company_idID da companhia que esta sendo requisitada a recuperação de senha.

Exemplo

axios
    .post(url, {
        email: 'exemplo@gmail.com',
        request_from: 'App',
        company_id: 50
    });
POST /radio-store/manager-clients/register-client Registrar ouvinte

Parâmetros POST

user_typeobrigatórioTipo de cadastro. Options: Listener, Radio.
social_app_idID do provedor de login social (opcional, para cadastro via redes sociais).
location[country_id]País.
location[state]UF estado.
location[city_id]Cidade.
location[city_name]Nome cidade (apenas quando o país não for Brasil).
location[state_name]Nome da cidade (apenas quando o país não for Brasil).
location[district]Bairro.
location[phone_1]Telefone.
name_fantasyobrigatórioNome do usuário.
name_corporateobrigatórioNome do usuário (passar o mesmo name_fantasy).
emailobrigatórioE-mail do usuário.
passwordobrigatórioSenha do usuário.
confirm_passwordobrigatórioSenha do usuário.
registered_byID da companhia. Registrar ouvinte para uma companhia.
request_fromOrigem do cadastro. Options: Web, App, VirtualAudioCard. Default: Web.
accessProfilesCódigos de perfil de acesso (enviar como array).
fileFoto do ouvinte (opcional).

Quando request_from for "App" e user_type for "Listener", os campos de localização acima (telefone, cidade, bairro, estado) tornam-se opcionais.

accessProfiles

Após a confirmação do cadastro, será gerada uma solicitação para que o gestor da companhia aprove a entrada do usuário no perfil de acesso, caso a aprovação automática não esteja habilitada. Enviar os códigos como array:

let formData = new FormData();

accessProfileCodes.forEach(item => {
    formData.append('accessProfiles[]', item.code);
});
POST /radio-store/manager-clients/update-client-logged Editar cadastro de ouvinte

Parâmetros POST

name_fantasyNome do usuário.
name_corporateNome do usuário (passar o mesmo name_fantasy).
emailE-mail do usuário.
location[phone_1]Telefone.
location[country_id]País.
location[state]UF estado.
location[city_id]Cidade.
location[city_name]Nome cidade (apenas quando o país não for Brasil).
location[state_name]Nome da cidade (apenas quando o país não for Brasil).
location[district]Bairro.
fileFoto do ouvinte (opcional).
POST /radio-store/manager-clients/delete-account-client-logged Encerrar conta

Headers

AuthorizationobrigatórioToken do usuário autenticado.

Exemplo

axios
    .post(url, {}, {
        headers: {
            Authorization: 'Bearer ' + token,
        }
    });
GET /radio-store/manager-clients/check-access-profile-is-valid?code=startradios-podcasts Verificar se um perfil de acesso é válido

Parâmetros GET (querystring)

codeobrigatórioCódigo do perfil de acesso.
GET /radio-store/store-clients/configs-superaudio Buscar Configs do SuperAudio (banners, termos de uso, contatos, configs do play e mais)

Nenhum parâmetro obrigatório.

POST /radio-store/manager-clients/set-favorite-content-client-logged Favoritar conteúdo

Headers

AuthorizationobrigatórioToken do usuário autenticado.

Parâmetros POST

foreign_keyID do conteúdo.
model Model para identificar o tipo de conteúdo sendo alterado. Options: MediasTypes (Podcast), Clients (Rádio de cliente), Branchs (Rádio de companhia, mas ainda não funciona), Collections (Coleção).
remove_favoriteParâmetro boolean que define se é para adicionar ou remover favorito.
change_receive_notificationsParâmetro boolean que define se deve alterar de receive_notifications.
receive_notificationsParâmetro boolean que define se o usuário receberá notificações do conteúdo favoritado.
company_idID da companhia (opcional). Restringe o favorito ao contexto de uma companhia específica.

Exemplo

let podcastModel = 'MediasTypes',
    requestData = {
        foreign_key: podcastId,
        model: podcastModel,
        remove_favorite: false
    },
    requestOptions = {
        headers: {
            Authorization: 'Bearer ' + token,
        }
    };

axios.post(url, requestData, requestOptions);

Endereços (AddressController)

GET /api/address/request-countries/:publicKey Buscar países

Parâmetros GET

publicKeyobrigatórioChave pública fornecida pela Superaudio. Requisições sem a chave correta retornam 403.
GET /api/address/request-states/:publicKey/ Buscar estados

Parâmetros GET

publicKeyobrigatórioChave pública fornecida pela Superaudio. Requisições sem a chave correta retornam 403.

Retorna apenas estados do Brasil.

GET /api/address/request-cities/:publicKey/:uf Buscar cidades

Parâmetros GET

publicKeyobrigatórioChave pública fornecida pela Superaudio. Requisições sem a chave correta retornam 403.
ufobrigatórioUF do estado retornado no endpoint de estados.

RDS / RadioPlay Web (RadioPlayWebController)

GET /api/radio/:slug/rds Buscar informações públicas de RDS de uma rádio

Parâmetros GET

slugobrigatórioSlug / ID Único de identificação da rádio.
m Parâmetro de query opcional (?m=clients|branchs) que determina se deve buscar o rádio de companhia (branchs) ou o rádio de cliente (clients). Se não for especificado, "branchs" será considerado como padrão.
GET /api/radio-play/web/playlists/:branch/ Buscar playlists de uma rádio

Parâmetros GET

branchobrigatórioID da rádio (branch).
GET /api/radio-play/web/playlist/:branch/:date  |  /api/radio-play/web/playlist/:id/ Buscar uma playlist de uma rádio

Aceita duas formas: por rádio + data, ou diretamente pelo ID da playlist.

Parâmetros GET

branchID da rádio (branch). Obrigatório quando id não for informado.
dateData da playlist. Obrigatório quando id não for informado.
idID da playlist. Alternativa a branch + date.