{
    "openapi": "3.1.0",
    "info": {
        "title": "F-sąskaita API",
        "version": "1.0.0",
        "description": "The F-sąskaita API lets you issue invoices, record expenses and download documents for a business in app.fsaskaita.lt.\n\nAuthenticate with a business token created in the app under Settings, Integrations, API, sent as `Authorization: Bearer <token>`. Send `Accept: application/json` with every request.\n\nRequests are limited to 60 per minute per business, shared across all of its tokens. Every authenticated response carries `X-RateLimit-Limit` and `X-RateLimit-Remaining`; a `429` adds `Retry-After` and `X-RateLimit-Reset`.\n\nGuides, conventions and the webhooks reference live at https://docs.fsaskaita.lt.",
        "contact": {
            "name": "F-sąskaita documentation",
            "url": "https://docs.fsaskaita.lt"
        },
        "x-fsaskaita-rate-limit": "60/min"
    },
    "servers": [
        {
            "url": "https://app.fsaskaita.lt/api",
            "description": "Production"
        }
    ],
    "tags": [
        {
            "name": "Invoices",
            "description": "Finalized, numbered invoices of the authenticated business. Drafts made in the app are never visible through the API."
        },
        {
            "name": "Expenses",
            "description": "Expense documents (purchase invoices, receipts) with an attached file. Write endpoints take `multipart/form-data`."
        },
        {
            "name": "Profile",
            "description": "The business the bearer token belongs to."
        },
        {
            "name": "Currencies",
            "description": "ISO 4217 currency codes accepted in the `currency` field of invoices and expenses."
        }
    ],
    "security": [
        {
            "bearerAuth": []
        }
    ],
    "paths": {
        "/invoices": {
            "get": {
                "operationId": "listInvoices",
                "description": "Returns the business's finalized invoices, newest first, 50 per page. Use `?page=` to paginate; the page\nsize cannot be changed. Drafts made in the app are never included.",
                "summary": "List invoices",
                "tags": [
                    "Invoices"
                ],
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number, starting at 1. The page size is fixed at 50.",
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `Invoice`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Invoice"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "operationId": "createInvoice",
                "description": "Creates a finalized invoice and queues its PDF. Fires the `invoice.created` webhook.\n\n**Numbering.** Omit `invoice_number` to take the next number of the `series`: the series counter, otherwise\nthe highest existing number in that series plus one, otherwise `1`. An explicit number must be unique\nwithin the series. Numbers are returned zero-padded to three digits.\n\n**Amounts.** Each product line carries exactly one of `price` (unit price excluding VAT), `total` (line total\nexcluding VAT) or `total_incl_vat`; the other two are derived. `vat_percentage` is required on the VAT\ninvoice types (`vat_invoice`, `preliminary_vat_invoice`, `credit_vat_invoice`) and whenever the seller has a\n`vat_code`; leave it out on non-VAT types.\n\n**Seller.** Send `use_default_seller_info: true` to copy the seller block from the business profile (plus\nthe custom fields of the latest invoice); `seller` is then prohibited. Otherwise send `seller` with the fields\nthat match the business type: companies use `company_name` and `company_code`, individual activities use\n`first_name`, `last_name` and `individual_activity_id` (`company_code` and `individual_activity_id` are\noptional). VAT invoice types require `seller.vat_code` when `seller` is sent; with the default seller info the\nprofile's VAT code is copied as it is.",
                "summary": "Create an invoice",
                "tags": [
                    "Invoices"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvoiceInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Invoice`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Invoice"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationException"
                    },
                    "403": {
                        "$ref": "#/components/responses/AuthorizationException"
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/invoices/{invoice}": {
            "get": {
                "operationId": "getInvoice",
                "summary": "Get an invoice",
                "tags": [
                    "Invoices"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "description": "The invoice ID.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`Invoice`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Invoice"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "404": {
                        "description": "The invoice does not exist or belongs to another business.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "operationId": "updateInvoice",
                "description": "Replaces every field of the invoice with the request body, under the same rules as create. **Always resend\nthe current `invoice_number`**: when it is omitted the invoice is renumbered from the series counter. Items,\npayment options and custom fields are rewritten, totals recalculated and the PDF regenerated. Fires the\n`invoice.updated` webhook.",
                "summary": "Replace an invoice",
                "tags": [
                    "Invoices"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "description": "The invoice ID.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InvoiceInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Invoice`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Invoice"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationException"
                    },
                    "403": {
                        "$ref": "#/components/responses/AuthorizationException"
                    },
                    "404": {
                        "description": "The invoice does not exist or belongs to another business.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "deleteInvoice",
                "description": "Deletes the invoice together with its PDF, items, payment options and e-mail logs, and recalculates the\nseries counter. Fires the `invoice.deleted` webhook.",
                "summary": "Delete an invoice",
                "tags": [
                    "Invoices"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "description": "The invoice ID.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Deleted. The body is empty."
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "404": {
                        "description": "The invoice does not exist or belongs to another business.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/invoices/{invoice}/download": {
            "get": {
                "operationId": "downloadInvoicePdf",
                "description": "Streams the invoice PDF. The PDF is rendered asynchronously after create and update; if it does not exist\nyet the request waits for it for up to 20 seconds and then fails with `500`. `Content-Length` is not sent.",
                "summary": "Download the invoice PDF",
                "tags": [
                    "Invoices"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "description": "The invoice ID.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The invoice PDF.",
                        "content": {
                            "application/pdf": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        },
                        "headers": {
                            "Content-Disposition": {
                                "description": "Attachment with the file name `<type> <series><number>.pdf`, e.g. `Sąskaita faktūra SF007.pdf`.",
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "404": {
                        "description": "The invoice does not exist or belongs to another business.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "The PDF was still not rendered after waiting 20 seconds.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/expenses": {
            "get": {
                "operationId": "listExpenses",
                "description": "Returns the business's expenses, newest first, 50 per page. Use `?page=` to paginate; the page size cannot\nbe changed.",
                "summary": "List expenses",
                "tags": [
                    "Expenses"
                ],
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number, starting at 1. The page size is fixed at 50.",
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Paginated set of `Expense`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Expense"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "minimum": 1
                                                },
                                                "last_page": {
                                                    "type": "integer",
                                                    "minimum": 1
                                                },
                                                "path": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ],
                                                    "description": "Base path for paginator generated URLs."
                                                },
                                                "per_page": {
                                                    "type": "integer",
                                                    "description": "Number of items shown per page.",
                                                    "minimum": 0
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ],
                                                    "description": "Number of the last item in the slice.",
                                                    "minimum": 1
                                                },
                                                "total": {
                                                    "type": "integer",
                                                    "description": "Total number of items being paginated.",
                                                    "minimum": 0
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "path",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "operationId": "createExpense",
                "description": "Creates an expense from a `multipart/form-data` body. `file` is required and must have one of the\nextensions jpeg, jpg, bmp, gif, pdf, png, tiff, xlsx, xls, doc, docx or odf. `vat`, `invoice_number` and the\nfile are stored but not returned; fetch the file with the download endpoint. Fires the `expense.created`\nwebhook.",
                "summary": "Create an expense",
                "tags": [
                    "Expenses"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ExpenseCreateInput"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "`Expense`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Expense"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationException"
                    },
                    "403": {
                        "$ref": "#/components/responses/AuthorizationException"
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/expenses/{expense}": {
            "get": {
                "operationId": "getExpense",
                "summary": "Get an expense",
                "tags": [
                    "Expenses"
                ],
                "parameters": [
                    {
                        "name": "expense",
                        "in": "path",
                        "required": true,
                        "description": "The expense ID.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`Expense`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Expense"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "404": {
                        "description": "The expense does not exist or belongs to another business.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "operationId": "updateExpense",
                "description": "Replaces every field of the expense with the `multipart/form-data` body. `file` is optional here; when\npresent it replaces the stored file. Fires the `expense.updated` webhook.",
                "summary": "Replace an expense",
                "tags": [
                    "Expenses"
                ],
                "parameters": [
                    {
                        "name": "expense",
                        "in": "path",
                        "required": true,
                        "description": "The expense ID.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ExpenseInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Expense`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Expense"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationException"
                    },
                    "403": {
                        "$ref": "#/components/responses/AuthorizationException"
                    },
                    "404": {
                        "description": "The expense does not exist or belongs to another business.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "deleteExpense",
                "description": "Deletes the expense and its file. Fires the `expense.deleted` webhook.",
                "summary": "Delete an expense",
                "tags": [
                    "Expenses"
                ],
                "parameters": [
                    {
                        "name": "expense",
                        "in": "path",
                        "required": true,
                        "description": "The expense ID.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Deleted. The body is empty."
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "404": {
                        "description": "The expense does not exist or belongs to another business.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/expenses/{expense}/file": {
            "post": {
                "operationId": "replaceExpenseFile",
                "description": "Replaces only the stored file; every other field is kept. Fires the `expense.updated` webhook.",
                "summary": "Replace the expense file",
                "tags": [
                    "Expenses"
                ],
                "parameters": [
                    {
                        "name": "expense",
                        "in": "path",
                        "required": true,
                        "description": "The expense ID.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ExpenseFileInput"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "`Expense`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Expense"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationException"
                    },
                    "403": {
                        "$ref": "#/components/responses/AuthorizationException"
                    },
                    "404": {
                        "description": "The expense does not exist or belongs to another business.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/expenses/{expense}/download": {
            "get": {
                "operationId": "downloadExpenseFile",
                "description": "Streams the stored file under its original name. `Content-Length` is not sent.",
                "summary": "Download the expense file",
                "tags": [
                    "Expenses"
                ],
                "parameters": [
                    {
                        "name": "expense",
                        "in": "path",
                        "required": true,
                        "description": "The expense ID.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The stored file.",
                        "content": {
                            "application/octet-stream": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            },
                            "application/pdf": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        },
                        "headers": {
                            "Transfer-Encoding": {
                                "required": true,
                                "schema": {
                                    "type": "string",
                                    "enum": [
                                        "chunked"
                                    ]
                                }
                            },
                            "Content-Disposition": {
                                "description": "Attachment with the original file name.",
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "404": {
                        "description": "The expense does not exist or belongs to another business.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/profile": {
            "get": {
                "operationId": "getProfile",
                "description": "Returns the business the token is scoped to. Companies include `company_name` and `company_code`;\nindividual activities include `first_name`, `last_name` and `individual_activity_id`.",
                "summary": "Get the business profile",
                "tags": [
                    "Profile"
                ],
                "responses": {
                    "200": {
                        "description": "`Profile`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/Profile"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/currencies": {
            "get": {
                "operationId": "listCurrencies",
                "description": "Returns every accepted currency code. Not paginated.",
                "summary": "List currencies",
                "tags": [
                    "Currencies"
                ],
                "responses": {
                    "200": {
                        "description": "Array of `Currency`",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Currency"
                                            }
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/AuthenticationException"
                    },
                    "429": {
                        "description": "Rate limit exceeded. The limit is 60 requests per minute per business, shared across all of its tokens. Wait `Retry-After` seconds before retrying.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "Seconds to wait before retrying.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Limit": {
                                "description": "Requests allowed per minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Remaining": {
                                "description": "Requests left in the current minute.",
                                "schema": {
                                    "type": "integer"
                                }
                            },
                            "X-RateLimit-Reset": {
                                "description": "Unix timestamp at which the window resets.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "webhooks": {
        "invoice.created": {
            "post": {
                "tags": [
                    "Invoices"
                ],
                "operationId": "webhookInvoiceCreated",
                "summary": "invoice.created",
                "description": "Sent when a finalized invoice is created, whether through the API, the app or a recurring invoice. The PDF is rendered asynchronously, so it may not exist yet when this event arrives; `GET /invoices/{invoice}/download` waits for it. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/webhookSignature"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "event",
                                    "data"
                                ],
                                "properties": {
                                    "event": {
                                        "const": "invoice.created"
                                    },
                                    "data": {
                                        "$ref": "#/components/schemas/Invoice"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Return any 2xx status to acknowledge the delivery. Any other status or a timeout schedules a retry."
                    }
                }
            }
        },
        "invoice.updated": {
            "post": {
                "tags": [
                    "Invoices"
                ],
                "operationId": "webhookInvoiceUpdated",
                "summary": "invoice.updated",
                "description": "Sent when an invoice is replaced, when its payment status changes (including a Stripe payment), or after any other save. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/webhookSignature"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "event",
                                    "data"
                                ],
                                "properties": {
                                    "event": {
                                        "const": "invoice.updated"
                                    },
                                    "data": {
                                        "$ref": "#/components/schemas/Invoice"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Return any 2xx status to acknowledge the delivery. Any other status or a timeout schedules a retry."
                    }
                }
            }
        },
        "invoice.deleted": {
            "post": {
                "tags": [
                    "Invoices"
                ],
                "operationId": "webhookInvoiceDeleted",
                "summary": "invoice.deleted",
                "description": "Sent when a finalized invoice is deleted. The payload contains only the id of the deleted invoice. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/webhookSignature"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "event",
                                    "data"
                                ],
                                "properties": {
                                    "event": {
                                        "const": "invoice.deleted"
                                    },
                                    "data": {
                                        "$ref": "#/components/schemas/DeletedResource"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Return any 2xx status to acknowledge the delivery. Any other status or a timeout schedules a retry."
                    }
                }
            }
        },
        "expense.created": {
            "post": {
                "tags": [
                    "Expenses"
                ],
                "operationId": "webhookExpenseCreated",
                "summary": "expense.created",
                "description": "Sent when an expense is created through the API or the app. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/webhookSignature"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "event",
                                    "data"
                                ],
                                "properties": {
                                    "event": {
                                        "const": "expense.created"
                                    },
                                    "data": {
                                        "$ref": "#/components/schemas/Expense"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Return any 2xx status to acknowledge the delivery. Any other status or a timeout schedules a retry."
                    }
                }
            }
        },
        "expense.updated": {
            "post": {
                "tags": [
                    "Expenses"
                ],
                "operationId": "webhookExpenseUpdated",
                "summary": "expense.updated",
                "description": "Sent when an expense is replaced or its file is swapped. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/webhookSignature"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "event",
                                    "data"
                                ],
                                "properties": {
                                    "event": {
                                        "const": "expense.updated"
                                    },
                                    "data": {
                                        "$ref": "#/components/schemas/Expense"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Return any 2xx status to acknowledge the delivery. Any other status or a timeout schedules a retry."
                    }
                }
            }
        },
        "expense.deleted": {
            "post": {
                "tags": [
                    "Expenses"
                ],
                "operationId": "webhookExpenseDeleted",
                "summary": "expense.deleted",
                "description": "Sent when an expense is deleted through the API or the app. The payload contains only the id of the deleted expense. Each event is attempted up to 3 times: the first delivery, then retries after 10 s and 100 s; only a 2xx response counts as success. The request times out after 10 seconds.",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/webhookSignature"
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "event",
                                    "data"
                                ],
                                "properties": {
                                    "event": {
                                        "const": "expense.deleted"
                                    },
                                    "data": {
                                        "$ref": "#/components/schemas/DeletedResource"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "2XX": {
                        "description": "Return any 2xx status to acknowledge the delivery. Any other status or a timeout schedules a retry."
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "description": "Business token created in the app under Settings, Integrations, API. The token is scoped to exactly one business, has no expiry and is shown only once. Send it as `Authorization: Bearer <token>` together with `Accept: application/json`.",
                "scheme": "bearer"
            }
        },
        "schemas": {
            "BusinessType": {
                "type": "string",
                "description": "Every type except `individual_activity` is a company.\n",
                "enum": [
                    "small_partnership",
                    "individual_activity",
                    "private_limited_liability_company",
                    "sole_proprietorship",
                    "public_institution",
                    "association",
                    "joint_stock_company"
                ],
                "title": "BusinessType"
            },
            "BuyerType": {
                "type": "string",
                "description": "`person` is a legacy alias of `individual` on input; responses always return `individual`.\n",
                "enum": [
                    "company",
                    "person"
                ],
                "title": "BuyerType"
            },
            "Currency": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "string",
                        "description": "ISO 4217 code, e.g. `EUR`."
                    },
                    "title": {
                        "type": "string"
                    }
                },
                "required": [
                    "code",
                    "title"
                ],
                "title": "Currency"
            },
            "Expense": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "description": "Document date, `Y-m-d`."
                    },
                    "total": {
                        "type": "number",
                        "description": "Amount including VAT."
                    },
                    "currency": {
                        "type": "string"
                    },
                    "seller": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": "integer",
                        "description": "Unix timestamp, seconds."
                    },
                    "updated_at": {
                        "type": "integer",
                        "description": "Unix timestamp, seconds."
                    }
                },
                "required": [
                    "id",
                    "date",
                    "total",
                    "currency",
                    "seller",
                    "created_at",
                    "updated_at"
                ],
                "title": "Expense"
            },
            "ExpenseCreateInput": {
                "type": "object",
                "description": "Multipart body of `POST /expenses`: the same fields as `ExpenseInput`, but `file` is required.",
                "properties": {
                    "currency": {
                        "type": "string",
                        "description": "One of the codes from `GET /currencies`.",
                        "examples": [
                            "EUR"
                        ]
                    },
                    "total": {
                        "type": "number",
                        "description": "Amount including VAT.",
                        "examples": [
                            121
                        ]
                    },
                    "vat": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "VAT amount contained in `total`. Stored but not returned.",
                        "examples": [
                            21
                        ]
                    },
                    "seller": {
                        "type": "string",
                        "description": "Supplier name.",
                        "examples": [
                            "Tiekėjas UAB"
                        ],
                        "maxLength": 255
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "description": "Document date.",
                        "examples": [
                            "2026-09-12"
                        ]
                    },
                    "invoice_number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Supplier's document number. Stored but not returned.",
                        "examples": [
                            "TK-0042"
                        ],
                        "maxLength": 255
                    },
                    "file": {
                        "type": "string",
                        "format": "binary",
                        "contentMediaType": "application/octet-stream",
                        "description": "The document file: jpeg, jpg, bmp, gif, pdf, png, tiff, xlsx, xls, doc, docx or odf. Required when\ncreating an expense; optional on update, where it replaces the stored file."
                    }
                },
                "required": [
                    "currency",
                    "total",
                    "seller",
                    "date",
                    "file"
                ],
                "title": "ExpenseCreateInput"
            },
            "ExpenseFileInput": {
                "type": "object",
                "description": "Multipart body of `POST /expenses/{expense}/file`.",
                "properties": {
                    "file": {
                        "type": "string",
                        "format": "binary",
                        "contentMediaType": "application/octet-stream",
                        "description": "The new document file: jpeg, jpg, bmp, gif, pdf, png, tiff, xlsx, xls, doc, docx or odf."
                    }
                },
                "required": [
                    "file"
                ],
                "title": "ExpenseFileInput"
            },
            "ExpenseInput": {
                "type": "object",
                "description": "Multipart body of `PUT /expenses/{expense}`. `POST /expenses` uses `ExpenseCreateInput` (StoreExpenseRequest),\nwhich additionally requires `file`.",
                "properties": {
                    "currency": {
                        "type": "string",
                        "description": "One of the codes from `GET /currencies`.",
                        "examples": [
                            "EUR"
                        ]
                    },
                    "total": {
                        "type": "number",
                        "description": "Amount including VAT.",
                        "examples": [
                            121
                        ]
                    },
                    "vat": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "VAT amount contained in `total`. Stored but not returned.",
                        "examples": [
                            21
                        ]
                    },
                    "seller": {
                        "type": "string",
                        "description": "Supplier name.",
                        "examples": [
                            "Tiekėjas UAB"
                        ],
                        "maxLength": 255
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "description": "Document date.",
                        "examples": [
                            "2026-09-12"
                        ]
                    },
                    "invoice_number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Supplier's document number. Stored but not returned.",
                        "examples": [
                            "TK-0042"
                        ],
                        "maxLength": 255
                    },
                    "file": {
                        "type": "string",
                        "format": "binary",
                        "contentMediaType": "application/octet-stream",
                        "description": "The document file: jpeg, jpg, bmp, gif, pdf, png, tiff, xlsx, xls, doc, docx or odf. Required when\ncreating an expense; optional on update, where it replaces the stored file."
                    }
                },
                "required": [
                    "currency",
                    "total",
                    "seller",
                    "date"
                ],
                "title": "ExpenseInput"
            },
            "Invoice": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "business_id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "invoice_type": {
                        "$ref": "#/components/schemas/InvoiceType"
                    },
                    "series": {
                        "type": "string"
                    },
                    "invoice_number": {
                        "type": "string",
                        "description": "Zero-padded to three digits, e.g. `\"007\"`. Send it back padded or unpadded on update; both are accepted."
                    },
                    "invoice_date": {
                        "type": "string",
                        "format": "date",
                        "description": "Issue date, `Y-m-d`."
                    },
                    "pay_until_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "description": "Due date, `Y-m-d`."
                    },
                    "language": {
                        "$ref": "#/components/schemas/InvoiceLanguage"
                    },
                    "subtotal": {
                        "type": "number",
                        "description": "Sum of the lines excluding VAT."
                    },
                    "vat": {
                        "type": "number"
                    },
                    "total_incl_vat": {
                        "type": "number"
                    },
                    "currency": {
                        "type": "string"
                    },
                    "payment_status": {
                        "$ref": "#/components/schemas/PaymentStatus"
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "share_link": {
                        "type": "string",
                        "format": "uri",
                        "description": "Public link to the invoice; anyone with the link can view it."
                    },
                    "seller": {
                        "type": "object",
                        "properties": {
                            "business_type": {
                                "$ref": "#/components/schemas/BusinessType"
                            },
                            "first_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "last_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "company_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "company_code": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "individual_activity_id": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "vat_code": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "address": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "email": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "phone": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "custom_fields": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "label": {
                                            "type": "string"
                                        },
                                        "value": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "label",
                                        "value"
                                    ]
                                }
                            }
                        },
                        "required": [
                            "business_type",
                            "first_name",
                            "last_name",
                            "company_name",
                            "company_code",
                            "individual_activity_id",
                            "vat_code",
                            "address",
                            "email",
                            "phone",
                            "custom_fields"
                        ]
                    },
                    "buyer": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string",
                                "description": "`person` sent on input is returned as `individual`.",
                                "enum": [
                                    "company",
                                    "individual"
                                ]
                            },
                            "first_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "last_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "company_name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "company_code": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "individual_activity_id": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "vat_code": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "address": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "email": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "phone": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "type",
                            "first_name",
                            "last_name",
                            "company_name",
                            "company_code",
                            "individual_activity_id",
                            "vat_code",
                            "address",
                            "email",
                            "phone"
                        ]
                    },
                    "items": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/InvoiceItem"
                        }
                    },
                    "payment_options": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/PaymentOption"
                        }
                    },
                    "created_at": {
                        "type": "integer",
                        "description": "Unix timestamp, seconds."
                    },
                    "updated_at": {
                        "type": "integer",
                        "description": "Unix timestamp, seconds."
                    }
                },
                "required": [
                    "id",
                    "business_id",
                    "invoice_type",
                    "series",
                    "invoice_number",
                    "invoice_date",
                    "pay_until_date",
                    "language",
                    "subtotal",
                    "vat",
                    "total_incl_vat",
                    "currency",
                    "payment_status",
                    "notes",
                    "share_link",
                    "seller",
                    "buyer",
                    "items",
                    "payment_options",
                    "created_at",
                    "updated_at"
                ],
                "title": "Invoice"
            },
            "InvoiceInput": {
                "type": "object",
                "description": "Body of `POST /invoices` and `PUT /invoices/{invoice}`. On update every field is replaced with what you send;\nalways resend `invoice_number` or the invoice is renumbered.",
                "properties": {
                    "type": {
                        "type": "string",
                        "description": "Invoice type. The `*vat_invoice` types require `seller.vat_code` and `vat_percentage` on every line.",
                        "enum": [
                            "regular_invoice",
                            "vat_invoice",
                            "preliminary_invoice",
                            "preliminary_vat_invoice",
                            "credit_invoice",
                            "credit_vat_invoice"
                        ],
                        "examples": [
                            "vat_invoice"
                        ]
                    },
                    "invoice_date": {
                        "type": "string",
                        "format": "date",
                        "description": "Issue date.",
                        "examples": [
                            "2026-09-12"
                        ]
                    },
                    "pay_until_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date",
                        "description": "Due date.",
                        "examples": [
                            "2026-09-26"
                        ]
                    },
                    "series": {
                        "type": "string",
                        "description": "Series code the number belongs to. A new code starts its own counter.",
                        "examples": [
                            "SF"
                        ],
                        "maxLength": 255
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Free text printed under the lines.",
                        "maxLength": 255
                    },
                    "currency": {
                        "type": "string",
                        "description": "One of the codes from `GET /currencies`.",
                        "examples": [
                            "EUR"
                        ]
                    },
                    "payment_status": {
                        "anyOf": [
                            {
                                "description": "Defaults to `not_paid` on create; when omitted on update the current status is kept.",
                                "$ref": "#/components/schemas/PaymentStatus"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "language": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Language of the PDF and the share page. Defaults to `lt`.",
                        "enum": [
                            "en",
                            "lt",
                            "es",
                            "de",
                            "fr",
                            null
                        ]
                    },
                    "invoice_number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Number within the series; must be unique there. Omit on create to auto-number. **On update always\nresend the current number**, otherwise the invoice is renumbered from the series counter. Accepts the\npadded (`\"007\"`) or unpadded (`\"7\"`) form; numbers are compared exactly as sent, so use one form\nconsistently within a series.",
                        "pattern": "^(.*)+$",
                        "examples": [
                            "7"
                        ],
                        "maxLength": 255
                    },
                    "buyer": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string",
                                "description": "`company` or `individual`. `person` is accepted as a legacy alias of `individual`; responses always\nreturn `individual`.",
                                "enum": [
                                    "company",
                                    "person",
                                    "individual"
                                ],
                                "examples": [
                                    "company"
                                ]
                            },
                            "company_name": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Required for companies, prohibited for individuals."
                            },
                            "company_code": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Prohibited for individuals.",
                                "maxLength": 255
                            },
                            "first_name": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Required for individuals, prohibited for companies.",
                                "maxLength": 255
                            },
                            "last_name": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Required for individuals, prohibited for companies.",
                                "maxLength": 255
                            },
                            "individual_activity_id": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Individual activity certificate number; prohibited for companies.",
                                "maxLength": 255
                            },
                            "address": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "maxLength": 255
                            },
                            "vat_code": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "maxLength": 255
                            },
                            "email": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "maxLength": 255
                            },
                            "phone": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "maxLength": 255
                            }
                        },
                        "required": [
                            "type"
                        ]
                    },
                    "use_default_seller_info": {
                        "type": [
                            "boolean",
                            "null"
                        ],
                        "description": "When `true` the seller block is copied from the business profile (plus the custom fields of the latest\ninvoice) and `seller` must be omitted.",
                        "examples": [
                            true
                        ]
                    },
                    "seller": {
                        "type": "object",
                        "description": "Required unless `use_default_seller_info` is `true`. Which fields are required depends on the business\ntype: companies send `company_name` (required) and `company_code` (optional); individual activities send\n`first_name` and `last_name` (required) and `individual_activity_id` (optional). Fields of the other kind\nare rejected.",
                        "properties": {
                            "address": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "maxLength": 255
                            },
                            "vat_code": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Required for the `*vat_invoice` types when `seller` is sent.",
                                "maxLength": 255
                            },
                            "email": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "maxLength": 255
                            },
                            "phone": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "maxLength": 255
                            },
                            "company_name": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Companies only.",
                                "maxLength": 255
                            },
                            "company_code": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Companies only.",
                                "maxLength": 255
                            },
                            "first_name": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Individual activities only.",
                                "maxLength": 255
                            },
                            "last_name": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Individual activities only.",
                                "maxLength": 255
                            },
                            "individual_activity_id": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Individual activities only.",
                                "maxLength": 255
                            },
                            "custom_fields": {
                                "type": [
                                    "array",
                                    "null"
                                ],
                                "description": "Extra label/value pairs printed in the seller block.",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "label": {
                                            "type": "string",
                                            "maxLength": 255
                                        },
                                        "value": {
                                            "type": "string",
                                            "maxLength": 255
                                        }
                                    },
                                    "required": [
                                        "label",
                                        "value"
                                    ]
                                }
                            }
                        }
                    },
                    "products": {
                        "type": "array",
                        "description": "Invoice lines. Each line carries exactly one of `price`, `total` or `total_incl_vat`.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "name": {
                                    "type": "string",
                                    "examples": [
                                        "Consulting"
                                    ],
                                    "maxLength": 255
                                },
                                "units": {
                                    "type": "string",
                                    "examples": [
                                        "h"
                                    ],
                                    "maxLength": 255
                                },
                                "quantity": {
                                    "type": "number",
                                    "examples": [
                                        2
                                    ]
                                },
                                "price": {
                                    "type": [
                                        "number",
                                        "null"
                                    ],
                                    "description": "Unit price excluding VAT. Mutually exclusive with `total` and `total_incl_vat`.",
                                    "examples": [
                                        50
                                    ]
                                },
                                "total": {
                                    "type": [
                                        "number",
                                        "null"
                                    ],
                                    "description": "Line total excluding VAT. Mutually exclusive with `price` and `total_incl_vat`."
                                },
                                "total_incl_vat": {
                                    "type": [
                                        "number",
                                        "null"
                                    ],
                                    "description": "Line total including VAT. Mutually exclusive with `price` and `total`."
                                },
                                "vat_percentage": {
                                    "type": [
                                        "number",
                                        "null"
                                    ],
                                    "description": "VAT rate, 0-100. Required whenever `seller.vat_code` is sent and, with `use_default_seller_info`, on the\n`*vat_invoice` types. On non-VAT types the value is ignored and stored as null.",
                                    "examples": [
                                        21
                                    ],
                                    "minimum": 0,
                                    "maximum": 100
                                }
                            },
                            "required": [
                                "name",
                                "units",
                                "quantity"
                            ]
                        },
                        "minItems": 1
                    },
                    "payment_options": {
                        "type": [
                            "array",
                            "null"
                        ],
                        "description": "Payment details printed on the invoice.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "type": {
                                    "description": "`bank` takes the bank fields below; `other` takes free-form `fields`.",
                                    "$ref": "#/components/schemas/PaymentOptionType"
                                },
                                "bank_account": {
                                    "type": "string",
                                    "description": "IBAN. Required for `bank`, prohibited otherwise.",
                                    "examples": [
                                        "LT601010012345678901"
                                    ],
                                    "maxLength": 255
                                },
                                "bank_name": {
                                    "type": "string",
                                    "description": "Required for `bank`, prohibited otherwise.",
                                    "maxLength": 255
                                },
                                "routing_or_sort_number": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "maxLength": 255
                                },
                                "swift_bic_code": {
                                    "type": [
                                        "string",
                                        "null"
                                    ],
                                    "maxLength": 255
                                },
                                "fields": {
                                    "type": [
                                        "array",
                                        "null"
                                    ],
                                    "description": "Required for `other`.",
                                    "items": {
                                        "type": "object",
                                        "properties": {
                                            "label": {
                                                "type": "string",
                                                "maxLength": 255
                                            },
                                            "value": {
                                                "type": "string",
                                                "maxLength": 255
                                            }
                                        },
                                        "required": [
                                            "label",
                                            "value"
                                        ]
                                    }
                                }
                            },
                            "required": [
                                "type"
                            ]
                        }
                    }
                },
                "required": [
                    "type",
                    "invoice_date",
                    "series",
                    "currency",
                    "buyer",
                    "seller",
                    "products"
                ],
                "title": "InvoiceInput"
            },
            "InvoiceItem": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "name": {
                        "type": "string"
                    },
                    "price": {
                        "type": "number"
                    },
                    "vat_percentage": {
                        "type": [
                            "number",
                            "null"
                        ]
                    },
                    "quantity": {
                        "type": "number"
                    },
                    "units": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "name",
                    "price",
                    "vat_percentage",
                    "quantity",
                    "units"
                ],
                "title": "InvoiceItem"
            },
            "InvoiceLanguage": {
                "type": "string",
                "description": "Language of the PDF and the public share page.\n",
                "enum": [
                    "en",
                    "lt",
                    "es",
                    "de",
                    "fr"
                ],
                "title": "InvoiceLanguage"
            },
            "InvoiceType": {
                "type": "string",
                "description": "The three `*vat_invoice` types require `vat_percentage` on every line and, when `seller` is sent, `seller.vat_code`.\n",
                "enum": [
                    "regular_invoice",
                    "vat_invoice",
                    "preliminary_invoice",
                    "preliminary_vat_invoice",
                    "credit_invoice",
                    "credit_vat_invoice"
                ],
                "title": "InvoiceType"
            },
            "LabelValue": {
                "type": "object",
                "properties": {
                    "label": {
                        "type": "string"
                    },
                    "value": {
                        "type": "string"
                    }
                },
                "required": [
                    "label",
                    "value"
                ],
                "title": "LabelValue"
            },
            "PaymentOption": {
                "type": "object",
                "properties": {
                    "type": {
                        "$ref": "#/components/schemas/PaymentOptionType"
                    },
                    "bank_account": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "bank_name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "routing_or_sort_number": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "swift_bic_code": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "fields": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/LabelValue"
                        }
                    }
                },
                "required": [
                    "type",
                    "fields"
                ],
                "title": "PaymentOption"
            },
            "PaymentOptionType": {
                "type": "string",
                "description": "`bank` carries the bank account fields; `other` carries free-form label/value `fields`.\n",
                "enum": [
                    "bank",
                    "other"
                ],
                "title": "PaymentOptionType"
            },
            "PaymentStatus": {
                "type": "string",
                "enum": [
                    "not_paid",
                    "paid"
                ],
                "title": "PaymentStatus"
            },
            "Profile": {
                "type": "object",
                "properties": {
                    "business_id": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "business_title": {
                        "type": "string"
                    },
                    "business_type": {
                        "$ref": "#/components/schemas/BusinessType"
                    },
                    "address": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "vat_code": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "company_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Present when the business is a company."
                    },
                    "company_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Present when the business is a company."
                    },
                    "individual_activity_id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Present when `business_type` is `individual_activity`."
                    },
                    "first_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Present when `business_type` is `individual_activity`."
                    },
                    "last_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Present when `business_type` is `individual_activity`."
                    }
                },
                "required": [
                    "business_id",
                    "business_title",
                    "business_type",
                    "address",
                    "vat_code"
                ],
                "title": "Profile"
            },
            "DeletedResource": {
                "type": "object",
                "description": "Identifies a resource that no longer exists.",
                "required": [
                    "id"
                ],
                "properties": {
                    "id": {
                        "type": "string",
                        "format": "uuid"
                    }
                }
            }
        },
        "responses": {
            "AuthenticationException": {
                "description": "Unauthenticated",
                "content": {
                    "application/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            },
            "ValidationException": {
                "description": "Validation error",
                "content": {
                    "application/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Errors overview."
                                },
                                "errors": {
                                    "type": "object",
                                    "description": "A detailed description of each field that failed validation.",
                                    "additionalProperties": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                }
                            },
                            "required": [
                                "message",
                                "errors"
                            ]
                        }
                    }
                }
            },
            "AuthorizationException": {
                "description": "Authorization error",
                "content": {
                    "application/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            }
        },
        "parameters": {
            "webhookSignature": {
                "name": "Signature",
                "in": "header",
                "required": true,
                "description": "Lowercase hex HMAC-SHA256 of the raw request body, keyed with the webhook's signing secret (`whsec_…`). Recompute it over the exact bytes received and compare with a constant-time function before trusting the payload. No timestamp or event-id header is sent.",
                "schema": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$"
                },
                "example": "5f1c0d8f9a7e4b2c6d3e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c"
            }
        }
    }
}