Bu sayfada

API genel bakış

ProcessMind API çağrıları nasıl yapılır?

Bu rehberde, veri almak, bilgi göndermek veya iş akışlarını otomatikleştirmek için ProcessMind API çağrıları yapmaya yönelik örnekler ve en iyi uygulamalar yer alır.

İstek ve yanıt biçimlerini içeren tüm uç nokta belgeleri için API referansına bakın.

Ek örnekler ve istemci kitaplıkları için GitHub’daki API dokümantasyonunu ziyaret edin.

API temel URL’si

Tüm API isteklerini şu adrese gönderin:

https://api.processmind.com

Tüm rotalar /v1 altında sürümlenir. Makine tarafından okunabilir API belirtiminin tamamına (OpenAPI 3.1) şu adresten ulaşabilirsiniz:

GET https://api.processmind.com/v1/openapi.json

Kimlik doğrulama

Herkese açık OpenAPI belgesi (/v1/openapi.json) ve MCP OAuth uç noktaları dışında, tüm API isteklerinde x-api-key başlığında API anahtarınız bulunmalıdır:

x-api-key: your-api-key-here

API anahtarınızı ProcessMind hesap ayarlarınızdan alabilirsiniz. Yönergeler için API anahtarınızı alma bölümüne bakın.

Durum kodları

ProcessMind API, standart HTTP durum kodlarını kullanır:

Durum Anlamı
200 OK İstek başarılı oldu
201 Created Kaynak oluşturuldu
204 No Content İstek başarılı oldu, yanıt gövdesi yok
400 Bad Request İstek geçersiz veya parametreler eksik/geçersiz
401 Unauthorized API anahtarı eksik veya geçersiz
403 Forbidden Kimlik doğrulandı ancak işlemi yapma izni yok
404 Not Found Kaynak mevcut değil
500 Internal Server Error Beklenmeyen sunucu hatası

Temel kavramlar

  • apiKey: Tüm API isteklerinde kullanılan kimlik doğrulama belirteciniz.
  • tenantId: Çalışma alanı/kuruluş bağlamınızı tanımlar. Hesap ayarlarınızda bulabilirsiniz.
  • datatableId: Veri işlemleri için belirli bir veri tablosunu tanımlar. ProcessMind içindeki veri seti ayarları menüsünde yer alan Veri tablosu kimliğini alın seçeneğinden ulaşabilirsiniz.

Yapabilecekleriniz

ProcessMind API ile şunları yapabilirsiniz:

  • Kiracıları yönetin: Kiracı bilgilerini alın, ayarları güncelleyin ve istatistikleri görüntüleyin
  • Kullanıcıları yönetin: Kiracılara ve kuruluşlara kullanıcı ekleyin, kullanıcı bilgilerini güncelleyin veya kullanıcıları kaldırın
  • Süreçleri yönetin: Süreçler oluşturun, BPMN modelleri yükleyin ve klasörlerde düzenleyin
  • Verileri bağlayın: Analiz için veri tablolarını süreçlerle eşleyin
  • Veri yükleyin: CSV/XLSX dosyalarını doğrudan veri tablolarına yükleyin
  • Veri setlerini yönetin: Veri setlerini ve veri tablolarını listeleyin, inceleyin ve silin

Sık kullanılan örnekler

Aşağıda, ProcessMind API ile sık kullanılan işlemlerin nasıl yapılacağını gösteren örnekler yer alır.

Önceden imzalanmış yükleme URL’si alma

Bir veri tablosuna dosya yüklemek için önce önceden imzalanmış bir URL alın:

const presignedUrl = await getPresignedUploadUrl({
	apiKey,
	tenantId: "tenant-123",
	datatableId: "table-456"
});
console.log(presignedUrl); // https://s3.amazonaws.com/…?X-Amz-Signature=…

Veri setlerini listeleme

Kiracınızdaki tüm veri setlerini alın:

const datasets = await getDatasets({
	apiKey,
	tenantId: "tenant-123"
});
console.log(datasets);

Kiracı bilgilerini alma

Kiracınızla ilgili ayrıntıları alın:

const tenantInfo = await getTenant({
	apiKey,
	tenantId: "tenant-123"
});
console.log(tenantInfo);

