# Web Service

GenControlRoom Web Service API bölümü, GenRPA sisteminde Swagger arayüzü üzerinden süreçlerin tetiklenmesi, planlanması ve yönetilmesi için kullanılan web servis uç noktalarını (API Endpoints) açıklar.\
Bu arayüz, geliştiricilere ve yöneticilere süreçlerin uzaktan yönetilmesini, planlamaların yapılmasını ve sistemdeki makinelerin durumlarının izlenmesini sağlar.

{% hint style="info" %}
Tüm istekler **JWT token** ile yetkilendirilmelidir. Token alınmadan diğer uç noktalar kullanılamaz.
{% endhint %}

{% hint style="info" %}
Token kullanılırken **"Bearer"** ibaresi eklenmemelidir; yalnızca token değeri yeterlidir.
{% endhint %}

**Ana servis adresi (Base URL):**\
`http://localhost/GenControlRoom`

<figure><img src="https://25824184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVjKcqj5ygh8bCRgScOVh%2Fuploads%2FgsmOtNIzkkhw0AXyJUB9%2Fimage.png?alt=media&#x26;token=d0d2446e-d2d6-4b92-a298-c774d6e8d23e" alt=""><figcaption></figcaption></figure>

### Kullanıcı ve Rol Bilgilendirmesi

Web Service kullanıcıları, ControlRoom üzerinden varsayılan olarak aşağıdaki yetkilere sahiptir:

* Schedule Add
* Schedule Update

Ek olarak, kullanıcının süreç ve makine listelerini görüntüleyebilmesi için ControlRoom’da Web Service rolüne AllowViewMachinesAPI izni verilmelidir.

GenControlRoom Web Service API bölümü, varsayılan olarak bir Web Service kullanıcısı tanımlar.\
Bu kullanıcı, web servis işlemlerini gerçekleştirmek için gerekli temel yetkilere sahiptir.\
Talep edilmesi durumunda, bu kullanıcıya ait giriş bilgileri tarafımızca paylaşılabilir.\
Ayrıca, dilerseniz kendi kullanıcılarınızı da oluşturabilirsiniz. Bunun için aşağıdaki adımları izleyebilirsiniz.

