# Endpoint: Список рабочих платёжных ссылок Stripe

## Зачем это нужно

EasyPay создаёт платёжные ссылки Stripe на одобренные продукты партнёра. Этот метод возвращает **список всех рабочих (live, не тестовых) платёжных ссылок** вашего аккаунта — с ценой, валютой, продуктом и готовой короткой ссылкой для чекаута. Полезно, чтобы свериться, какие ссылки активны, или подтянуть их в свою систему / витрину.

Метод доступен и через **прямой HTTP API** (с вашим API-ключом), и через **MCP-агента** (тул `list_partner_live_stripe_payment_links`) — это одна и та же ручка.

## Как подключиться


1. Запросите API-ключ у вашего менеджера EasyPay — или скопируйте его из мини-апп («Show key» на первом шаге онбординга).
2. Менеджер активирует разрешение `products_view` для вашего аккаунта (то же разрешение, что и для просмотра инвойс-продуктов).
3. API-ключ — строка в формате UUID, например: `18fcf8a0-cde3-4a27-ab7c-2f3bca09b9a2`.

## Endpoint

```
POST https://api.appsign.me/list-partner-live-stripe-payment-links
Content-Type: application/json
```

## Формат запроса

```json
{
  "api_key": "ваш-api-ключ"
}
```

**Параметры:**

| Параметр | Обязательный | Описание |
|----------|--------------|----------|
| `api_key` | Да           | API-ключ партнёра (UUID). Можно передать в теле запроса либо заголовком `X-Partner-Api-Key` вместо тела. |

Метод не принимает фильтров и пагинации — возвращает все рабочие ссылки партнёра одним списком.

## Формат ответа

### Успешный ответ

```json
{
  "success": true,
  "products": [
    {
      "product_name": "Premium Plan",
      "price": 99,
      "unit_amount": 9900,
      "currency": "USD",
      "description": "Месячная подписка на премиум-доступ",
      "payment_link_short": "https://short.appsign.me/AbCdEf",
      "stripe_product_id": "prod_XXXXXXXXXXXX"
    }
  ],
  "count": 1
}
```

**Поля верхнего уровня:**

| Поле | Тип | Описание |
|------|-----|----------|
| `success` | boolean | `true` при успехе. |
| `products` | array | Список рабочих платёжных ссылок. |
| `count` | number | Количество элементов в `products`. |

**Структура каждого элемента в** `**products**`**:**

| Поле | Тип | Описание |
|------|-----|----------|
| `product_name` | string | Название продукта. |
| `price` | number | Цена в основных единицах валюты (`99` = $99.00). |
| `unit_amount` | number | Цена в наименьшей единице валюты (центы / копейки; например `9900`). |
| `currency` | string | Валюта по ISO 4217 — `USD`, `EUR` или `GBP`. |
| `description` | string \| null | Описание продукта или `null`. |
| `payment_link_short` | string | Короткая ссылка для чекаута (`https://short.appsign.me/…`). **Это единственная ссылка, которую вы отправляете клиентам.** Всегда присутствует. |
| `stripe_product_id` | string | Идентификатор продукта в Stripe (`prod_…`). |

> **Полная Stripe-ссылка (**`**buy.stripe.com**`**) не возвращается** — она остаётся внутренней деталью EasyPay. Партнёру передаётся только короткая ссылка. Ссылки, у которых короткой ещё нет, в список не попадают.

### Ошибки

Все ошибки возвращаются с **HTTP 200** и полем `success: false` — чтобы MCP-агенты, боты и n8n-флоу не путали клиентскую ошибку с сетевым сбоем.

```json
{
  "success": false,
  "error_code": "INVALID_API_KEY",
  "error_message": "API key not recognised, or partner/employee disabled."
}
```

| `error_code` | Когда срабатывает |
|------------|-------------------|
| `INVALID_API_KEY` | API-ключ невалиден, не в формате UUID, либо партнёр/сотрудник отключён |
| `PERMISSION_DENIED` | У партнёра нет разрешения `products_view` |

## Что возвращается

* Только **рабочие (live)** ссылки — тестовые в список не попадают.
* Только ссылки на **одобренные** продукты (прошедшие модерацию).
* Только ссылки, у которых есть **короткая ссылка** для чекаута.

## Пример на Python

```python
import urllib.request
import json

url = "https://api.appsign.me/list-partner-live-stripe-payment-links"
payload = {"api_key": "ваш-api-ключ"}

req = urllib.request.Request(
    url,
    data=json.dumps(payload).encode("utf-8"),
    headers={"Content-Type": "application/json"},
    method="POST",
)

with urllib.request.urlopen(req) as resp:
    result = json.loads(resp.read().decode("utf-8"))

if result.get("success"):
    print(f"Рабочих ссылок: {result['count']}")
    for p in result["products"]:
        print(f"  {p['product_name']} — {p['price']} {p['currency']}: {p['payment_link_short']}")
else:
    print(f"Ошибка: {result.get('error_code')} — {result.get('error_message')}")
```

## Пример на cURL

```bash
curl -X POST https://api.appsign.me/list-partner-live-stripe-payment-links \
  -H "Content-Type: application/json" \
  -d '{"api_key": "ваш-api-ключ"}'
```