OBrain Sovereign Engine

QUICKSTART

OBrain Hub — Quickstart Guide

Este guia mostra como começar a usar a API do OBrain Hub em menos de 10 minutos.


1. Obter uma API Key

  1. Acesse hub.oconnector.tech
  2. Crie uma conta (ou faça login)
  3. Vá em Configurações → Chaves de API
  4. Clique em Gerar Nova Chave
  5. Copie a chave (ela só é mostrada uma vez!)

2. Testar a Conexão

curl -X GET "https://obrain-api.dev-oconnector.workers.dev/api/v1/products?limit=5" \
  -H "X-API-Key: SUA_CHAVE_AQUI"

Você deve receber uma lista de produtos.


3. Integrar na sua Loja

Shopify (Liquid)

{% comment %} Em um template de produto ou collection {% endcomment %}
<script>
  async function fetchProducts() {
    const response = await fetch('https://obrain-api.dev-oconnector.workers.dev/api/v1/products?limit=20', {
      headers: { 'X-API-Key': 'SUA_CHAVE' }
    });
    const data = await response.json();
    console.log(data.data);
  }
  fetchProducts();
</script>

WooCommerce (PHP)

<?php
function obrain_fetch_products($limit = 20) {
    $api_key = get_option('obrain_api_key');
    
    $response = wp_remote_get(
        "https://obrain-api.dev-oconnector.workers.dev/api/v1/products?limit={$limit}",
        [
            'headers' => [
                'X-API-Key' => $api_key,
            ],
        ]
    );
    
    if (is_wp_error($response)) {
        return [];
    }
    
    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body, true);
    
    return $data['data'] ?? [];
}

Node.js / Next.js

// lib/obrain.js
const OBRAIN_API_URL = 'https://obrain-api.dev-oconnector.workers.dev';

export async function getProducts(options = {}) {
  const { page = 1, limit = 20, category } = options;
  
  const params = new URLSearchParams({ page, limit });
  if (category) params.set('category', category);
  
  const response = await fetch(
    `${OBRAIN_API_URL}/api/v1/products?${params}`,
    {
      headers: {
        'X-API-Key': process.env.OBRAIN_API_KEY,
      },
    }
  );
  
  if (!response.ok) {
    throw new Error(`OBrain API error: ${response.status}`);
  }
  
  return response.json();
}

// Usage
const { data: products, pagination } = await getProducts({ limit: 50 });

Python

import os
import requests

OBRAIN_API_URL = 'https://obrain-api.dev-oconnector.workers.dev'
API_KEY = os.environ.get('OBRAIN_API_KEY')

def get_products(page=1, limit=20, category=None):
    headers = {'X-API-Key': API_KEY}
    params = {'page': page, 'limit': limit}
    
    if category:
        params['category'] = category
    
    response = requests.get(
        f'{OBRAIN_API_URL}/api/v1/products',
        headers=headers,
        params=params
    )
    response.raise_for_status()
    
    return response.json()

# Uso
products = get_products(limit=50)
for product in products['data']:
    print(f"{product['name']}: R${product['price']:.2f}")

4. Estrutura de um Produto

{
  "id": "pid-12345",
  "sku": "CJ-WATCH-001",
  "name": "Smart Watch Ultra",
  "description": "Descrição completa do produto...",
  "price": 299.90,
  "currency": "BRL",
  "stock": 150,
  "category": "Electronics",
  "image": "https://...",
  "images": ["url1", "url2"],
  "isLocked": false
}

Campos Importantes

CampoDescrição
pricePreço final em BRL (já com markup e frete)
stockEstoque disponível
rankIndexPosição no ranking (1 = melhor)
isLockedSe true, o produto está bloqueado para seu plano

5. Planos e Acesso

PlanoProdutos AcessíveisMarkup

Produtos com isLocked: true requerem upgrade de plano.


6. Boas Práticas

Cache

Faça cache dos produtos por 1-5 minutos para evitar rate limits:

// Next.js com cache
export const revalidate = 300; // 5 minutos

async function getProducts() {
  // Esta requisição será cacheada por 5 min
  return fetch('...', { next: { revalidate: 300 } });
}

Tratamento de Erros

try {
  const products = await getProducts();
} catch (error) {
  if (error.status === 401) {
    console.error('API Key inválida');
  } else if (error.status === 429) {
    console.error('Rate limit atingido, aguarde um minuto');
  } else {
    console.error('Erro desconhecido:', error);
  }
}

Não Exponha a API Key

// ❌ ERRADO: API key no frontend
fetch('...', { headers: { 'X-API-Key': 'sk_live_xxx' } });

// ✅ CORRETO: API key no backend/serverless
// pages/api/products.js
export default async function handler(req, res) {
  const response = await fetch('...', {
    headers: { 'X-API-Key': process.env.OBRAIN_API_KEY },
  });
  res.json(await response.json());
}

7. Próximos Passos

  • Importe a Postman Collection
  • Leia a API Reference completa
  • Configure webhooks para receber atualizações de pedidos
  • Contate suporte para integrações customizadas

Suporte

On this page