{% content-ref url="../settings/users" %}
[users](https://docs.genrpa.com/gen-control-room/settings/users)
{% endcontent-ref %}

{% content-ref url="../settings/roles" %}
[roles](https://docs.genrpa.com/gen-control-room/settings/roles)
{% endcontent-ref %}

### Genel Bilgilendirme

### API Uç Noktaları

#### Token Alma (Login)

**Endpoint:** `POST http://localhost/GenControlRoom/api/auth/login`

```
{
  "username": "kullaniciAdi",
  "password": "sifre"
}

```

**Örnek Yanıt (Başarılı):**

```
{
  "Result": true,
  "ErrorCode": null,
  "ErrorMessage": null,
  "Data": {
    "AccessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....",
    "TokenType": "Bearer",
    "ExpiresIn": "2025-10-10T12:00:32.8370179+03:00",
    "User": {
      "Name": "ApiClient",
      "Surname": "ApiClient",
      "Email": "ApiClient@genrpa.com",
      "Username": "ApiClient@genrpa.com"
    }
  }
}

```

{% hint style="info" %}
**Not:** AccessToken değeri, diğer tüm API isteklerinde **Authorization** header’ında kullanılmalıdır.
{% endhint %}

#### Süreç Listesini Getirme

**Endpoint:** `GET http://localhost/GenControlRoom/api/process`

\
Kullanıcının erişimine açık olan mevcut süreçleri listeler.

**Örnek Yanıt:**

```
[
  {
    "ProcessId": 833,
    "Name": "debugTest"
  }
]

```

#### Süreç Değişkenlerini Getirme

**Endpoint:** `GET http://localhost/GenControlRoom/api/process/{processId}/variables`

Belirli bir sürece ait değişkenleri döner.\
Yalnızca “Allow Web Service Input” seçeneği stüdyoda işaretlenmiş değişkenler listelenir.\
Bu değişkenler arasından yalnızca **value** alanı değiştirilebilir.

<figure><img src="https://25824184-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVjKcqj5ygh8bCRgScOVh%2Fuploads%2FNRlGTd4VNRyZZvRYEAjn%2Fimage.png?alt=media&#x26;token=b652de48-ce13-4736-8def-a12f46c11319" alt=""><figcaption></figcaption></figure>

**Örnek Yanıt:**

```
{
  "variables": [
    {
      "name": "Variable 1",
      "value": "testlog",
      "type": "string"
    }
  ]
}

```

#### Süreç Planlama (Ekleme)

**Endpoint:** `POST http://localhost/GenControlRoom/api/process/schedules`

Yeni bir süreç planı oluşturur.

**Notlar:**

* Cron değeri gönderilmezse süreç **1 dakika sonra** otomatik başlar.
* `username` ve `variables` alanları isteğe bağlıdır.
* `isEnabled` varsayılan olarak **true**, `workInQueue` ve `backgroundProcess` varsayılan olarak **false** değerini alır.
* `machineId` değeri **0** gönderilirse süreç tüm makinelerde çalışır; aksi halde belirli bir makine ID’si belirtilmelidir.

**Örnek İstek:**

```
{
  "name": "string",
  "processId": 0,
  "machineId": 0,
  "username": "string",
  "scheduleStart": "05-10-2025 15:19",
  "scheduleEnd": "06-10-2026 15:19",
  "cronExpression": "string",
  "priority": 1,
  "isEnabled": true,
  "workInQueue": false,
  "backgroundProcess": false,
  "variables": [
    {
      "name": "string",
      "value": "string",
      "type": "string"
    }
  ]
}

```

**Başarılı Yanıt:**

```
{
  "Result": true,
  "ErrorCode": null,
  "ErrorMessage": null,
  "Data": 43649
}

```

**Başarısız Yanıt:**

```
{
  "Result": false,
  "ErrorCode": "error code",
  "ErrorMessage": "error message",
  "Data": null
}

```

#### Süreç Güncelleme (Update)

**Endpoint:** `PUT http://localhost/GenControlRoom/api/process/schedules/{scheduleId}`

Var olan bir planı günceller.\
Yalnızca değiştirilecek alanların gönderilmesi yeterlidir.

**Örnek İstek:**

```
{
  "name": "string",
  "processId": 0,
  "machineId": 0,
  "username": "string",
  "scheduleStart": "2025-10-09T11:09:22.262Z",
  "scheduleEnd": "2025-10-09T11:09:22.262Z",
  "cronExpression": "string",
  "priority": 0,
  "isEnabled": true,
  "workInQueue": true,
  "backgroundProcess": true,
  "variables": [
    {
      "name": "string",
      "value": "string",
      "type": "string"
    }
  ]
}

```

**Başarılı Yanıt:**

```
{
  "Result": true,
  "ErrorCode": null,
  "ErrorMessage": null,
  "Data": 43648
}

```

**Hata Yanıtı:**

```
{
  "Result": false,
  "ErrorCode": "WS-013",
  "ErrorMessage": "Error updating schedule: String '2025-10-10T08:03:32.35Z' was not recognized as a valid DateTime.",
  "Data": null
}

```

#### Makine Listesini Getirme

**Endpoint:** `GET http://localhost/GenControlRoom/api/process/machines`

Tüm kayıtlı makineleri listeler.

{% hint style="info" %}
Bu isteğin çalışabilmesi için ControlRoom’da WebService rolüne **AllowViewMachinesAPI** izni verilmelidir.
{% endhint %}

#### Planlanmış Süreçleri Getirme

**Endpoint:** `GET http://localhost/GenControlRoom/api/process/schedules`

Tüm planlanmış süreçleri listeler.

**Örnek Yanıt:**

```
[
  {
    "ScheduleId": 43547,
    "ProcessId": 833,
    "ProcessName": "debugTest",
    "MachineId": 0,
    "StatusId": 3,
    "StatusName": "Completed",
    "Name": "debugTest",
    "StartTime": "19-08-2025 01:22",
    "EndTime": "19-09-2025 01:22",
    "IsEnabled": true,
    "WorkInQueue": true,
    "BackgroundProcess": false,
    "CronExpression": "24 01 * * *",
    "NextOccurence": "07-10-2025 01:24"
  }
]

```

### **Önemli Notlar**

* Değişkenlerin value alanları yalnızca stüdyo üzerinde **“Allow Web Service Input”** seçeneği işaretlenmişse değiştirilebilir.
* Tüm istekler JWT token ile yetkilendirilmelidir.
* Token almak için **`/api/auth/login`** endpoint’i kullanılmalıdır.
* Swagger arayüzünde “**Authorize**” butonuna tıklandığında yalnızca token değeri girilmelidir, "**Bearer**" yazılmamalıdır.
* Tarih formatı “**dd-MM-yyyy HH:mm**” biçiminde olmalıdır.
* Web servis isteklerinin çalışabilmesi için GenControlRoom servisinin kurulu olduğu sunucunun dış erişime açık olması gerekmektedir.
