Documentação da API

Para atender as necessidades dos clientes de integrar uma solução de e-commerce ao ERP AlphaInd, foi desenvolvida a API de e-commerce da AlphaSystemas.

Esta é uma API baseada em micro-serviços e foi construída utilizando o conceito de REST API, de forma a atender as boas práticas de mercado, tendo ainda uma rota de callback para facilitar a integração. O serviço oferecido é Serverless.


Arquitetura


Configuração de AlphaInd e PDV

Para que a API funcione corretamente, em conjunto com o AlphaInd e PDV, é necessário que o usuário confiugere o config.ini corretamente dos dois sistemas. As configurações que devem ser usadas estão descritas abaixo:

API={URL da API}

APIPublish=/subscription/publication

APISignIn=/auth/signIn

DuracaoToken={Tempo de duracao do token de autenticação em milisegundos, deve estar conforme as configurações da API, ou adicione s para segundos,m para minutos,h para horas,d para dias. O default da API é 15m}

Exemplo:

API=http://api-alpha.alphasystemas.com.br

APIPublish=/subscription/publication

APISignIn=/auth/signIn

DuracaoToken=15m

Swagger

A API foi Documentada utilizando o Swagger, um framework de documentação de APIs.

O Swagger, além de mostrar os endpoints, permite a realização de exemplos de testes, retornando as responses associadas ao http status code.

Pode-se acessar a documentação a partir deste link: Documentação

OBS: Caso tenha problema com CORS, verifique se o Swagger está sendo acessado via https. E caso o erro persista utilize o Allow CORS: Access-Control-Allow-Origin para habilitar o CORS pelo Chrome.

Serviços

ServiçoPorta DefaultBackEndFrontEndProduto
CatalogFront4000🗸CATÁLOGO
Catalog4001🗸CATÁLOGO
Auth3001🗸API/CATÁLOGO
Product3002🗸API/CATÁLOGO
Sale3003🗸API/CATÁLOGO
User3004🗸API/CATÁLOGO
Subscription3005🗸API/CATÁLOGO
Settings3006🗸API/CATÁLOGO
OnSale3007🗸API/CATÁLOGO
LegacyAuth3008🗸CATÁLOGO
Banking3009🗸API/CATÁLOGO
Email2001🗸
InstanceManager1001🗸

Necessitam de SEED

Configurações de Acesso

Para usar esta API, é necessário que o usuário esteja autenticado. Para isso, cria-se uma nova conta a partir da rota /auth/singUp ou utiliza-se um usuário administrador provido pela infra. Conseguinte, é necessário que o usuário se autentique pela rota /auth/signIn, que retornará um token de autenticação. Em cada rota da API o token será solicitado como bearer token. O usuário precisará se autenticar novamente toda vez que vencer o prazo de autenticação predefinido. A API só funcionará enquanto o usuário estiver usando um token. O tempo de vencimento do token é definido no Config.ini de acordo com o cliente.


Variáveis de ambiente

As variáveis de ambiente usadas no sistema estão da seguinte forma.

OBS.:

