mirror of
https://github.com/v0l/zap-stream-core.git
synced 2025-06-21 14:10:45 +00:00
Compare commits
2 Commits
main
...
copilot/fi
Author | SHA1 | Date | |
---|---|---|---|
6608a80a9f | |||
7f46c79a97 |
316
API.md
Normal file
316
API.md
Normal file
@ -0,0 +1,316 @@
|
||||
# zap.stream API Documentation
|
||||
|
||||
This document describes the REST API endpoints available in the zap.stream core streaming server.
|
||||
|
||||
## Authentication
|
||||
|
||||
The API uses NIP-98 (Nostr HTTP Auth) for authentication. All protected endpoints require an `Authorization` header with the following format:
|
||||
|
||||
```
|
||||
Authorization: Nostr <base64-encoded-nostr-event>
|
||||
```
|
||||
|
||||
The Nostr event must:
|
||||
- Be of kind 27235 (NIP-98 HTTP Auth)
|
||||
- Have a valid signature
|
||||
- Include appropriate `method` and `url` tags matching the request
|
||||
- Have a recent timestamp (within acceptable time window)
|
||||
|
||||
## Base URL
|
||||
|
||||
All API endpoints are prefixed with `/api/v1/`
|
||||
|
||||
## Endpoints
|
||||
|
||||
### Account Management
|
||||
|
||||
#### Get Account Information
|
||||
```
|
||||
GET /api/v1/account
|
||||
```
|
||||
|
||||
**Authentication:** Required
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"endpoints": [
|
||||
{
|
||||
"name": "string",
|
||||
"url": "string",
|
||||
"key": "string",
|
||||
"capabilities": ["string"],
|
||||
"cost": {
|
||||
"unit": "string",
|
||||
"rate": 0.0
|
||||
}
|
||||
}
|
||||
],
|
||||
"balance": 0,
|
||||
"tos": {
|
||||
"accepted": false,
|
||||
"link": "string"
|
||||
},
|
||||
"forwards": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "string"
|
||||
}
|
||||
],
|
||||
"details": {
|
||||
"title": "string",
|
||||
"summary": "string",
|
||||
"image": "string",
|
||||
"tags": ["string"],
|
||||
"content_warning": "string",
|
||||
"goal": "string"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Description:** Returns comprehensive account information including streaming endpoints, account balance, terms of service status, forward destinations, and stream details.
|
||||
|
||||
#### Update Account
|
||||
```
|
||||
PATCH /api/v1/account
|
||||
```
|
||||
|
||||
**Authentication:** Required
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"accept_tos": true
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{}
|
||||
```
|
||||
|
||||
**Description:** Updates account settings, primarily used for accepting terms of service.
|
||||
|
||||
### Payment Operations
|
||||
|
||||
#### Request Top-up
|
||||
```
|
||||
GET /api/v1/topup?amount=<amount>
|
||||
```
|
||||
|
||||
**Authentication:** Required
|
||||
|
||||
**Query Parameters:**
|
||||
- `amount` (required): Amount to top up in millisatoshi
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"pr": "string"
|
||||
}
|
||||
```
|
||||
|
||||
**Description:** Generates a Lightning Network payment request for adding funds to the account balance. Returns a payment request (invoice) that can be paid to credit the account.
|
||||
|
||||
#### Withdraw Funds
|
||||
```
|
||||
POST /api/v1/withdraw?invoice=<payment_request>
|
||||
```
|
||||
|
||||
**Authentication:** Required
|
||||
|
||||
**Query Parameters:**
|
||||
- `invoice` (required): Lightning Network payment request to pay
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"fee": 0,
|
||||
"preimage": "string"
|
||||
}
|
||||
```
|
||||
|
||||
**Description:** Withdraws funds from the account balance by paying a Lightning Network invoice. Returns the fee charged and payment preimage on success.
|
||||
|
||||
### Stream Management
|
||||
|
||||
#### Update Stream Event
|
||||
```
|
||||
PATCH /api/v1/event
|
||||
```
|
||||
|
||||
**Authentication:** Required
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"id": "string",
|
||||
"title": "string",
|
||||
"summary": "string",
|
||||
"image": "string",
|
||||
"tags": ["string"],
|
||||
"content_warning": "string",
|
||||
"goal": "string"
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{}
|
||||
```
|
||||
|
||||
**Description:** Updates stream event metadata such as title, description, image, tags, content warnings, and goals.
|
||||
|
||||
### Forward Management
|
||||
|
||||
#### Create Forward
|
||||
```
|
||||
POST /api/v1/forward
|
||||
```
|
||||
|
||||
**Authentication:** Required
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"name": "string",
|
||||
"target": "string"
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"id": 0
|
||||
}
|
||||
```
|
||||
|
||||
**Description:** Creates a new payment forward destination. Forwards allow automatic routing of payments to external Lightning addresses or Nostr zap targets.
|
||||
|
||||
#### Delete Forward
|
||||
```
|
||||
DELETE /api/v1/forward/{id}
|
||||
```
|
||||
|
||||
**Authentication:** Required
|
||||
|
||||
**Path Parameters:**
|
||||
- `id`: Forward ID to delete
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{}
|
||||
```
|
||||
|
||||
**Description:** Removes a payment forward destination by ID.
|
||||
|
||||
### History and Keys
|
||||
|
||||
#### Get Account History
|
||||
```
|
||||
GET /api/v1/history
|
||||
```
|
||||
|
||||
**Authentication:** Required
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"created": 0,
|
||||
"type": 0,
|
||||
"amount": 0.0,
|
||||
"desc": "string"
|
||||
}
|
||||
],
|
||||
"page": 0,
|
||||
"page_size": 0
|
||||
}
|
||||
```
|
||||
|
||||
**Description:** Returns paginated transaction history for the account including payments, withdrawals, and streaming costs.
|
||||
|
||||
#### Get Stream Keys
|
||||
```
|
||||
GET /api/v1/keys
|
||||
```
|
||||
|
||||
**Authentication:** Required
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"key": "string",
|
||||
"created": 0,
|
||||
"expires": 0,
|
||||
"stream_id": "string"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
**Description:** Returns all active stream keys for the account.
|
||||
|
||||
#### Create Stream Key
|
||||
```
|
||||
POST /api/v1/keys
|
||||
```
|
||||
|
||||
**Authentication:** Required
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"event": {
|
||||
"title": "string",
|
||||
"summary": "string",
|
||||
"image": "string",
|
||||
"tags": ["string"],
|
||||
"content_warning": "string",
|
||||
"goal": "string"
|
||||
},
|
||||
"expires": "2024-01-01T00:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"key": "string",
|
||||
"event": "string"
|
||||
}
|
||||
```
|
||||
|
||||
**Description:** Creates a new stream key with associated event metadata and optional expiration time.
|
||||
|
||||
## Error Handling
|
||||
|
||||
All endpoints return appropriate HTTP status codes:
|
||||
|
||||
- `200 OK` - Successful request
|
||||
- `400 Bad Request` - Invalid request parameters or body
|
||||
- `401 Unauthorized` - Missing or invalid authentication
|
||||
- `404 Not Found` - Resource not found
|
||||
- `500 Internal Server Error` - Server error
|
||||
|
||||
Error responses include a JSON body with error details where applicable.
|
||||
|
||||
## Rate Limiting
|
||||
|
||||
The API may implement rate limiting based on account balance and usage patterns. Specific limits are not documented but will be enforced server-side.
|
||||
|
||||
## CORS Support
|
||||
|
||||
The API includes CORS headers allowing cross-origin requests from web applications:
|
||||
|
||||
```
|
||||
Access-Control-Allow-Origin: *
|
||||
Access-Control-Allow-Headers: *
|
||||
Access-Control-Allow-Methods: HEAD, GET, PATCH, DELETE, POST, OPTIONS
|
||||
```
|
||||
|
||||
## Content Type
|
||||
|
||||
All API endpoints expect and return `application/json` content type unless otherwise specified.
|
Reference in New Issue
Block a user