← Geliştiriciler REST API Rehberi

Kendi CMS'inize doğrudan taslak çekin

curl ile başlayan, herhangi bir dile taşınabilir bir workflow. Onaylı taslakları periyodik olarak çekin, kendi editorial iş akışınıza besleyin.

Reçete: Başka bir CMS'e taslak çekmek

Aşağıdaki senaryoda; sunucunuzda dakikada bir çalışan bir cron job vardır, son 5 dakikada onaylanmış (status=approved) taslakları çeker, kendi CMS'inizin draft koleksiyonuna yazar.

Adım 1 — Token'ı bir kere üretin

# Interaktif; sonucu bir yere kaydedin
curl -sS -X POST https://newsmachine.umutozan.dev/api/v1/tokens \
  -H 'Content-Type: application/json' \
  -d '{"email":"[email protected]","password":"***","name":"cms-sync"}'

Adım 2 — Onaylı taslakları çekin

curl -sS "https://newsmachine.umutozan.dev/api/v1/articles?status=approved&per_page=50&from=$(date -u -v-5M '+%Y-%m-%dT%H:%M:%SZ')" \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' | jq

Adım 3 — Her taslak için kendi CMS'inize post edin

Response içinde headline, spot, body, hero_image_url, tags, category, source_urls alanları bulunur. Bunları kendi CMS API'nize dönüştürün. Örnek Node script:

import fetch from 'node-fetch';

const AJANS = 'https://newsmachine.umutozan.dev/api/v1';
const CMS   = 'https://my-cms.example.com/api';

async function sync() {
  const since = new Date(Date.now() - 5*60*1000).toISOString();
  const res = await fetch(`${AJANS}/articles?status=approved&per_page=50&from=${since}`, {
    headers: { Authorization: `Bearer ${process.env.AJANS_TOKEN}` }
  });
  const { data } = await res.json();

  for (const a of data) {
    await fetch(`${CMS}/drafts`, {
      method: 'POST',
      headers: { 'Authorization': `Bearer ${process.env.CMS_TOKEN}`, 'Content-Type': 'application/json' },
      body: JSON.stringify({
        externalId: `ajans11-${a.id}`,
        title: a.headline,
        excerpt: a.spot,
        html: a.body,
        heroImage: a.hero_image_url,
        tags: a.tags,
        category: a.category,
        sources: a.source_urls,
      })
    });
  }
}
sync().catch(console.error);
Duplicate koruma: Kendi tarafınızda ajans11-{id} gibi bir external key ile upsert yapmayı unutmayın. Aksi halde aynı yazı her çekilişte tekrar oluşur.

Filtreler

GET /articles parametreleri:

Pratik notlar

Pull yerine push: Webhook

Cron'la sık çekme yerine sunucunuz canlıysa webhook ile push almak daha verimlidir. Detaylar için ana geliştirici sayfası.

← Tüm geliştirici kaynakları