Перейти к основному содержимому

API Reference

?????? ??????? ?? ???? ????????? API-??????????.

Authentication

??? ???? ?????????? ????????? ????????? Authorization:

Authorization: Bearer YOUR_API_TOKEN

Response Format

??? ?????? ??????? ???? ?????????:

{
"success": true,
"data": { ... },
"message": "Description of the result"
}

Error responses:

{
"success": false,
"error": "Error description",
"code": 400
}

Tenants

List All Tenants

GET /api/saas/tenants

Parameters:

ParameterTypeRequiredDescription
pageintegerNoPage number for pagination
per_pageintegerNoResults per page (default: 25, max: 100)
statusstringNoFilter by status: active, inactive, trial

Example Response:

{
"success": true,
"data": {
"tenants": [
{
"id": 1,
"company_name": "Acme Corp",
"domain": "acme.yoursite.com",
"plan": "Professional",
"status": "active",
"created_at": "2024-01-15T10:30:00Z"
}
],
"total": 42,
"page": 1,
"per_page": 25
}
}

Get Single Tenant

GET /api/saas/tenants/{id}

Example Response:

{
"success": true,
"data": {
"id": 1,
"company_name": "Acme Corp",
"domain": "acme.yoursite.com",
"plan_id": 2,
"plan_name": "Professional",
"status": "active",
"created_at": "2024-01-15T10:30:00Z",
"expires_at": "2024-02-15T10:30:00Z",
"usage": {
"customers": { "used": 24, "limit": 500 },
"invoices": { "used": 89, "limit": 1000 },
"projects": { "used": 5, "limit": 50 },
"staff": { "used": 3, "limit": 10 }
}
}
}

Create Tenant

POST /api/saas/tenants

Body Parameters:

ParameterTypeRequiredDescription
company_namestringYesCompany name
emailstringYesPrimary contact email
first_namestringYesContact first name
last_namestringYesContact last name
plan_idintegerYesThe plan to assign
subdomainstringYesDesired subdomain/slug
passwordstringNoAccount password (auto-generated if omitted)

Example:

curl -X POST https://yoursite.com/api/saas/tenants \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"company_name": "Acme Corp",
"email": "[email protected]",
"first_name": "John",
"last_name": "Doe",
"plan_id": 2,
"subdomain": "acme"
}'

Update Tenant

PUT /api/saas/tenants/{id}

Body Parameters:

ParameterTypeRequiredDescription
company_namestringNoUpdated company name
plan_idintegerNoNew plan to assign
statusstringNoactive or inactive

Delete Tenant

DELETE /api/saas/tenants/{id}
осторожно

??? ???????? ?????? ??????? ? ??? ??? ??????, ??????? ???? ??????. ??? ???????? ?????? ????????.


Plans

List All Plans

GET /api/saas/plans

Example Response:

{
"success": true,
"data": {
"plans": [
{
"id": 1,
"name": "Starter",
"price_monthly": 10.00,
"price_yearly": 100.00,
"billing_cycle": "monthly",
"is_popular": false,
"trial_enabled": true,
"limits": {
"customers": 50,
"invoices": 100,
"projects": 5,
"staff": 2
}
}
]
}
}

Get Single Plan

GET /api/saas/plans/{id}

Create Plan

POST /api/saas/plans

Update Plan

PUT /api/saas/plans/{id}

Delete Plan

DELETE /api/saas/plans/{id}

Subscriptions

Get Tenant Subscription

GET /api/saas/tenants/{id}/subscription

Example Response:

{
"success": true,
"data": {
"tenant_id": 1,
"plan_id": 2,
"plan_name": "Professional",
"status": "active",
"started_at": "2024-01-15T10:30:00Z",
"expires_at": "2024-02-15T10:30:00Z",
"next_invoice_at": "2024-02-15T10:30:00Z",
"billing_cycle": "monthly"
}
}

Update Subscription

PUT /api/saas/tenants/{id}/subscription

Body Parameters:

ParameterTypeRequiredDescription
plan_idintegerNoNew plan ID
expires_atdatetimeNoNew expiration date

Usage

Get Tenant Usage

GET /api/saas/tenants/{id}/usage

Example Response:

{
"success": true,
"data": {
"customers": { "used": 24, "limit": 500, "percentage": 4.8 },
"invoices": { "used": 89, "limit": 1000, "percentage": 8.9 },
"projects": { "used": 5, "limit": 50, "percentage": 10.0 },
"staff": { "used": 3, "limit": 10, "percentage": 30.0 },
"estimates": { "used": 12, "limit": 200, "percentage": 6.0 },
"contracts": { "used": 2, "limit": 50, "percentage": 4.0 },
"tasks": { "used": 67, "limit": 500, "percentage": 13.4 }
}
}

HTTP Status Codes

CodeMeaning
200Success
201Created successfully
400Bad request ? check your parameters
401Unauthorized ? invalid or missing API token
404Not found ? the resource doesn't exist
422Validation error ? one or more fields are invalid
429Rate limit exceeded ? slow down your requests
500Server error ? contact support if this persists

Need Help?

?? ???????? API ??? ?????????????? ?????????? ??????????? ????? ?????? ????????? ? ??????????.