Serviço(S)Nome da Variável de AmbienteDescriçãoValor de ExemploSecretObrigatórioProdução
ALL BACKENDALLOWED_ORIGINOrigins Permitidas*🗸
ALL BACKENDALLOWED_METHODSMétodos PermitidosGET,HEAD,PUT,PATCH,POST,DELETE🗸
ALL BACKENDALLOWED_PREFLIGHT_CONTINUEPreflight Continuetrue🗸
ALL BACKENDALLOWED_OPTIONS_SUCCESS_STATUSCodigo de sucesso de Options204🗸
ALL BACKENDCORS_ENABLEDCORS Habilitadotrue🗸
ALL BACKENDLIMIT_WINDOW_MSTamanho da janela de limite de requisições10000🗸🗸
ALL BACKENDLIMIT_MAXNumero limite de requisições por janela15🗸🗸
ALL BACKENDDATABASE_URIString de Conexão de Ambos os DB (Mongo/MSSQL)mongodb://localhost:27017/?readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false🗸🗸🗸
ALL BACKENDDATABASE_HOSTURL de Ambos os DB (Mongo/MSSQL)mongo.sadfasdf.mongodb.net🗸🗸
ALL BACKENDDATABASE_PORTPorta de Ambos os DB (Mongo/MSSQL)14333🗸🗸
ALL BACKENDDATABASE_USERUsuário de Ambos os DB (Mongo/MSSQL)admin🗸🗸🗸
ALL BACKENDDATABASE_PASSWORDSenha de Ambos os DB (Mongo/MSSQL)password🗸🗸🗸
ALL BACKENDDATABASE_NAMENome de Ambos os DB (Mongo/MSSQL)write🗸🗸🗸
ALL BACKENDDATABASE_OPTIONSOpções de configuração de ambos os DB (Mongo/MSSQL)retryWrites=true&w=majority🗸🗸
ALL BACKENDDATABASE_CONNECTION_TYPETipo de Conexão de Ambos os DB (Mongo/MSSQL)mongodb+srv🗸🗸
ALL BACKENDDATABASE_DISABLEDDesabilita os banco de dados (Mongo/MSSQL)true🗸🗸
ALL BACKENDDATABASE_SSLConfigurações de SSL dos banco de dados (Mongo/MSSQL)false🗸🗸
ALL BACKENDDATABASE_ENCRYPTION_DISABLEDDesabilita criptografia de conexão dos banco de dados (Mongo/MSSQL)true🗸🗸
ALL BACKENDDATABASE_CONNECTION_TIMEOUTTimeout de conexão de ambos os DB em MS (Mongo/MSSQL)60000🗸🗸
ALL BACKENDDATABASE_REQUEST_TIMEOUTTimeout de requisição de ambos os DB em MS (Mongo/MSSQL)60000🗸🗸
ALL BACKENDDATABASE_WRITE_URIString de Conexão do DB de Escrita (Mongo/MSSQL)mongodb://localhost:27017/?readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false🗸🗸🗸
ALL BACKENDDATABASE_WRITE_HOSTURL do DB de Escrita (Mongo/MSSQL)mongo.sadfasdf.mongodb.net🗸🗸
ALL BACKENDDATABASE_WRITE_PORTPorta do DB de Escrita (Mongo/MSSQL)14333🗸🗸
ALL BACKENDDATABASE_WRITE_USERUsuário do DB de Escrita (Mongo/MSSQL)admin🗸🗸🗸
ALL BACKENDDATABASE_WRITE_PASSWORDSenha do DB de Escrita (Mongo/MSSQL)password🗸🗸🗸
ALL BACKENDDATABASE_WRITE_NAMENome do DB de Escrita (Mongo/MSSQL)write🗸🗸🗸
ALL BACKENDDATABASE_WRITE_OPTIONSOpções de configuração do DB de Escrita (Mongo/MSSQL)retryWrites=true&w=majority🗸🗸
ALL BACKENDDATABASE_WRITE_CONNECTION_TYPETipo de Conexão do DB de Escrita (Mongo/MSSQL)mongodb+srv🗸🗸
ALL BACKENDDATABASE_WRITE_DISABLEDDesabilita o banco de dados de Escrita (Mongo/MSSQL)true🗸🗸
ALL BACKENDDATABASE_WRITE_SSLConfigurações de SSL do banco de dados de Escrita (Mongo/MSSQL)false🗸🗸
ALL BACKENDDATABASE_WRITE_ENCRYPTION_DISABLEDDesabilita criptografia de conexão do banco de dados de Escrita (Mongo/MSSQL)true🗸🗸
ALL BACKENDDATABASE_WRITE_CONNECTION_TIMEOUTTimeout de conexão do DB de Escrita em MS (Mongo/MSSQL)60000🗸🗸
ALL BACKENDDATABASE_WRITE_REQUEST_TIMEOUTTimeout de requisição do DB de Escrita em MS (Mongo/MSSQL)60000🗸🗸
ALL BACKENDDATABASE_READ_URIString de Conexão do DB de Leitura (Mongo/MSSQL)mongodb://localhost:27017/?readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false🗸🗸🗸
ALL BACKENDDATABASE_READ_HOSTURL do DB de Leitura (Mongo/MSSQL)mongo.sadfasdf.mongodb.net🗸🗸
ALL BACKENDDATABASE_READ_PORTPorta do DB de Leitura (Mongo/MSSQL)14333🗸🗸
ALL BACKENDDATABASE_READ_USERUsuário do DB de Leitura (Mongo/MSSQL)admin🗸🗸🗸
ALL BACKENDDATABASE_READ_PASSWORDSenha do DB de Leitura (Mongo/MSSQL)password🗸🗸🗸
ALL BACKENDDATABASE_READ_NAMENome do DB de Leitura (Mongo/MSSQL)read🗸🗸🗸
ALL BACKENDDATABASE_READ_OPTIONSOpções de configuração do DB de Leitura (Mongo/MSSQL)retryWrites=true&w=majority🗸🗸
ALL BACKENDDATABASE_READ_CONNECTION_TYPETipo de Conexão do DB de Leitura (Mongo/MSSQL)mongodb+srv🗸🗸
ALL BACKENDDATABASE_READ_DISABLEDDesabilita o banco de dados de Leitura (Mongo/MSSQL)true🗸🗸
ALL BACKENDDATABASE_READ_SSLConfigurações de SSL do banco de dados de Leitura (Mongo/MSSQL)false🗸🗸
ALL BACKENDDATABASE_READ_ENCRYPTION_DISABLEDDesabilita criptografia de conexão do banco de dados de Leitura (Mongo/MSSQL)true🗸🗸
ALL BACKENDDATABASE_READ_CONNECTION_TIMEOUTTimeout de conexão do DB de Leitura em MS (Mongo/MSSQL)60000🗸🗸
ALL BACKENDDATABASE_READ_REQUEST_TIMEOUTTimeout de requisição do DB de Leitura em MS (Mongo/MSSQL)60000🗸🗸
ALL BACKENDBACK_API_REST_FRAMEWORKFramework Rest usado pelo BACKENDexpress🗸
ALLSERVICE_NAMENome do ServiçoAUTH🗸🗸
ALLINSTANCENome da Instanciaauth🗸🗸
ALLPORTPorta onde o serviço vai escutar3000🗸
ALLUSE_STEPStep para uso na Vercel e sistemas servelesstrue🗸🗸
ALLSTEP_SIZETamanho do Step em ms1000🗸🗸
ALLJWT_PUBLIC_KEYJWT RSA PUBLIC KEY-🗸🗸🗸
ALLHOSTURL BASE DA APIhttp://user-alphasystemas.vercel.app/api🗸🗸
AUTHJWT_PRIVATE_KEYJWT RSA PRIVATE KEY-🗸🗸🗸
AUTHMAUTH_SALT_ROUNDSRounds de Salt usado para criptografia da Autenticação10🗸
AUTHMAUTH_SIGN_ALGORITHMAlgorítmo usado para criptografia da AutenticaçãoRS256🗸
AUTHMAUTH_SIGN_EXPIRES_INTempo de expiração do Token da Autenticação15m🗸
AUTHMAUTH_SERVICE_ALGORITHMAlgorítmo usado para criptografia da Autenticação de ServiçoRS512🗸
AUTHMAUTH_SERVICE_EXPIRES_INTempo de expiração do Token da Autenticação de Serviço15d🗸
AUTHAUTH_DEFAULT_PERMISSIONSPermissões default para esse serviço'{""all"": [""all""]}'🗸
AUTHDEFAULT_PERMISSIONSPermisões default para cada serviço'{""all"": {""all"": [""all""]}}'🗸
AUTHIS_FAKESE É DE TESTEtrue🗸
AUTHMAIL_HOSTHost de Emailhttp://api-ecomm.alphasystemas.com.br/email🗸
AUTHMAIL_KEYKey de Email-🗸
AUTHKEY_PATHUSA CAMINHO DA KEYtrue🗸🗸
AUTH, EMAILIS_FAKE_MAILUSA SERVIDOR DE EMAIL FALSOtrue🗸
AUTH, EMAILMAIL_PATHEndpoint do Email/api/email🗸
EMAILMAIL_USERUsuário da Caixa de Emailuser@KingHost.com.br🗸🗸
EMAILMAIL_PASSWORDSenha da Caixa de Emailuser_password🗸🗸
EMAILMAIL_SERVICEServiço que hospeda a Caixa de EmailKingHost🗸
EMAILMAIL_SERVICE_POOLSe o serviço de Email vai usar Pooltrue🗸
EMAILMAIL_SERVICE_HOSTHost do Serviço que hospeda a Caixa de Emailhttp://smtpi.kinghost.net/🗸
EMAILMAIL_SERVICE_SECURESe Aconexão é segura com a Caixa de Emailtrue🗸
EMAILMAIL_SERVICE_TLSConfiguração de TLS da Caixa de Email'{ "ciphers":"SSLv3", "rejectUnauthorized": false }'🗸
EMAILMAIL_SERVICE_PORTPorta da Conexão465🗸
EMAILMAIL_SUFIXSufixo do Email@alphasystemas.com.br🗸
EMAILMAIL_TIMEOUTTimeout do Email100000🗸
EMAILMAIL_JITTERJitter do Email10000🗸
EMAILLANGUAGELíngua dos Emailspt-br🗸
SALEAUTH_HOSTHost de Autenticaçãohttp://api-ecomm.alphasystemas.com.br/auth🗸🗸
SALEPRODUCT_HOSTHost de Produtohttp://api-ecomm.alphasystemas.com.br/product🗸🗸
SALESERVICE_KEYSenha do Serviçopassword🗸🗸🗸
SALEPRICE_TABLETabela de preço02🗸🗸🗸
SALESTORE_IDId da Loja1🗸🗸
BANKINGUSER_HOSTHost de usuáriohttp://api-ecomm.alphasystemas.com.br/user🗸🗸🗸
USERIBGE_URL_PREFIXURL base para a API do IBGEhttp://servicodados.ibge.gov.br/api/v1/localidades/estados/🗸🗸
USERIBGE_URL_SUFFIXSUFIXO DA URL base para a API do IBGE/municipios🗸🗸
SUBSCRIPTIONDEFAULT_HOSTroute.host defaulthttp://algum.com.br🗸🗸🗸
CATALOGFRONTSIGN_INROTA OU URL PARA SIGN IN/user/client🗸🗸
CATALOGFRONTSIGN_IN_SELLERROTA OU URL PARA SIGN IN DE VENDEDOR/user/employee🗸🗸
CATALOGFRONTSIGN_IN_LEGACYROTA OU URL PARA SIGN IN DO ALPHA INDlegacy-auth-alphasystemas.vercel.app/api/signIn🗸🗸
CATALOGFRONTSIGN_UPROTA OU URL PARA SIGN UPhttp://user-alphasystemas.vercel.app/api/client🗸🗸
CATALOGFRONTCATALOG_CONFIGROTA OU URL PARA CONFIGURAÇÃO DO CATÁLOGOhttp://catalog-alphasystemas.vercel.app/api/config🗸🗸
CATALOGFRONTCATALOG_GROUPROTA OU URL PARA GRUPOS DO CATÁLOGOhttp://catalog-alphasystemas.vercel.app/api/group🗸🗸
CATALOGFRONTCATALOG_THEMEROTA OU URL PARA CONFIGURAÇÃO DE TEMAS DO CATÁLOGOhttp://catalog-alphasystemas.vercel.app/api/theme🗸🗸
CATALOGFRONTCATALOG_PRODUCTROTA OU URL PARA CONFIGURAÇÃO DE PRODUTOS DO CATÁLOGOhttp://catalog-alphasystemas.vercel.app/api/product🗸🗸
CATALOGFRONTPRODUCT_PRODUCTROTA OU URL PARA PRODUTOShttps://api-alpha.alphasystemas.com.br/product/product🗸🗸
CATALOGFRONTSALE_ESTIMATEROTA OU URL PARA ORÇAMENTOhttps://api-alpha.alphasystemas.com.br/sale/estimate🗸🗸
CATALOGFRONTSALE_PAYMENT_METHODROTA OU URL PARA FORMAS DE PAGAMENTOhttps://api-alpha.alphasystemas.com.br/sale/payment/method🗸🗸
CATALOGFRONTSALE_PAYMENT_CONDITIONROTA OU URL PARA CONDIÇÕES DE PAGAMENTOhttps://api-alpha.alphasystemas.com.br/sale/payment/condition🗸🗸
CATALOGFRONTPOSTAL_CODE_ADDRESSURL PARA API DE BUSCA DE ENDEREÇO POR CEPhttp://viacep.com.br/ws/🗸🗸
CATALOGFRONTPIC_AWS_ACCESS_KEY_IDAWS ACCESS KEY ID DO BUCKET DE IMAGENSaccess_key_id🗸🗸
CATALOGFRONTPIC_AWS_BUCKETBUCKET DE IMAGENS DA AWS'alphacatalogo'🗸🗸
CATALOGFRONTPIC_AWS_BUCKET_DIRDIRETÓRIO DO BUCKET DE IMAGENS DA AWS'ALPHA'🗸🗸
CATALOGFRONTPIC_AWS_BUCKET_REGIONREGIÃO DO BUCKET DE IMAGENS DA AWS'us-east-2'🗸🗸
CATALOGFRONTPIC_AWS_LENGTHQUANTIDADE MÁXIMA DE IMAGENS POR PRODUTO DA AWS3🗸
CATALOGFRONTPIC_AWS_SIZETAMANHO MÁXIMO DE IMAGEM100000🗸
CATALOGFRONTROLE_IDID DE CARGO DO VENDEDOR0🗸🗸
CATALOGFRONTFILTER_SALESFILTRA VENDAS POR VENDEDORtrue🗸🗸
CATALOGFRONTNODE_TLS_REJECT_UNAUTHORIZEDREJEITA CONEXÃO SEM TSL0🗸🗸

AUTH

AUTH_DEFAULT_PERMISSIONS

JSON com as permissões padrões para o AUTH no formato:

{
    <endpoint: signIn, signUp, ..., all>: [<permission: create, read, update, delete, all>],
        ...
}

exemplo:

{
    "all": ["create", "read"]
}

DEFAULT_PERMISSIONS

JSON com as permissões padrões para cada serviço no formato:

{
    <service: product, sale, ..., all>: {
        <endpoint: invoice, bill, ..., all>: [<permission: create, read, update, delete, all>],
        ...
    },
    ...
}
{
    "product": {
        "product": ["all"]
    },
    "sale": {
        "invlice": ["all"],
        "bill": ["read"]
    }
}