Süreç oluşturma

Kiracınızda yeni bir süreç oluşturun:

const process = await createProcess({
	apiKey,
	tenantId: "tenant-123",
	displayName: "Order to Cash"
});
console.log(process.id); // Use this ID for subsequent operations

BPMN modeli yükleme

Süreç modelinizi tanımlamak için bir BPMN dosyası yükleyin:

const fs = require("fs");
const bpmnXml = fs.readFileSync("./my-process.bpmn", "utf8");

await uploadBpmn({
	apiKey,
	tenantId: "tenant-123",
	processId: "process-456",
	bpmnXml
});

Verileri sürece eşleme

Analiz için bir veri tablosunu sürece bağlayın:

const mapping = await createProcessMapping({
	apiKey,
	tenantId: "tenant-123",
	processId: "process-456",
	dataTableId: "datatable-789",
	displayName: "Sales Data 2024",
	showByDefault: true
});

Kiracıya kullanıcı ekleme

Kiracınıza bir kullanıcı ekleyin:

const result = await addTenantUser({
	apiKey,
	tenantId: "tenant-123",
	id: "user-456",
	email: "colleague@example.com",
	isAdminInTenant: false,
	isActiveInTenant: true,
	sendInvitationEmail: true
});

Not: Gövdedeki rol alanları (isAdminInTenant, access, isDashboardViewer) aynen dikkate alınır. Kullanıcı yönetimi uç noktaları kiracı yöneticilerine yönelik tüm işlemleri kapsar. Bu nedenle, yazma yetkili API anahtarlarını yalnızca yönetim yetkisi verebileceğiniz çağrılara tanımlayın. System API davet e-postası göndermez; kullanıcının sisteme alınmasından siz sorumlusunuz.

Dosya yükleme

ProcessMind’e dosya yüklemek için genel adımlar şöyledir:

  1. getPresignedUploadUrl çağrısını kullanarak önceden imzalanmış bir URL alın.
  2. Dosya içeriğini bu URL’ye PUT isteğiyle gönderin.
  3. Önceden imzalanmış URL, dosyanın ek kimlik bilgisi gerektirmeden doğrudan bulut depolamaya yüklenmesini sağlar.

Aşağıda fetch kullanan basitleştirilmiş bir örnek yer alır:

async function uploadFile({ apiKey, tenantId, datatableId, file }) {
	// Step 1: Obtain a presigned URL
	const uploadUrl = await getPresignedUploadUrl({ apiKey, tenantId, datatableId });
	
	// Step 2: Upload the file via PUT
	await fetch(uploadUrl, {
		method: "PUT",
		headers: {
			"Content-Type": file.type
		},
		body: file
	});
}

info

  • Önceden imzalanmış URL’lerin süresi belirli bir süre sonra dolar (varsayılan olarak yüklemelerde ve indirmelerde bir saat). URL’yi aldıktan kısa süre sonra kullanın.
  • Yükleme başarısız olursa (örneğin, ağ bağlantısı kesilirse), yeniden denemeden önce yeni bir önceden imzalanmış URL isteyin.
  • apiKey değerini daima güvenli tutun ve istemci tarafındaki kodda (örneğin, herkese açık bir ön uçta) paylaşmayın.

Eksiksiz örnekler

Aşağıda, farklı dillerde hazırlanmış ve kopyalayıp kullanabileceğiniz eksiksiz örnekler yer alır.

Bash örneği: Dosya yükleme

ProcessMind’e dosya yüklemek için iki curl çağrısı kullanan, tüm değerler için yer tutucular içeren temel bir Bash betiği

BASH örneğini indirin
#!/bin/bash
# Minimal Bash script to upload a file to ProcessMind using two curl calls, with placeholders for all values

# Replace the following placeholders with your actual values:
# <API_KEY>, <TENANT_ID>, <DATATABLE_ID>, <FILE_PATH>

curl -s -H "x-api-key: <API_KEY>" \
	"https://api.processmind.com/v1/tenant/<TENANT_ID>/datatables/<DATATABLE_ID>/uploads/presigned-url" \
	| grep -oP '"PreSignedUploadUrl"\s*:\s*"\K[^"]+' \
	| xargs -I {} curl -s -X PUT --upload-file "<FILE_PATH>" "{}"

