API

Документация API

API WS24 позволяет авторизованным пользователям программно получать доступ к своим задачам и управлять ими. Все запросы к API должны быть аутентифицированы с использованием ключа API, передаваемого в заголовках запроса.

https://ws24.dev/api/v1

Аутентификация

Формат ключа API

ws24_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Использование ключа API

Добавляйте ваш ключ API в заголовок X-API-Key для всех запросов:

curl -H "X-API-Key: ws24_live_your_key_here" https://ws24.dev/api/v1/tasks
    

Управление ключами API

  1. Просмотр ключей: Перейдите на страницу Профиля → раздел API Keys
  2. Создание ключа: Нажмите "Create API Key" и укажите название
  3. Сохранение ключа: Полный ключ отображается только один раз при создании
  4. Удаление ключа: Используйте кнопку удаления рядом с ключом в профиле

Важно:

Каждый пользователь может иметь только один активный ключ API одновременно.

Лимиты запросов (Rate Limiting)

  • Лимит: 500 запросов в минуту на один ключ API
  • Ответ: При превышении лимита вы получите ответ 429 Too Many Requests
  • Заголовки: Информация о лимитах передается в заголовках ответа
{
  "error": "Rate limit exceeded",
  "message": "Too many requests. Rate limit: 500 requests per minute",
  "retryAfter": 45
}
    

Эндпоинты

Список задач

Запрос: GET /api/v1/tasks

Параметры запроса (опционально): status, page, limit, sort, order

curl -H "X-API-Key: ws24_live_your_key_here" "https://ws24.dev/api/v1/tasks?status=in_progress&page=1&limit=10&sort=created_at&order=desc"

{
  "tasks": [
    {
      "id": 123,
      "title": "Website redesign",
      "description": "Update homepage with new branding",
      "status": "in_progress",
      "budget": "1000",
      "deadline": "2025-12-31",
      "createdAt": "2025-11-01T10:00:00Z",
      "updatedAt": "2025-11-10T15:30:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 45,
    "totalPages": 5
  }
}
      

Получить задачу по ID

Запрос: GET /api/v1/tasks/:id

curl -H "X-API-Key: ws24_live_your_key_here" https://ws24.dev/api/v1/tasks/123
      
{
  "task": {
    "id": 123,
    "title": "Website redesign",
    "description": "Update homepage with new branding",
    "status": "in_progress",
    "budget": "1000",
    "deadline": "2025-12-31",
    "clientId": "user_123",
    "specialistId": "specialist_456",
    "createdAt": "2025-11-01T10:00:00Z",
    "updatedAt": "2025-11-10T15:30:00Z"
  }
}
      

Создать задачу

Запрос: POST /api/v1/tasks

Заголовки: Content-Type: application/json, X-API-Key: your_api_key

curl -X POST -H "X-API-Key: ws24_live_your_key_here" -H "Content-Type: application/json" -d '{
  "title": "Mobile app development",
  "description": "Develop iOS app for our service",
  "budget": "5000",
  "deadline": "2025-12-31"
}' https://ws24.dev/api/v1/tasks
      
{
  "message": "Task created successfully",
  "task": {
    "id": 124,
    "title": "Mobile app development",
    "description": "Develop iOS app for our service",
    "status": "created",
    "budget": "5000",
    "deadline": "2025-12-31",
    "createdAt": "2025-11-11T10:00:00Z"
  }
}
      

Обновить задачу

Запрос: PUT /api/v1/tasks/:id

curl -X PUT -H "X-API-Key: ws24_live_your_key_here" -H "Content-Type: application/json" -d '{
  "status": "completed",
  "description": "Task completed successfully"
}' https://ws24.dev/api/v1/tasks/123
      
{
  "message": "Task updated successfully",
  "task": {
    "id": 123,
    "status": "completed",
    "updatedAt": "2025-11-11T16:30:00Z"
  }
}
      

Добавить обновление/комментарий

Запрос: POST /api/v1/tasks/:id/updates

curl -X POST -H "X-API-Key: ws24_live_your_key_here" -H "Content-Type: application/json" -d '{
  "content": "Work in progress, 50% completed",
  "type": "comment"
}' https://ws24.dev/api/v1/tasks/123/updates
      
{
  "message": "Update added successfully",
  "update": {
    "id": 456,
    "taskId": 123,
    "content": "Work in progress, 50% completed",
    "type": "comment",
    "createdAt": "2025-11-11T14:00:00Z"
  }
}
      

Коды ответов и ошибки

{
  "error": "Error type",
  "message": "Human-readable error message",
  "details": []
}
    
  • 200 OK: Запрос выполнен успешно
  • 201 Created: Ресурс успешно создан
  • 400 Bad Request: Некорректные параметры запроса
  • 401 Unauthorized: Неверный или отсутствующий ключ API
  • 403 Forbidden: Недостаточно прав
  • 404 Not Found: Ресурс не найден
  • 429 Too Many Requests: Превышен лимит запросов
  • 500 Internal Server Error: Ошибка сервера

Рекомендации (Best Practices)

  1. Безопасность ключа: Никогда не используйте ключ API в клиентском коде или публичных репозиториях
  2. Обработка лимитов: Используйте экспоненциальную задержку (backoff) при получении ответов 429
  3. Пагинация: Всегда используйте пагинацию для списков для повышения производительности
  4. Обработка ошибок: Всегда корректно обрабатывайте ошибки в вашем приложении
  5. Обновление ключей: Периодически меняйте ключи API для повышения безопасности

Примеры кода

Пример на Python

import requests

API_KEY = "ws24_live_your_key_here"
BASE_URL = "https://ws24.dev/api/v1"

headers = {
  "X-API-Key": API_KEY,
  "Content-Type": "application/json"
}

# Получение задач
response = requests.get(f"{BASE_URL}/tasks", headers=headers)
tasks = response.json()

# Создание задачи
new_task = {
  "title": "New project",
  "description": "Project description",
  "budget": "2000"
}
response = requests.post(f"{BASE_URL}/tasks", headers=headers, json=new_task)
created_task = response.json()
        

Пример на JavaScript (Node.js)

const axios = require('axios');

const API_KEY = 'ws24_live_your_key_here';
const BASE_URL = 'https://ws24.dev/api/v1';

const headers = {
  'X-API-Key': API_KEY,
  'Content-Type': 'application/json'
};

// Получение задач
async function getTasks() {
  try {
    const response = await axios.get(`${BASE_URL}/tasks`, { headers });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error.response.data);
  }
}

// Создание задачи
async function createTask() {
  try {
    const response = await axios.post(`${BASE_URL}/tasks`, {
      title: 'New project',
      description: 'Project description',
      budget: '2000'
    }, { headers });
    console.log(response.data);
  } catch (error) {
    console.error('Error:', error.response.data);
  }
}
        

Пример на cURL

#!/bin/bash

API_KEY="ws24_live_your_key_here"
BASE_URL="https://ws24.dev/api/v1"

# Получение задач
curl -H "X-API-Key: $API_KEY" "$BASE_URL/tasks"

# Создание задачи
curl -X POST \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "New project",
    "description": "Project description",
    "budget": "2000"
  }' \
  "$BASE_URL/tasks"
        

Поддержка

  • Email: hello@ws24.pro
  • Платформа: Создайте тикет через панель управления WS24 Dev

История изменений

Версия 1.0 (Ноябрь 2025)

  • Первоначальный релиз API
  • Эндпоинты задач (список, получение, создание, обновление)
  • Эндпоинт обновлений/комментариев к задачам
  • Аутентификация по ключу API
  • Ограничение частоты запросов (500 req/min)