605 lines
16 KiB
JSON
605 lines
16 KiB
JSON
{
|
|
"openapi": "3.0.0",
|
|
"paths": {
|
|
"/minimal": {
|
|
"get": {
|
|
"operationId": "MinimalController_getMinimal",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success"
|
|
}
|
|
},
|
|
"summary": "Minimal endpoint for OpenAPI generation",
|
|
"tags": [
|
|
"System"
|
|
]
|
|
}
|
|
},
|
|
"/invoices": {
|
|
"get": {
|
|
"description": "Retrieves invoices for the authenticated user with pagination and optional status filtering",
|
|
"operationId": "InvoicesController_getInvoices",
|
|
"parameters": [
|
|
{
|
|
"name": "status",
|
|
"required": false,
|
|
"in": "query",
|
|
"description": "Filter by invoice status",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"required": false,
|
|
"in": "query",
|
|
"description": "Items per page (default: 10)",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
{
|
|
"name": "page",
|
|
"required": false,
|
|
"in": "query",
|
|
"description": "Page number (default: 1)",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of invoices with pagination",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InvoiceListDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"bearer": []
|
|
}
|
|
],
|
|
"summary": "Get paginated list of user invoices",
|
|
"tags": [
|
|
"invoices"
|
|
]
|
|
}
|
|
},
|
|
"/invoices/payment-methods": {
|
|
"get": {
|
|
"description": "Retrieves all saved payment methods for the authenticated user",
|
|
"operationId": "InvoicesController_getPaymentMethods",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of payment methods"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"bearer": []
|
|
}
|
|
],
|
|
"summary": "Get user payment methods",
|
|
"tags": [
|
|
"invoices"
|
|
]
|
|
}
|
|
},
|
|
"/invoices/payment-gateways": {
|
|
"get": {
|
|
"description": "Retrieves all active payment gateways available for payments",
|
|
"operationId": "InvoicesController_getPaymentGateways",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of payment gateways"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"bearer": []
|
|
}
|
|
],
|
|
"summary": "Get available payment gateways",
|
|
"tags": [
|
|
"invoices"
|
|
]
|
|
}
|
|
},
|
|
"/invoices/payment-methods/refresh": {
|
|
"post": {
|
|
"description": "Invalidates and refreshes payment methods cache for the current user",
|
|
"operationId": "InvoicesController_refreshPaymentMethods",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Payment methods cache refreshed"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"bearer": []
|
|
}
|
|
],
|
|
"summary": "Refresh payment methods cache",
|
|
"tags": [
|
|
"invoices"
|
|
]
|
|
}
|
|
},
|
|
"/invoices/{id}": {
|
|
"get": {
|
|
"description": "Retrieves detailed information for a specific invoice",
|
|
"operationId": "InvoicesController_getInvoiceById",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"required": true,
|
|
"in": "path",
|
|
"description": "Invoice ID",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Invoice details",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/InvoiceDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Invoice not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"bearer": []
|
|
}
|
|
],
|
|
"summary": "Get invoice details by ID",
|
|
"tags": [
|
|
"invoices"
|
|
]
|
|
}
|
|
},
|
|
"/invoices/{id}/subscriptions": {
|
|
"get": {
|
|
"description": "Retrieves all subscriptions that are referenced in the invoice items",
|
|
"operationId": "InvoicesController_getInvoiceSubscriptions",
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"required": true,
|
|
"in": "path",
|
|
"description": "Invoice ID",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of related subscriptions"
|
|
},
|
|
"404": {
|
|
"description": "Invoice not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"bearer": []
|
|
}
|
|
],
|
|
"summary": "Get subscriptions related to an invoice",
|
|
"tags": [
|
|
"invoices"
|
|
]
|
|
}
|
|
},
|
|
"/invoices/{id}/sso-link": {
|
|
"post": {
|
|
"description": "Generates a single sign-on link to view/pay the invoice or download PDF in WHMCS",
|
|
"operationId": "InvoicesController_createSsoLink",
|
|
"parameters": [
|
|
{
|
|
"name": "target",
|
|
"required": false,
|
|
"in": "query",
|
|
"description": "Link target: view invoice, download PDF, or go to payment page (default: view)",
|
|
"schema": {
|
|
"enum": [
|
|
"view",
|
|
"download",
|
|
"pay"
|
|
],
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "id",
|
|
"required": true,
|
|
"in": "path",
|
|
"description": "Invoice ID",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "SSO link created successfully"
|
|
},
|
|
"404": {
|
|
"description": "Invoice not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"bearer": []
|
|
}
|
|
],
|
|
"summary": "Create SSO link for invoice",
|
|
"tags": [
|
|
"invoices"
|
|
]
|
|
}
|
|
},
|
|
"/invoices/{id}/payment-link": {
|
|
"post": {
|
|
"description": "Generates a payment link for the invoice with a specific payment method or gateway",
|
|
"operationId": "InvoicesController_createPaymentLink",
|
|
"parameters": [
|
|
{
|
|
"name": "gatewayName",
|
|
"required": false,
|
|
"in": "query",
|
|
"description": "Payment gateway name",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "paymentMethodId",
|
|
"required": false,
|
|
"in": "query",
|
|
"description": "Payment method ID",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
{
|
|
"name": "id",
|
|
"required": true,
|
|
"in": "path",
|
|
"description": "Invoice ID",
|
|
"schema": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Payment link created successfully"
|
|
},
|
|
"404": {
|
|
"description": "Invoice not found"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"bearer": []
|
|
}
|
|
],
|
|
"summary": "Create payment link for invoice with payment method",
|
|
"tags": [
|
|
"invoices"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"info": {
|
|
"title": "Customer Portal API",
|
|
"description": "Backend for Frontend API for customer portal",
|
|
"version": "1.0",
|
|
"contact": {}
|
|
},
|
|
"tags": [],
|
|
"servers": [],
|
|
"components": {
|
|
"securitySchemes": {
|
|
"bearer": {
|
|
"scheme": "bearer",
|
|
"bearerFormat": "JWT",
|
|
"type": "http"
|
|
}
|
|
},
|
|
"schemas": {
|
|
"InvoiceListDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"invoices": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"number": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Draft",
|
|
"Pending",
|
|
"Paid",
|
|
"Unpaid",
|
|
"Overdue",
|
|
"Cancelled",
|
|
"Refunded",
|
|
"Collections"
|
|
]
|
|
},
|
|
"currency": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"currencySymbol": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"total": {
|
|
"type": "number"
|
|
},
|
|
"subtotal": {
|
|
"type": "number"
|
|
},
|
|
"tax": {
|
|
"type": "number"
|
|
},
|
|
"issuedAt": {
|
|
"type": "string"
|
|
},
|
|
"dueDate": {
|
|
"type": "string"
|
|
},
|
|
"paidDate": {
|
|
"type": "string"
|
|
},
|
|
"pdfUrl": {
|
|
"type": "string"
|
|
},
|
|
"paymentUrl": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"amount": {
|
|
"type": "number"
|
|
},
|
|
"quantity": {
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"serviceId": {
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"description",
|
|
"amount",
|
|
"type"
|
|
]
|
|
}
|
|
},
|
|
"daysOverdue": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"number",
|
|
"status",
|
|
"currency",
|
|
"total",
|
|
"subtotal",
|
|
"tax"
|
|
]
|
|
}
|
|
},
|
|
"pagination": {
|
|
"type": "object",
|
|
"properties": {
|
|
"page": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"totalPages": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"totalItems": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"nextCursor": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"page",
|
|
"totalPages",
|
|
"totalItems"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"invoices",
|
|
"pagination"
|
|
]
|
|
},
|
|
"InvoiceDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"number": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Draft",
|
|
"Pending",
|
|
"Paid",
|
|
"Unpaid",
|
|
"Overdue",
|
|
"Cancelled",
|
|
"Refunded",
|
|
"Collections"
|
|
]
|
|
},
|
|
"currency": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"currencySymbol": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"total": {
|
|
"type": "number"
|
|
},
|
|
"subtotal": {
|
|
"type": "number"
|
|
},
|
|
"tax": {
|
|
"type": "number"
|
|
},
|
|
"issuedAt": {
|
|
"type": "string"
|
|
},
|
|
"dueDate": {
|
|
"type": "string"
|
|
},
|
|
"paidDate": {
|
|
"type": "string"
|
|
},
|
|
"pdfUrl": {
|
|
"type": "string"
|
|
},
|
|
"paymentUrl": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"items": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"amount": {
|
|
"type": "number"
|
|
},
|
|
"quantity": {
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"serviceId": {
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"description",
|
|
"amount",
|
|
"type"
|
|
]
|
|
}
|
|
},
|
|
"daysOverdue": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"number",
|
|
"status",
|
|
"currency",
|
|
"total",
|
|
"subtotal",
|
|
"tax"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
} |