Odoo REST ve XML-RPC API Entegrasyonu Eğitimi: Herhangi Bir Sistemi Bağlayın
Odoo, tüm veri modelini harici API'ler aracılığıyla ortaya çıkarır ve e-Ticaret platformları, CRM araçları, iş zekası yazılımı, mobil uygulamalar ve özel uygulamalar gibi hemen hemen her sistemle entegrasyonu mümkün kılar. Bu eğitim, üç API protokolünün tamamını (XML-RPC, JSON-RPC ve REST), kimlik doğrulama yöntemlerini, CRUD işlemlerini ve kod örnekleri ve en iyi uygulamalarla birlikte gerçek dünya entegrasyon modellerini kapsar.
Temel Çıkarımlar
- Odoo üç API protokolü sağlar: XML-RPC (en olgun), JSON-RPC (tarayıcı dostu) ve REST (Odoo 19, OpenAPI uyumlu)
- Tüm API'ler, veritabanı adı, kullanıcı adı ve şifre veya API anahtarı kullanılarak kimlik doğrulaması gerektirir
- CRUD işlemleri tüm protokollerde tutarlı bir model izler: arama, okuma, oluşturma, yazma, bağlantıyı kaldırma
- Etki alanı filtreleri, karmaşık sorgular için Lehçe gösterim sözdizimi kullanır
- Sayfalandırma, alan seçimi ve toplu işlemler, büyük veri kümeleri için performansı optimize eder
API Protokolü Karşılaştırması
| Özellik | XML-RPC | JSON-RPC | DİNLENME (Odoo 19) |
|---|---|---|---|
| Vade | Odoo 8'den beri stabil | Odoo 10'dan beri stabil | Odoo'da Yenilik 19 |
| Kimlik Doğrulama | Kullanıcı adı/şifre | Oturum tabanlı | API anahtarı veya OAuth 2.0 |
| Dokümantasyon | Kılavuz | Kılavuz | Otomatik oluşturulan OpenAPI |
| Yanıt formatı | XML | JSON | JSON |
| Toplu işlemler | Evet | Evet | Evet |
| Web kancaları | Hayır (özel modül gerektirir) | Hayır | Evet (yapılandırılabilir) |
| Dil desteği | Herhangi biri (XML-RPC evrenseldir) | JavaScript dostu | Herhangi biri (HTTP standardı) |
Kimlik Doğrulama
XML-RPC Kimlik Doğrulaması
XML-RPC kimlik doğrulaması iki adımlı bir işlem kullanır: bir kullanıcı kimliği (uid) almak için kimlik doğrulaması yapın, ardından bu kullanıcı kimliğini sonraki çağrılar için kullanın.
Kimlik doğrulama çağrısı, veritabanı adını, kullanıcı adını, parolayı ve boş bir nesneyi ileterek authenticate yöntemiyle /xmlrpc/2/common uç noktasına ulaşır. Yanıt sayısal kullanıcı kimliğidir. Sonraki tüm veri çağrıları, veritabanını, kullanıcı kimliğini, parolayı, model adını, yöntem adını ve bağımsız değişkenleri ileterek execute_kw yöntemiyle /xmlrpc/2/object kullanır.
JSON-RPC Kimlik Doğrulaması
JSON-RPC, /web/session/authenticate uç noktası aracılığıyla oturum tabanlı kimlik doğrulamayı kullanır. İstek gövdesi, jsonrpc: "2.0", call yöntemi ve db, login ve password içeren parametrelere sahip bir JSON nesnesidir. Yanıt, çerezde sonraki isteklerin kimliğini doğrulayan bir oturum kimliğini içerir.
REST API Kimlik Doğrulaması (Odoo 19)
REST API, Odoo arka ucunda oluşturulan API anahtarlarını destekler:
- Ayarlar > Kullanıcılar > API Anahtarları'na gidin
- Belirtilen izinlere sahip yeni bir anahtar oluşturun
- Anahtarı
Authorization: Bearerbaşlığına ekleyin
REST uç noktaları, koleksiyonlar için /api/{model} ve bireysel kayıtlar için /api/{model}/{id} modelini takip eder.
CRUD İşlemleri
Ara ve Oku
En yaygın işlem, belirli kriterlere sahip kayıtları aramak ve alan değerlerini okumaktır.
Alan adı filtreleri operatörlerle Lehçe gösterimi (önek gösterimi) kullanır:
| Operatör | Açıklama | Örnek |
|---|---|---|
| KOD0 | Eşittir | KOD1 |
| KOD0 | Eşit değil | KOD1 |
| KOD0 | Şundan büyük: | KOD1 |
| KOD0 | 'dan az | |
| KOD0 | Büyük veya eşit | KOD1 |
| KOD0 | Listede | KOD1 |
| KOD0 | Desen uyumu | KOD1 |
| KOD0 | Büyük/küçük harfe duyarlı olmayan desen | KOD1 |
Koşulları birleştirme: Önek operatörleri olarak & (AND), | (OR) ve ! (NOT) kullanın:
- VE:
['&', ['state', '=', 'sale'], ['amount_total', '>', 1000]]1000'in üzerindeki satış siparişlerini eşleştirir - VEYA:
['|', ['state', '=', 'sale'], ['state', '=', 'done']]her iki durumla da eşleşir - Karmaşık:
['&', ['state', '=', 'sale'], '|', ['partner_id', '=', 5], ['partner_id', '=', 10]]
Alan seçimi: Yük boyutunu azaltmak ve performansı artırmak için yalnızca ihtiyacınız olan alanları isteyin. Alan adlarının listesini içeren bir fields parametresini iletin. Atlanırsa tüm alanlar döndürülür.
Sayfalandırma: Sonuçları sayfalandırmak için offset ve limit parametrelerini kullanın. Örnek: offset: 20, limit: 20 21-40 arasındaki kayıtları döndürür.
Kayıt Oluştur
Alan değerleri sözlüğüyle create yöntemini çağırarak kayıtlar oluşturun. Gerekli alanlar dahil edilmelidir. Yanıt, yeni oluşturulan kaydın kimliğini (veya toplu oluşturma için bir kimlik dizisini) döndürür.
Örnek: Bir kişi oluşturmak için en az name alanı gerekir. İsteğe bağlı alanlar arasında email, phone, company_id, street, city, state_id, country_id ve özel alanlar bulunur.
İlgili kayıtlar için (bir2çok veya çok2çok) özel komut dizilerini kullanın:
| Komut | Sözdizimi | Açıklama |
|---|---|---|
| Oluştur | KOD0 | Yeni bir ilgili kayıt oluşturun |
| Güncelle | KOD0 | Mevcut bir ilgili kaydı güncelleme |
| Sil | KOD0 | İlgili bir kaydı silin |
| Bağlantıyı kaldır | KOD0 | Bağlantıyı kaldırın (silmeyin) |
| Bağlantı | KOD0 | Mevcut kayda bağlantı ekleme |
| Değiştir | KOD0 | Tüm bağlantıları sağlanan kimliklerle değiştirin |
Kayıtları Güncelle
Kayıt kimlikleri ve değiştirilen alanların sözlüğüyle write yöntemini çağırarak kayıtları güncelleyin. Yalnızca değiştirilmesi gereken alanları ekleyin --- atlanan alanlar mevcut değerlerini korur.
Toplu güncellemeler desteklenir: tek bir çağrıda aynı değerlere sahip birden fazla kaydı güncellemek için bir kimlik listesi iletin.
Kayıtları Sil
Kayıt kimlik(ler)iyle unlink yöntemini çağırarak kayıtları silin. Yöntem başarı durumunda True değerini döndürür.
Silme konusunda dikkatli olun; birçok Odoo kaydı iş kuralları tarafından korunmaktadır. Örneğin, deftere nakledilen bir faturayı silmeye çalışmak bir hataya yol açacaktır. Bunun yerine uygun iş yöntemini kullanın (örneğin, silmeden önce button_cancel).
Gerçek Dünya Entegrasyon Modelleri
e-Ticaret Sipariş Senkronizasyonu
Siparişleri harici bir e-Ticaret platformundan Odoo'ya senkronize edin:
- Yeni siparişler için anket yapın: Son senkronizasyon zaman damgasından bu yana verilen siparişler için e-Ticaret API'sini sorgulayın
- Müşterileri eşleştirin: Odoo kişilerini e-postayla arayın; bulunamadıysa oluştur
- Satış siparişi oluşturun: Siparişi müşteri, hatlar, nakliye ve ödeme bilgileriyle oluşturun
- Siparişi onayla: Siparişi iş akışı aracılığıyla işlemek için
action_confirmnumaralı telefonu arayın - e-Ticaret'i güncelleyin: Odoo sipariş referansını e-Ticaret platformuna geri gönderin
Envanter Senkronizasyonu
Envanter seviyelerini Odoo ile harici bir kanal arasında senkronize tutun:
- Stok seviyelerini okuyun: Konum filtreleriyle
stock.quantüzerindensearch_readnumaralı telefonu arayın - Güncellemeleri iletin: Miktar değişikliklerini harici kanala gönderin
- Rezervasyonlarla ilgilenin: Ayrılmış stok hesabı (bekleyen siparişlere bağlı)
- Senkronizasyonu planlayın: Doğruluğu korumak için her 15-30 dakikada bir çalıştırın
CRM Müşteri Adayını İçe Aktarma
Potansiyel müşterileri pazarlama platformlarından Odoo CRM'ye aktarın:
- Potansiyel müşteri bulma: Pazarlama platformu API'sından yeni potansiyel müşteriler çekin
- Tekilleştirme: Odoo'da mevcut kişileri e-posta veya telefonla arayın
- Potansiyel müşteriler oluşturun: Kaynak izlemeyle
crm.lead'da kayıtlar oluşturun - Atama: Odoo'nun lider atama kurallarını kullanın veya özel mantığa göre atama yapın
Finansal Verileri Dışa Aktarma
Finansal verileri bir iş zekası platformuna aktarın:
- Hesap planını dışa aktar: Hesap yapısı için
account.accountdeğerini okuyun - Günlük girişlerini dışa aktar: Tarih filtreleriyle
account.move.lineöğesini okuyun - Dışa aktarma bakiyeleri: Bakiyeleri hesaba ve döneme göre toplamak için
read_groupkullanın - Zamanlama: Muhasebe kapanış penceresinden sonra günlük olarak çalıştır
Hata İşleme
Yaygın API Hataları
| Hata | Sebep | Çözünürlük |
|---|---|---|
| Erişim Reddedildi | Geçersiz kimlik bilgileri veya izinler | Kullanıcı adını, şifreyi ve erişim haklarını doğrulayın |
| Kayıt bulunamadı | Okuma/yazma/bağlantıyı kaldırmada geçersiz kimlik | Önce bir arama yaparak kaydın var olduğunu doğrulayın |
| Doğrulama Hatası | Gerekli alanlar eksik veya geçersiz değerler | Gerekli tüm alanları geçerli verilerle ekleyin |
| Kullanıcı Hatası | İş kuralı ihlali | Belirli bir kural için hata mesajını kontrol edin |
| Eşzamanlılık İstisnası | Kayıt başka bir kullanıcı tarafından değiştirildi | Kaydı yeniden okuyun ve yeniden deneyin |
Hız Sınırlama
Odoo, varsayılan olarak API hız sınırlarını uygulamaz ancak üretim dağıtımlarında ters proxy düzeyinde hız sınırlaması uygulanmalıdır. Odoo.sh için kötüye kullanımı önlemek amacıyla varsayılan sınırlar geçerlidir. Makul yoklama aralıkları ve toplu işlemlerle entegrasyonlar tasarlayın.
Stratejiyi Yeniden Dene
Geçici hatalar için üstel geri çekilmeyi uygulayın:
- 1 saniye sonra ilk yeniden deneme
- 4 saniye sonra ikinci yeniden deneme
- 16 saniye sonra üçüncü yeniden deneme
- Maksimum yeniden denemeden sonra oturum açın ve uyarı verin
Performans Optimizasyonu
Toplu İşlemler
Bireysel kayıt işleme yerine toplu işlemleri tercih edin:
createtoplu oluşturma için değer sözlüklerinin bir listesini kabul ederwritetoplu güncellemeler için bir kimlik listesi kabul eder- Sayfalandırmalı
search_read, bireyselreadçağrılarından daha verimlidir
Alan Seçimi
Gereksiz verilerin yüklenmesini önlemek için her zaman fields parametresini belirtin. 50'den fazla sütuna sahip bir modele tüm alanların yüklenmesi, özellikle sale.order veya account.move.line gibi modeller için önemli miktarda ek yük oluşturur.
Önbelleğe alma
Yavaş yavaş değişen verileri yerel olarak önbelleğe alın:
- Ürün kataloğu (saatte bir yenilenir)
- Müşteri listesi (değişiklik bildiriminde yenile)
- Vergi oranları ve mali pozisyonlar (günlük olarak yenilenir)
ECOSIRE Entegrasyon Hizmetleri
Güvenilir entegrasyonlar oluşturmak, hem harici sistemi hem de Odoo'nun veri modelini anlamayı gerektirir. ECOSIRE'ın Odoo entegrasyon hizmetleri API tasarımını, bağlayıcı geliştirmeyi, veri eşlemeyi ve sürekli izlemeyi kapsar. E-Ticaret platformlarını bağlayan kuruluşlar için özel Shopify-Odoo entegrasyonumuz ve pazar yeri bağlayıcılarımız en yaygın senaryoları ele alır.
İlgili Okumalar
- Odoo API Entegrasyon Kılavuzu
- ERP Verileri için ETL İşlem Hatları: Odoo ve Shopify
- Docker Odoo Dağıtım Kılavuzu
- Odoo Özel Modül Geliştirme Kılavuzu
- API Güvenliği: Kimlik Doğrulama ve Yetkilendirme
Yeni bir entegrasyon için hangi API protokolünü seçmeliyim?
Odoo 19'daki yeni projeler için REST API'yi kullanın. HTTP standartlarını takip eder, otomatik olarak oluşturulmuş belgelere sahiptir ve kimlik doğrulama için API anahtarlarını destekler. Odoo 17 veya 18 için XML-RPC en güvenilir ve iyi belgelenmiş seçenektir. JSON-RPC, tarayıcı tabanlı entegrasyonlar veya JavaScript uygulamaları için en iyisidir.
Odoo'nun harici API'sinde bir hız sınırı var mı?
Odoo'nun kendisi oran sınırlarını uygulamaz. Ancak Odoo.sh dağıtımlarının altyapı düzeyinde sınırları vardır ve şirket içinde barındırılan dağıtımların ters proxy (Nginx) düzeyinde hız sınırlaması uygulaması gerekir. Toplu işlemleri ve makul yoklama aralıklarını sınırlardan bağımsız olarak kullanacak şekilde entegrasyonlar tasarlayın.
API aracılığıyla iş akışlarını (siparişi onaylama, faturayı gönderme) tetikleyebilir miyim?
Evet. İş akışı yöntemi adıyla execute_kw yöntemini kullanın. Örneğin, onaylamak için sale.order'da action_confirm'yi arayın veya bir günlük girişi kaydetmek için account.move'da action_post'yi arayın. İş akışı yöntemleri, kullanıcı arayüzüyle aynı iş kurallarını uygular.
Yazan
ECOSIRE Research and Development Team
ECOSIRE'da kurumsal düzeyde dijital ürünler geliştiriyor. Odoo entegrasyonları, e-ticaret otomasyonu ve yapay zeka destekli iş çözümleri hakkında içgörüler paylaşıyor.
İlgili Makaleler
Modern İşletmeler için API Öncelikli Strateji: Mimari, Entegrasyon ve Büyüme
İş sistemlerinizi birbirine bağlayan, iş ortağı entegrasyonlarına olanak tanıyan ve platform odaklı düşünme yoluyla yeni gelir fırsatları yaratan, API öncelikli bir strateji oluşturun.
Yapay Zeka Destekli İş Akışları Oluşturma: Manuel Süreçlerden Akıllı Otomasyona
Satış, operasyon, finans ve müşteri hizmetleri sistemlerinde çok adımlı iş süreçlerini otomatikleştiren yapay zeka destekli iş akışları tasarlayın ve oluşturun.
CRM Entegrasyon Modelleri: Satış Ekosisteminizi Bağlama
Veri senkronizasyonu, mimari ve hata yönetimine yönelik en iyi uygulamalarla ERP, pazarlama, destek ve e-ticaret sistemleri için CRM entegrasyon modellerini uygulayın.