Node.js örneği: Yerel CSV dosyası yükleme

Önceden imzalanmış URL kullanarak yerel bir CSV dosyasını ProcessMind’e yükler.

Adımlar:

  1. API’den önceden imzalanmış bir yükleme URL’si alın.
  2. Yerel dosyayı diskten okuyun.
  3. HTTP PUT kullanarak dosyayı önceden imzalanmış URL’ye yükleyin.

Yapılandırma:

  • uploadFile() çağrısında API anahtarınızı, tenantId, datatableId ve filePath değerlerini belirtin.
  • API temel URL’si https://api.processmind.com olarak ayarlanmıştır.
Node.js örneğini indirin
/**
 * Uploads a local CSV file to ProcessMind using a presigned URL.
 *
 * Steps:
 * 1. Fetch a presigned upload URL from the API.
 * 2. Read the local file from disk.
 * 3. Upload the file to the presigned URL using HTTP PUT.
 *
 * Configuration:
 * - Provide your API key, tenantId, datatableId, and filePath when calling uploadFile().
 * - The API base URL is set to https://api.processmind.com
 */

const fs = require("node:fs");

/**
 * Uploads a file to ProcessMind datatable using a presigned URL.
 * @param {string} apiKey - Your API key for authentication.
 * @param {string} tenantId - Your tenant identifier.
 * @param {string} datatableId - Your datatable identifier.
 * @param {string} filePath - Path to the file to upload.
 */

async function getApi({path, apiKey, apiUrl = "https://api.processmind.com"}) {
	try {
        const response = await fetch(`${apiUrl}${path}`, {
            method: "GET",
            headers: {
                "x-api-key": apiKey
            }
        });
        const body = await response.json();
        if (!response.ok) {
            console.error(`Error loading from API: ${response.status}, ${response.statusText}: ${body.message}`);
            return;
        }
        return body;
    } catch (err) {
        console.error("Unexpected error:", err);
    }
}

async function getPresignedUploadUrl({apiKey, tenantId, datatableId, apiUrl = "https://api.processmind.com"}) {
	return (await getApi({apiKey, path: `/v1/tenant/${tenantId}/datatables/${datatableId}/uploads/presigned-url`, apiUrl})).PreSignedUploadUrl;
}

async function getDatasets({apiKey, tenantId, apiUrl = "https://api.processmind.com"}) {
	return await getApi({apiKey, path: `/v1/tenant/${tenantId}/datasets`, apiUrl});
}

async function getTenant({apiKey, tenantId, apiUrl = "https://api.processmind.com"}) {
	return await getApi({apiKey, path: `/v1/tenant/${tenantId}`, apiUrl});
}

async function getOrganization({apiKey, tenantId, apiUrl = "https://api.processmind.com"}) {
	return await getApi({apiKey, path: `/v1/tenant/${tenantId}/organization`, apiUrl});
}

async function uploadFile({apiKey, tenantId, datatableId, filePath, apiUrl = "https://api.processmind.com"}) {
    try {
        const uploadUrl = await getPresignedUploadUrl({apiKey, tenantId, datatableId, apiUrl});

		console.log("Uploading file...");
        fs.readFile(filePath, async (err, data) => {
            if (err) {
                console.error("Error reading file:", err);
                return;
            }
            try {
                const uploadRes = await fetch(uploadUrl, {
                    method: "PUT",
                    body: data
                });
                if (!uploadRes.ok) {
                    console.error("Upload failed:", uploadRes.status, uploadRes.statusText);
                } else {
                    console.log("File uploaded successfully.");
                }
            } catch (uploadErr) {
                console.error("Error uploading file:", uploadErr);
            }
        });
    } catch (err) {
        console.error("Unexpected error:", err);
    }
}

// Export the function for use in other modules
module.exports = { 
	getPresignedUploadUrl,
	getDatasets,
	getTenant,
	getOrganization,
	uploadFile 
};

Python örneği: Yerel CSV dosyası yükleme

Önceden imzalanmış URL kullanarak yerel bir CSV dosyasını uzak bir API’ye yükler.

