{
    "basePath": "http://localhost/taxmapp-api/public",
    "swaggerVersion": "1.2",
    "apiVersion": "1.0.0",
    "resourcePath": "/invoice",
    "apis": [
        {
            "path": "/v2/invoice",
            "operations": [
                {
                    "method": "GET",
                    "summary": "Get all invoices",
                    "nickname": "invoices",
                    "parameters": [
                        {
                            "paramType": "query",
                            "name": "business_id",
                            "type": "string",
                            "description": "Business ID"
                        },
                        {
                            "paramType": "query",
                            "name": "customer_id",
                            "type": "string",
                            "description": "Customer ID"
                        },
                        {
                            "paramType": "query",
                            "name": "invoice_template_id",
                            "type": "string",
                            "description": "Invoice template ID"
                        }
                    ],
                    "responseMessages": [
                        {
                            "code": 400,
                            "message": "Invalid request params"
                        },
                        {
                            "code": 401,
                            "message": "Caller is not authenticated"
                        },
                        {
                            "code": 404,
                            "message": "Resource not found"
                        }
                    ]
                },
                {
                    "method": "POST",
                    "summary": "Create a invoice",
                    "nickname": "invoice",
                    "parameters": [
                        {
                            "paramType": "body",
                            "name": "body",
                            "type": "Invoice",
                            "required": true,
                            "allowMultiple": true,
                            "description": "Json Object"
                        }
                    ],
                    "responseMessages": [
                        {
                            "code": 400,
                            "message": "Invalid request params"
                        },
                        {
                            "code": 401,
                            "message": "Caller is not authenticated"
                        },
                        {
                            "code": 404,
                            "message": "Resource not found"
                        }
                    ]
                }
            ]
        },
        {
            "path": "/v2/invoice/export",
            "operations": [
                {
                    "method": "POST",
                    "summary": "Export all invoice",
                    "nickname": "exportInvoice",
                    "parameters": [
                        {
                            "paramType": "body",
                            "name": "json",
                            "type": "json",
                            "description": "Json"
                        }
                    ]
                }
            ]
        },
        {
            "path": "/v2/invoice/generate/number",
            "operations": [
                {
                    "method": "GET",
                    "summary": "Generate number of invoice",
                    "nickname": "invoice",
                    "responseMessages": [
                        {
                            "code": 400,
                            "message": "Invalid request params"
                        },
                        {
                            "code": 401,
                            "message": "Caller is not authenticated"
                        },
                        {
                            "code": 404,
                            "message": "Resource not found"
                        }
                    ]
                }
            ]
        },
        {
            "path": "/v2/invoice/{id}",
            "operations": [
                {
                    "method": "GET",
                    "summary": "Get a invoice",
                    "nickname": "invoice",
                    "parameters": [
                        {
                            "paramType": "path",
                            "name": "id",
                            "type": "string",
                            "required": true,
                            "description": "Id"
                        }
                    ],
                    "responseMessages": [
                        {
                            "code": 400,
                            "message": "Invalid request params"
                        },
                        {
                            "code": 401,
                            "message": "Caller is not authenticated"
                        },
                        {
                            "code": 404,
                            "message": "Resource not found"
                        }
                    ]
                },
                {
                    "method": "PUT",
                    "summary": "Update a invoice",
                    "nickname": "invoice",
                    "parameters": [
                        {
                            "paramType": "path",
                            "name": "id",
                            "type": "string",
                            "required": true,
                            "description": "Id"
                        },
                        {
                            "paramType": "query",
                            "name": "invoice_no",
                            "type": "string",
                            "required": true,
                            "description": "Invoice No."
                        },
                        {
                            "paramType": "query",
                            "name": "customer_id",
                            "type": "string",
                            "description": "Customer ID"
                        },
                        {
                            "paramType": "query",
                            "name": "business_id",
                            "type": "string",
                            "description": "Business ID"
                        },
                        {
                            "paramType": "query",
                            "name": "payment_type_id",
                            "type": "string",
                            "description": "Payment type ID"
                        },
                        {
                            "paramType": "query",
                            "name": "invoice_template_id",
                            "type": "string",
                            "description": "Invoice Template ID"
                        },
                        {
                            "paramType": "body",
                            "name": "invoice_template",
                            "type": "json",
                            "description": "Invoice Template"
                        },
                        {
                            "paramType": "body",
                            "name": "invoice_details",
                            "type": "json",
                            "description": "Invoice Details"
                        },
                        {
                            "paramType": "body",
                            "name": "income",
                            "type": "json",
                            "description": "Invoice Template"
                        },
                        {
                            "paramType": "query",
                            "name": "date",
                            "type": "string",
                            "description": "Date"
                        },
                        {
                            "paramType": "query",
                            "name": "due_selection",
                            "type": "string",
                            "description": "Due selection"
                        },
                        {
                            "paramType": "query",
                            "name": "due_on",
                            "type": "string",
                            "description": "Due on"
                        },
                        {
                            "paramType": "query",
                            "name": "amount",
                            "type": "string",
                            "description": "Amount"
                        },
                        {
                            "paramType": "query",
                            "name": "vat",
                            "type": "string",
                            "description": "VAT"
                        },
                        {
                            "paramType": "query",
                            "name": "total",
                            "type": "string",
                            "description": "Total"
                        },
                        {
                            "paramType": "query",
                            "name": "notes",
                            "type": "string",
                            "description": "Notes"
                        },
                        {
                            "paramType": "query",
                            "name": "paid",
                            "type": "string",
                            "description": "Paid"
                        },
                        {
                            "paramType": "query",
                            "name": "paid_on",
                            "type": "string",
                            "description": "Paid on"
                        },
                        {
                            "paramType": "query",
                            "name": "invoice_pdf",
                            "type": "string",
                            "description": "Invoice pdf link"
                        }
                    ],
                    "responseMessages": [
                        {
                            "code": 400,
                            "message": "Invalid request params"
                        },
                        {
                            "code": 401,
                            "message": "Caller is not authenticated"
                        },
                        {
                            "code": 404,
                            "message": "Resource not found"
                        }
                    ]
                },
                {
                    "method": "DELETE",
                    "summary": "Delete a invoice",
                    "nickname": "invoice",
                    "parameters": [
                        {
                            "paramType": "path",
                            "name": "id",
                            "type": "string",
                            "required": true,
                            "description": "Id"
                        }
                    ],
                    "responseMessages": [
                        {
                            "code": 400,
                            "message": "Invalid request params"
                        },
                        {
                            "code": 401,
                            "message": "Caller is not authenticated"
                        },
                        {
                            "code": 404,
                            "message": "Resource not found"
                        }
                    ]
                }
            ]
        },
        {
            "path": "/v2/invoice/{id}/export-pdf",
            "operations": [
                {
                    "method": "POST",
                    "summary": "Export invoice pdf",
                    "nickname": "exportInvoicePdf",
                    "parameters": [
                        {
                            "paramType": "body",
                            "name": "json",
                            "type": "json",
                            "description": "Json"
                        }
                    ]
                }
            ]
        },
        {
            "path": "/v2/invoice/{id}/paid",
            "operations": [
                {
                    "method": "POST",
                    "summary": "Update a invoice",
                    "nickname": "invoice",
                    "parameters": [
                        {
                            "paramType": "path",
                            "name": "id",
                            "type": "string",
                            "required": true,
                            "description": "Id"
                        },
                        {
                            "paramType": "query",
                            "name": "paid",
                            "type": "string",
                            "description": "Paid"
                        },
                        {
                            "paramType": "query",
                            "name": "paid_on",
                            "type": "string",
                            "description": "Paid on"
                        }
                    ],
                    "responseMessages": [
                        {
                            "code": 400,
                            "message": "Invalid request params"
                        },
                        {
                            "code": 401,
                            "message": "Caller is not authenticated"
                        },
                        {
                            "code": 404,
                            "message": "Resource not found"
                        }
                    ]
                }
            ]
        },
        {
            "path": "/v2/invoice/{id}/send-to-client",
            "operations": [
                {
                    "method": "POST",
                    "summary": "Send to client",
                    "nickname": "sendToClient",
                    "parameters": [
                        {
                            "paramType": "path",
                            "name": "id",
                            "type": "string",
                            "required": true,
                            "description": "Id"
                        }
                    ],
                    "responseMessages": [
                        {
                            "code": 400,
                            "message": "Invalid request params"
                        },
                        {
                            "code": 401,
                            "message": "Caller is not authenticated"
                        },
                        {
                            "code": 404,
                            "message": "Resource not found"
                        }
                    ]
                }
            ]
        }
    ],
    "models": {
        "Invoice": {
            "id": "Invoice",
            "properties": {
                "invoice_no": {
                    "type": "number"
                },
                "customer_id": {
                    "type": "integer"
                },
                "business_id": {
                    "type": "integer"
                },
                "payment_type_id": {
                    "type": "integer"
                },
                "invoice_template_id": {
                    "type": "integer"
                },
                "invoice_template": {
                    "type": "string"
                },
                "invoice_details": {
                    "type": "array",
                    "items": {
                        "$ref": "invoiceDetail"
                    }
                },
                "date": {
                    "type": "string"
                },
                "due_selection": {
                    "type": "string"
                },
                "due_on": {
                    "type": "string"
                },
                "amount": {
                    "type": "number"
                },
                "vat": {
                    "type": "number"
                },
                "total": {
                    "type": "number"
                },
                "notes": {
                    "type": "string"
                },
                "paid": {
                    "type": "string"
                },
                "paid_on": {
                    "type": "string"
                },
                "extra": {
                    "type": "string"
                },
                "invoice_pdf": {
                    "type": "string"
                },
                "is_draft": {
                    "type": "boolean"
                }
            }
        },
        "invoiceDetail": {
            "id": "invoiceDetail",
            "properties": {
                "product_id": {
                    "type": "integer"
                },
                "quantity": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "unit_price": {
                    "type": "number"
                },
                "tax_rate": {
                    "type": "number"
                },
                "vat": {
                    "type": "number"
                },
                "amount": {
                    "type": "number"
                }
            }
        }
    },
    "produces": [
        "application/json"
    ]
}