Краткое описание

API предназначено для безопасного управления сертификатами на IP-телефонах через удаленный сервер управления.

Базовый URL

https://{phone_ip}:{phone_port}/api/v1/certificates

REST API сервер принимает запросы по протоколу HTTPS на порту 8443. Для установки защищённого соединения используется предварительно загруженный SSL/TLS сертификат.

Методы API

Тестовый запрос

GET https://{phone_ip}:{phone_port}/api/test

POST https://{phone_ip}:{phone_port}/api/test

Ответ от телефона:

JSON

{
    "query": "GET", // Метод тестового запроса 
    "data": {
        "date": "2021-08-06T18:07:50Z" // Дата формирования ответа (формат UTC)
    }
}

Запрос информации о сертификатах

GET https://{phone_ip}:{phone_port}/api/v1/certificates

Описание: возвращает список всех установленных сертификатов

Ответ от телефона:

JSON 

{
  "status": "200ок",                 // Статус выполнения операции
  "timestamp": "2026-01-24T13:30:00Z", // Дата формирования ответа (формат UTC)
  "data": {
    "certificates": [ // Массив сертификатов
      {
        "id": "",    // Внутренний уникальный идентификатор (присваивается телефоном при загрузке сертификата)
        "type": "",  // Тип сертификата: ca, client, server
        "subject": { // Информация о владельце
          "commonName": "",
          "organization": "",
        },
        "issuer": {          // Информация об организации выпустившей сертификат
          "commonName": "",
          "organization": ""
        },
        "validity": {                          // Срок действия
          "notBefore": "2026-01-01T00:00:00Z", // Начало действия
          "notAfter": "2027-01-01T00:00:00Z",  // Окончание действия
          "daysRemaining": X                   // Осталось дней
        },
        "fingerprints": {                  // Хеш-суммы для идентификации
          "sha256": "1234567890ABCDEF...", // SHA-256
          "sha1": "1234567890ABCDEF..."    // SHA-1
"md5": "1234567890ABCDEF..." // MD5
}, "serialNumber": "1234567890ABCDEF...", // Уникальный серийный номер "version": 3 // Версия X.509 (v3 с поддержкой расширений) } ], "total": X, // Общее количество сертификатов   } }

Коды состояний

Запрос получение детальной информации о сертификате

GET https://{phone_ip}:{phone_port}/api/v1/certificates/{id}

Описание: возвращает детальную информацию о сертификате с запрошенным {id}

Ответ от телефона:

JSON

{
  "status": "200ок",
  "timestamp": "2026-01-24T13:35:00Z",
  "data": {
    "certificate": {
      "id": "",
      "type": "",
      "subject": { // Расширенная информация о владельце
        "commonName": "",
        "organization": "",
      },
      "issuer": {
        "commonName": "",
        "organization": "",
      },
      "validity": {
        "notBefore": "2026-01-01T00:00:00Z",
        "notAfter": "2027-01-01T00:00:00Z",
        "daysRemaining": X,
        "isExpired": false, // Не просрочен
        "isValid": true     // В настоящее время действителен?
      },
      "fingerprints": {
        "sha256": "1234567890ABCDEF....",
        "sha1": "1234567890ABCDEF...",
        "md5": "1234567890ABCDEF..."
      },
      "keyInfo": { // Информация о криптографическом ключе
        "algorithm": "RSA",
        "keySize": 4096,
        "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..." // Публичный ключ в base64
      },
      "serialNumber": "1234567890ABCDEF...",
      "version": 3,
      "installationDate": "2026-01-02T14:30:00Z", // Дата установки сертификата на телефон
    }
  }
}

Коды состояний

Добавление нового сертификата

PUT https://{phone_ip}:{phone_port}/api/v1/certificates

Описание: установка нового сертификата на телефон

Параметры

Ответ от телефона:

JSON

{
  "status": "200ок",
  "timestamp": "2026-01-15T11:00:00Z",
  "data": {
    "id": "", // Уникальный идентификатор, присвоенный системой телефона
    "storageLocation": "/mnt/nand/sys_info/certificates/cert_{id}.pem" // Путь и имя файла на телефоне
}

Коды состояний

Удаление одного сертификата

DELETE https://{phone_ip}:{phone_port}/api/v1/certificates/{id}

Описание: удаление сертификата с идентификатором {id}

Ответ от телефона:

JSON

{
  "status": "200ок",
  "timestamp": "2026-01-15T11:05:00Z",
  "data": {
    "id": "",
    "message": ""
  }
}

Коды состояний

Удаление всех сертификатов

DELETE https://{phone_ip}:{phone_port}/api/v1/certificates

Описание: удаление всех установленных сертификатов

Ответ от телефона:

JSON

{
  "status": "200ок",
  "timestamp": "2026-01-15T11:05:00Z",
  "data": {
    "id": "",
    "message": ""
  }
}

Коды состояний

Примеры запросов и ответов

1. Тестовый запрос:

сurl -X POST -k -u admin:password https://192.168.88.105:8443/api/test

Ответ:

{
    "query": "POST",
    "data": {
        "date": "2021-08-06T18:07:57Z"
    }
}

2. Загрузка сертификата: 

curl -X PUT -k -u admin:password https://192.168.88.105:8443/api/v1/certificates   -F "certificate=@root.pem"   -F "type=ca"   -F "usage=root"

Ответ:

{
    "status": "200 OK",
    "timestamp": "2021-08-06T18:31:46Z",
    "data": {
        "id": "1",
        "storageLocation": "/etc/certificates/cafile.pem"
    }
}

3. Запрос информации о сертификате:

curl -X GET -k -u admin:password https://192.168.88.105:8443/api/v1/certificates/1

Ответ:

{
    "status": "200 OK",
    "timestamp": "2021-08-06T18:59:08Z",
    "data": {
        "certificate": [
            {
                "id": 1,
                "type": "cafile",
                "subject": {
                    "commonName": "Eltex Root CA",
                    "organization": ""
                },
                "issuer": {
                    "commonName": "Eltex Root CA",
                    "organization": ""
                },
                "validity": {
                    "notBefore": "2026-04-06T08:43:25Z",
                    "notAfter": "2027-04-06T08:43:25Z",
                    "daysRemaining": 365,
                    "isExpired": false,
                    "isValid": false
                },
                "Fingerprints": {
                    "SHA1": "9ACEA24A2A4511871C2473C3395763F0B39C61EF",
                    "SHA256": "FC202F3A9100EECB887E92AA4A7971E30318FBA8F640634B98CACE130447E99C",
                    "MD5": "51273B6B5161A9A92EFC3C0D95699178"
                },
                "keyInfo": {
                    "algorithm": "rsaEncryption",
                    "keySize": 2048,
                    "publicKey": "MIIBIjANBgkqhkiG9w0B.......................r0H7AQIDAQAB"

                },
                "serialNumber": "18:FF:AA:1B:1E:57:0B:8A:DB:02:D9:87:B5:C1:A7:97:B8:AB:7A:90",
                "version": 3,
                "installationDate": "2021-08-06T18:31:46Z"
            }
        ]
    }
}

4. Удаление сертификата

curl -X DELETE -k -u admin:password https://192.168.88.105:8443/api/v1/certificates/1

Ответ:

{
    "status": "200 OK",
    "timestamp": "2021-08-06T19:10:17Z",
    "data": {
        "certificate": [
            {
                "id": 1,
                "message": "Deleted"
            }
        ]
    }
}