Adımlar:

  1. API’den önceden imzalanmış bir yükleme URL’si alın.
  2. Yerel dosyayı diskten okuyun.
  3. HTTP PUT kullanarak dosyayı önceden imzalanmış URL’ye yükleyin.

Yapılandırma:

  • Gerekirse api_key, tenant_id, datatable_id ve file_path değerlerini güncelleyin.
Python örneğini indirin
"""
Uploads a local CSV file to a remote API using a presigned URL.

Steps:
1. Fetch a presigned upload URL from the API.
2. Read the local file from disk.
3. Upload the file to the presigned URL using HTTP PUT.

Configuration:
- Update api_key, tenant_id, datatable_id, file_path as needed.
"""

import requests

# === Configuration ===
api_key = ""  # API key for authentication
tenant_id = ""  # Tenant identifier
datatable_id = ""  # Datatable identifier
file_path = ""  # Path to the file to upload


print("Fetching upload URL...")
api_url = "https://api.processmind.com"  # Base API URL
presign_url = f"{api_url}/v1/tenant/{tenant_id}/datatables/{datatable_id}/uploads/presigned-url"
presign_res = requests.get(presign_url, headers={"x-api-key": api_key})
if not presign_res.ok:
	print(f"Error fetching upload URL: {presign_res.status_code}, {presign_res.reason}: {presign_res.text}")
	exit(1)

presign_body = presign_res.json()
upload_url = presign_body.get("PreSignedUploadUrl")
if not upload_url:
	print("No presigned upload URL returned.")
	exit(1)

print("Uploading file...")
with open(file_path, "rb") as f:
	upload_res = requests.put(upload_url, data=f)
if not upload_res.ok:
	print(f"Upload failed: {upload_res.status_code}, {upload_res.reason}")
else:
	print("File uploaded successfully.")

Sayfalama

Liste uç noktaları limit ve offset sorgu parametrelerini kabul eder ve yalın JSON dizisi döndürür (sarmalayıcı veya toplam kayıt sayısı yoktur):

Parametre Tür Varsayılan Üst sınır
limit tamsayı 100 1.000 (veri tablosu listelerinde 250)
offset tamsayı 0 Yok
GET /v1/tenant/{tenantId}/processes?limit=50&offset=100

Tüm sonuçları sayfalar halinde almak için, yanıt dizisi istenen limit değerinden kısa (veya boş) olana kadar offset += limit ile istek göndermeye devam edin. Üst sınırı aşan değerler 400 ile reddedilir. Sürümlü veri uç noktaları (veri setleri, sürümler, webhook’lar) da aynı yöntemi izler. İki veri tablosu listesinde limit üst sınırı 250’dir.

Sürüm oluşturma ve kullanımdan kaldırma

  • Tüm rotalar /v1 altında sürümlenir. Geriye dönük uyumluluğu bozan değişiklikler, /v1 değerini sessizce değiştirmek yerine yeni bir sürümde yayımlanır.
  • Rota değişiklikleri ve kaldırma işlemleri sürüm notlarında duyurulur.
  • İstemcileri etkileyen önemli değişiklikler her zaman değişiklik günlüğünde listelenir. Sabitlenmiş API istemcilerini yükseltmeden önce bildirimlere abone olun veya değişiklik günlüğünü kontrol edin.

Sonraki adımlar

info

API hakkında sorularınız varsa veya yardıma ihtiyacınız olursa destek ekibiyle iletişime geçin ya da API örnekleri deposunda bir sorun bildirin.

Süreçlerinizi daha iyi tasarlayın. Bağlantılı bir mimari kurun. Kontrolü elinizde tutun.

Kredi kartı gerekmeden, beklemeden hemen erişin. Kuruluşunuzdaki çalışma biçimini net ve birbiriyle bağlantılı süreç tasarımlarına dönüştürün.

Süreç mimarinizi oluşturun, sahiplik ve kontrolleri tanımlayın; rol ve sorumlulukları her düzeyde uyumlu hâle getirin.

Ücretsiz denemeyi başlatın; süreçlerinizi yönetmek ve sürekli iyileştirmek için güvenilir bir temel oluşturun.