{
  "openapi": "3.1.1",
  "info": {
    "title": "Visma e-conomic OpenAPI Q2C",
    "description": "# Changelog\n<details>\n<summary>Click to see changelog.</summary>\n\n| Version | Description | Date |\n|:--------|:------------|:-----|\n|6.0.0| Documentation improved and data models now better reflect the actual contracts. | August, 2026|\r\n|5.3.0| Added GET endpoint on draft invoices for getting the count, to be used together with paged. | July, 2026|\r\n|5.2.0| Added PUT endpoint on draft invoices for sensitive data (`/invoices/drafts/{draftInvoiceNumber}/sensitive-data`). | June, 2026|\r\n|5.1.0| Added Draft Invoice endpoints. | January, 2026|\r\n|5.0.0| Changed the /batch url to /bulk url in draft invoices lines endpoints. | October 2025|\r\n|4.1.0| Added /invoices/drafts/{documentId}/lines/batch endpoint for batch creation of draft invoice lines. | September 2025|\r\n|4.0.0| Dimensions deprecated. Please use Dimensions API instead. | October, 2024|\r\n|3.0.1| Updated authorization policy for dimensions endpoints. They now require access to both sales and dimensions. This change affects all api versions. | 08/04/2024|\r\n|3.0.0| <ul><li>[`POST`](#tag/DraftInvoiceLines/operation/CreateDraftInvoiceLine), [`PUT`](#tag/DraftInvoiceLines/operation/UpdateDraftInvoiceLineById), [`DELETE`](#tag/DraftInvoiceLines/operation/DeleteDraftInvoiceLineById) endpoints added for [`draftInvoiceLines`](#tag/DraftInvoiceLines)</li><li>Object versioning added for draft invoice lines to support `PUT`</li><li>[`Dimensions`](#tag/Dimensions) endpoints added for sales documents.</li></ul> | 08/04/2024|\r\n|2.0.2| Fixed response schemas for GetAll and GetPaged endpoints. | 26/03/2024|\r\n|2.0.1| Updated descriptions for model properties. | 01/11/2023|\r\n|2.0.0| Updated the schema for productNumber from int to string. e-conomic uses strings for product numbers, and it was our mistake to start with int. | 13/10/2023|\r\n|1.0.0| [`quoteLines`](#tag/QuoteLines), [`orderLines`](#tag/OrderLines), [`draftInvoiceLines`](#tag/DraftInvoiceLines), [`bookedInvoiceLines`](#tag/BookedInvoiceLines) endpoints added. | 27/09/2023|\n\n</details>\n\n# TL;DR\n\n**Create tokens as instructed [here](https://www.e-conomic.com/developer/connect) and then add these three headers to your requests:**\n\n| Header                | Value                      | What is this?                                                |\n| :-------------------- | :------------------------- | :----------------------------------------------------------- |\n| X-AppSecretToken      | YOUR_PRIVATE_TOKEN         | This identifies your app. This is your secret token. Try using the value `demo`. |\n| X-AgreementGrantToken | YOUR_AGREEMENT_GRANT_TOKEN | This identifies the grant issued by an agreement, to allow your app to access the agreements data. Try using the value `demo`. |\n| Content-Type          | application/json           | We’re a JSON based API. This tells us that you agree with us on using JSON. |\n\n**Optional headers:**\n\n| Header                | Value                      | What is this?                                                |\n| :-------------------- | :------------------------- | :----------------------------------------------------------- |\n| Idempotency-Key       | YOUR_IDEMPOTENCY_KEY       | This represents your own unique idempotency key. Enables you to make use of our [Idempotency Tokens](#section/Retrieving-data/Idempotency-tokens) feature. You can't use this feature with GET requests. |\n\n### Examples\n\n#### jQuery\n\n```javascript/jQuery\n$.ajax({\n    url: \"https://apis.e-conomic.com/q2capi/v6.0.0/the_resource\",\n    dataType: \"json\",\n    headers: {\n        'X-AppSecretToken': \"demo\",\n        'X-AgreementGrantToken': \"demo\",\n        'Accept': \"application/json\"\n    },\n    type: \"GET\"\n})\n    .always(function (data) {\n    $(\"#output\").text(JSON.stringify(data, null, 4));\n});\n```\n\n#### cURL\n\n```curl\ncurl -H \"X-AppSecretToken: demo\" -H \"X-AgreementGrantToken: demo\" https://apis.e-conomic.com/q2capi/v6.0.0/the_resource\n```\n\n\n\n# Introduction\n\nWelcome to the **Visma e-conomic OpenAPI** documentation!\n\nThe e-conomic API is a document-based JSON REST API. \n\nFor more in-depth information about e-conomic itself, please have a look at the e-copedia [http://wiki.e-conomic.dk](http://wiki.e-conomic.dk/).\n\n## Usage\n\n- **Generating a client** can easily be done using tools like [swagger-codegen](https://github.com/swagger-api/swagger-codegen) or others that work with [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification) specs.\n\n\n## Versioning\n\nAPI releases are versioned using a three-part versioning scheme: `{major version}.{minor version}.{patch version}`.\n\nWe broadly follow [Semantic Versioning](https://semver.org/) principles when versioning the API. The major version number is incremented when a breaking change occurs. \n\nThe format is:\n\n`/{resource-api}/v{major version}.{minor version}.{patch version}/{resource-name}`\n\nEach value of the above are integers and you should configure the specific version in each API call. \n\nAn example could be: `/subscriptionsapi/v1.0.0/subscriptions`\n\nTo track the changes of versions, please see our [changelog](#section/Changelog).\n\nWe reserve the right to deprecate versions at intervals since this allows for moving into a friendly environment for you faster.\n\n## Demo authentication\n\nIf you wish to try out the API before registering a developer agreement, you can do this by using the demo agreement, which mimics the authentication flow you will have to use when you create your app. All you have to do is specify HTTP header tokens `X-AgreementGrantToken: demo` and `X-AppSecretToken: demo`. Note however that you can only do GET requests with the demo agreement. If you want full access to our API's, you will need to register.\n\n# Retrieving data\n\nOur data is exposed as collections of items. Each item has many properties, with one property as a unique identifier, usually called `number` or `id`. You can always get a single item if you already know the unique identifier. In case the unique identifier is not known, you can always search the collection and retrieve an array of items that satisfy the search criteria, or retrieve only the count of items that satisfy the search criteria. When you search for items in a collection, you can always use filtering, sorting and pagination. When it comes to pagination, we offer two distinct approaches available on separate endpoints. You can read more about filtering, sorting and pagination in the following sections. \n\n## Filtering\n\nFiltering is enabled on all collection endpoints but not on all properties.\n\nFiltering on collections can be done using the query string parameter `filter`. A filter is made up of a set of predicates and follows a syntax inspired by mongoDB. A predicate is made up of a property name, an operator, and a value.\n\nExample: `?filter=name$eq:Joe`\n\nThis matches all resources with the value Joe in the property name.\n\nPredicates can be chained using either of the logical operators AND and OR.\n\nExample: `?filter=name$eq:Joe$and:city$like:*port`\n\nFiltering on strings is case insensitive.\n\n#### Filterable properties\nInformation about what properties allow filtering and on what operators can be found in the property in the schema for the collection. Each property that allows filtering has the property `\"x-filterable\"` in combination with `operators` set. If you try to filter on something that isn’t allowed the server will respond with a status code 400.\n\n#### Specifying Operator affinity\nIf you want to control the operator affinity then you can use parentheses.\n\nAn example is: `?filter=name$eq:Joe$and:(city$like:*port$or:age$lt:40)`\n\n#### URL Encoding\nURL parameter values should always be URL compatible. Always URL encode filter strings.\n\n#### Filter Operators\nThe possible filtering operators are:\n\n| Operator   | Syntax |\n| --------   | ------ |\n|Equals | $eq:|\n|Not equals | $ne:|\n|Greater than | $gt:|\n|Greater than or equal | $gte:|\n|Less than | $lt:|\n|Less than or equal | $lte:|\n|Substring match\t| $like:|\n|And also | $and:|\n|Or else | $or:|\n|In | $in:|\n|Not In | $nin:|\n\n#### Substring matching\n\nThe `$like:` operator supports both using wildcards (*) and not using wildcards. If no wildcards are used, the expression is considered a `contains` expression and effectively becomes a filter with a wildcard at the start of the string and one at the end of the string. This operator is only allowed on some properties.\n\n#### Escaping special characters in your filter\nTo not interfere with the parsing of the filter expression, certain escape sequences are necessary.\n\n- “$” is escaped with “$$”\n- “(” is escaped with “$(”\n- “)” is escaped with “$)”\n- “*” is escaped with “$*”\n- “,” is escaped with “$,”\n- “[” is escaped with “$[”\n- “]” is escaped with “$]”\n\n#### Using null values in your filter\nShould you want to filter for the nonexistence of a property (i.e. null value) you can use the null escape sequence.\n\n`$null:`\n\n#### Using in and not in operators\nTo determine whether a specified value matches any value in (or not in) a list you filter using the `$in:` or `$nin:` operator. The list to filter by has to be enclosed in brackets and values separated by commas.\n\n`customerNumber$in:[2,5,7,22,45]`\n\n\nIt is possible to also use the `$null:` keyword if you wish to include that in the filter. The max supported length of an array using the `$in:` or `$nin:` operator is 200.\n\n\n## Sorting\n\nSorting on strings is case insensitive.\n\n### Sort ascending\n\nSorting on collections can be done using the query string parameter ‘sort’.\n\n```\n?sort=name\n```\n\n### Sort descending\n\nThe default sort direction is ascending, but this can be turned by prepending a minus (-).\n\n```\n?sort=-name\n```\n\n### Sort by multiple properties\n\nIf you need to sort by multiple properties these can just be separated by commas. Mixing of directions is allowed.\n\n```\n?sort=-name,age\n```\n\n### Sort alphabetically\n\nIn certain cases, you might want to enforce that even numeric values are sorted alphabetically, so 1000 is less than 30. In those cases, you can prepend the sort property with a tilde (~).\n\n```\n?sort=~name\n```\n\n#### Sortable properties\nInformation about what properties are sortable can be found in the schema for the collection. Each property that allows sorting has the property `\"x-sortable\": true` set.\n\n#### Important: Sorting with pagination\nPlease note that sorting is **only available with classic pagination** (using `skippages` and `pagesize`). Sorting is **not supported when using cursor-based pagination**, as the cursor points to a specific record with a fixed ordering.\n\n\n## Pagination\n\nWhen it comes to retrieving a collection of items, you can use two distinct approaches:\n\n* **Cursor-based pagination** (continued loading of items using a `cursor` as a query parameter to get the next page of items)\n  * This is the recommended approach, and the one you should use by default.\n  * The endpoint naming scheme is **\"Retrieve all `Items`\"**. (Usage: `/{ITEM}?cursor={CURSOR_VALUE}`)\n  * The maximum number of items returned in a single call is defined in the `x-cursor-page-size` extension of the response type. Usually, the size is 1000, but in some cases, where we explicitly state so, it can be smaller.\n\n\n* **Classic pagination** (limited functionality*. Specify `skippages` and `pagesize ` as query parameters to get a specific page of items)\n  * You should only consider using classic pagination, if you rely on loading pages (i.e. for list views or table/grid-based UI's).\n  * The endpoint naming scheme is **\"Retrieve a page of `Items`\"**. (Usage: `/{ITEM}/paged?skippages=0&pagesize=20`)  \n    \\* It's important to note that there is a limit of 10.000 items using this approach. Any items outside of the first 10.000 items will not be loaded.\n\nPlease bear in mind that the two approaches are supported by **separate endpoints**. To use classic pagination, add `/paged` to your request URL.\n\nIf you need to know the total count of items that you can expect to get from your search, you can use a separate endpoint called **\"Retrieve the number of `Items`\"**.  \nYou can also use the result of this endpoint to calculate the pagination navigation buttons for a table/grid-based UI.\n\n\n### Which approach should you use?\nWe highly recommend that you use cursor-based pagination because:\n- It is more performant and offers much faster retrieval of items;\n- It can be used for very large collections of many thousands or millions of items, whereas classic pagination is limited to only returning 10.000 results, everything else is ignored;  \n  Classic pagination is only appropriate when you have an app with a table/grid-based UI.\n\n### Cursor-based pagination\n\n#### How it works\n\nWhen you search for items in a large collection, the response will contain a first set of items and a cursor that you can use in a subsequent request to get the next series of items. This way you can retrieve the next set of items only when needed (if the first set suffices, you don't need to send a second request).\n\nThe first set of items usually consists of 1000 results. If the cursor is not present in the response, it means that there are no more items in the results. \n\nPlease note that the cursor represents the `identifier` of the first `item` on the next set and it should not be mistaken for the number of items which are yet to be displayed.\n\n##### Real world example\n\nI want to retrieve all subscriptions.\n\n1) I send a request to https://apis.e-conomic.com/subscriptionsapi/v1.0.0/subscriptions \n   and get back an array of 1.000 subscriptions, and a cursor with value 34781\n\n2) I send a request for the next items in the resulting collection:\n   https://apis.e-conomic.com/subscriptionsapi/v1.0.0/subscriptions?cursor=34781\n   and get back an array of 1.000 subscriptions and a cursor with value 87695\n\n3) I send a request for the next items in the result:\n   https://apis.e-conomic.com/subscriptionsapi/v1.0.0/subscriptions?cursor=87695\n   and get back an array of 56 items and no cursor.\n   No cursor means I have retrieved all the subscriptions, i.e. I have reached the end of the list.\n\n### Classic pagination\n\nIf no parameters are used, the collection endpoint returns 20 items at a time. URL parameters allow you to increase this to up to 100 items or to skip pages if necessary.\n\n##### Real world example\n\nI want to show a grid with page size of 50 and pagination navigation buttons.\n\n1) I send a request to see how many subscriptions there are in the collection:  \n   `https://apis.e-conomic.com/subscriptionsapi/v1.0.0/subscriptions/count`  \n   I get the number of subscriptions in the collection, `2056`, and I can calculate the number of pages to be 2056 divided by 50 = 40 with 6 as remainder, meaning I have 41 pages total. I can then use this to present the user the navigation buttons.\n\n\n2) I send a request to retrieve the first page of subscriptions that my user will see:  \n   `https://apis.e-conomic.com/subscriptionsapi/v1.0.0/subscriptions/paged?pagesize=50&sort=-number`  \n   with this I get back an array of 50 subscriptions, sorted by number in descending order.\n\n\n3) Now if the user wants to see page number 6, I'll send a new request, skipping the first 5 pages to get the subscriptions from page number 6:  \n   `https://apis.e-conomic.com/subscriptionsapi/v1.0.0/subscriptions/paged?pagesize=50&skippages=5&sort=-number`  \n   I get back an array of 50 subscriptions that belong to page number 6 when sorting by number in descending order.\n\n\n\n### Number of items in a collection\n\nAs mentioned before we offer endpoint to get the count of items in the collection. You can also use this info for calculation of pagination navigation in case of classic pagination.\n\nExample `https://apis.e-conomic.com/subscriptionsapi/v1.0.0/subscriptions/count`\n\n\n## HTTP Status Codes\n\nThe Open API returns these HTTP status codes.\n\n| Code | Text                   | Description                                                  |\n| :--- | :--------------------- | :----------------------------------------------------------- |\n| 200  | OK                     | Everything is OK                                             |\n| 201  | Created                | When you create resources, this is what you get. This will be accompanied by the created resource in the body and a location header with a link to the created resource. |\n| 204  | No Content             | In certain cases there is nothing to return. So we will let you know by returning a 204. |\n| 400  | Bad Request            | The request you made was somehow malformed. A malformed request could be failed validation on creation or updating. If you try to filter on something that isn’t filterable this is also what you’ll see. Whenever possible we will also try to include a developer hint to help you get around this issue. |\n| 401  | Unauthorized           | The credentials you supplied us with weren’t correct, or perhaps you forgot them altogether. If an agreement has revoked the grant they gave your app, this is what you will see. |\n| 403  | Forbidden              | You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued. |\n| 404  | Not Found              | This is returned when you try to request something that doesn’t exist. This could be a resource that has been deleted or just a URL you tried to hack. If you see a lot of these, it could be an indication that you aren’t using the links provided by the API. You should never need to concatenate any URLs. The API should provide you with the links needed. |\n| 405  | Method Not Allowed     | Not all endpoints support all HTTP methods. If you try issue a PUT request to a collection resource this is what you get. |\n| 409  | Conflict               | The request cannot be completed due to a conflict with the current state of the target resource. Retrieve the resource/object and try the update again. This is needed in order to prevent you from rolling back another user's update. |\n| 415  | Unsupported Media Type | Our API is a JSON api. If you ask us to give you anything else, we give you this, and tell you why in the JSON body of the response. |\n| 500  | Internal Server Error  | We don’t like to see these, and they are flagged in our logs. When you see this, something went wrong on our end. Either try again, or contact our support. |\n\n\n## Required and Readonly Properties\n\nSince OpenAPI allows client generation based on the specification, we decided to use the same model/schema in our for both read and write endpoints where possible.\n\nThis led us to chose not to have the Id/Number in the URL parameter for PUT requests, but to use the one from the body, so there is no confusion.\n\nWhen a property is marked as `required` it means you need to provide a value on each POST and PUT requests.\n\nWhen a property is marked as `readonly` it means you should provide the same value you get in the GET requests, or do not send the property in the JSON at all (skip it).\n\n## Resource encoding\n\nAll non-alphanumeric characters in resource URLs are standard URL encoded. Please refer to standard URL encoding.\n\n## Implementation specifics\n\nHelpful details to know when implementing e-conomic REST.\n\n### Booleans\n\nBooleans should only be expected to be represented in responses when true. A false boolean is omitted from response body. The same logic applies to write operations such as POST and PUT.\n\n### Nulling\n\nWe do not generally accept null as a value and a validation exception should be expected. To null a property you must exclude it from your JSON on the write operation.\n\n## Object version\n\nObjectVersion is the mechanism that enforces updates only on latest state of an object.\nObjectVersion property is mandatory in Put Requests.\nObjectVersion property is retrieved on Get Request and needs to be included in Put Request.\nIf object was modified between Get and Put requests, Put request will fail with error code `409 Conflict`\n\n```\n{\n  \"message\": \"Update conflict. Version does not match.\",\n  \"developerHint\": \"The resource has been updated by another user. Retrieve the resource/object and try the update again. This is needed in order to prevent you from rolling back another user's update.\",\n  \"logId\": \"09580053-1141-4e7f-85e1-bed8600e0278\",\n  \"logTimeUtc\": \"2021-11-04T09:07:56\",\n  \"property\": \"version\"\n}\n```\n\n## Idempotency tokens\n Idempotency tokens are unique keys that help maintain the integrity of operations on the API’s. These tokens prevent accidental duplication of requests, ensuring that the same operation is not performed multiple times, even if the same request is sent repeatedly.\n \n When making a request, you can set `Idempotency-Key` header with your own unique value for that specific request. In case of a network failure, if you don't get the response, you can retry the request with the same value for the header. Our system will prevent duplicate requests, instead you will get the original response from our cache. \n \n Keep in mind that this is cached for only **one hour** window. \n \n When we return a response from the cache, we set a response header `X-ResultFromCache` to true.\n\n It’s important to note that **you will be responsible for generating and keeping track of these keys**.\n\n The [Idempotency Tokens feature](https://techtalk.e-conomic.com/idempotency-tokens-in-e-conomic-apis/) is not available for GET requests.\n\n## The LastUpdated property of resources\nThe `LastUpdated` property shows the date when a resource was last updated. A resource is considered updated when any property in the model has been changed. If there aren’t any changes, `LastUpdated` will equal the creation date.\n \nPlease bear in mind that not all resources have a LastUpdated property. Also, sometimes the LastUpdated property is modified by changes to a different model, as is the case with sales documents.\nFor example, when an invoice line is created, the LastUpdated field on the invoice is modified.\n \nThe main usage for this property is to help retrieve only data that has been changed within a certain interval. This will save processing and network time spent on the client side.\n \nUsage example: https://apis.e-conomic.com/q2capi/v6.0.0/the_resource?filter=lastUpdated$gt:2024-02-24\nThis will return all resources which have been updated since 24.02.2024.\n      \n## Custom extensions in OpenAPI specification\n\nIn the specification file, there are some custom extensions that developers can make use of when consuming endpoints. Those extensions are always prefixed by `x-`.\n\n1) `x-required-roles`: The list of roles that are required for each group of endpoints.\n2) `x-error-codes`: The list of error codes that are potentially returned from each group of endpoints.\n3) `x-cursor-page-size`: The maximum number of items in `CursorResults` that can be returned in a single call.\n\n\n# Authentication\n\n**Create tokens as instructed [here](https://www.e-conomic.com/developer/connect) and then add these two authentication headers to your requests:**\n\n<SecurityDefinitions />",
    "contact": {
      "url": "https://www.e-conomic.com/",
      "email": "api@e-conomic.com"
    },
    "version": "6.0.0",
    "x-logo": {
      "url": "",
      "altText": "Visma e-conomic"
    }
  },
  "servers": [
    {
      "url": "https://apis.e-conomic.com/q2capi/v6.0.0/"
    }
  ],
  "paths": {
    "/invoices/booked/lines/paged": {
      "get": {
        "tags": [
          "BookedInvoiceLines"
        ],
        "summary": "Retrieve paged BookedInvoiceLines",
        "description": "Use this endpoint to retrieve a page of Booked Invoice Lines for all booked invoices.",
        "operationId": "GetPageOfBookedInvoiceLines",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Use this parameter to set the page size. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Use this parameter to set the page size. [Pagination instructions](#section/Retrieving-data/Pagination)",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "skipPages",
            "in": "query",
            "description": "Use this parameter to set number of pages to skip. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maximum": 100,
              "minimum": 0,
              "type": "integer",
              "description": "Use this parameter to set number of pages to skip. [Pagination instructions](#section/Retrieving-data/Pagination)",
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BookedInvoiceLine"
                  }
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/booked/lines": {
      "get": {
        "tags": [
          "BookedInvoiceLines"
        ],
        "summary": "Retrieve all BookedInvoiceLines",
        "description": "Use this endpoint to retrieve all Booked Invoice Lines for all booked invoices in bulk.  \nThe maximum number of items returned in a single call is 1000.  \nUse the continuation cursor parameter to set the cursor for retrieval of the next set of data.  \nPlease check the [pagination instructions](#section/Retrieving-data/Pagination).",
        "operationId": "GetAllBookedInvoiceLines",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "description": "Use this parameter to set the continuation cursor for paging. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maxLength": 50,
              "minLength": 0,
              "type": "string",
              "description": "Use this parameter to set the continuation cursor for paging. [Pagination instructions](#section/Retrieving-data/Pagination)"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [filtering instructions](#section/Retrieving-data/Filtering)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Array of objects along with a cursor.",
                  "$ref": "#/components/schemas/BookedInvoiceLineCursorResults"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/booked/lines/count": {
      "get": {
        "tags": [
          "BookedInvoiceLines"
        ],
        "summary": "Retrieve the number of Booked Invoice Lines",
        "description": "Call this endpoint to get the number of Booked Invoice Lines for all booked invoices. You can use filtering as well.",
        "operationId": "GetNumberOfBookedInvoiceLines",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/booked/{documentId}/lines/{number}": {
      "get": {
        "tags": [
          "BookedInvoiceLines"
        ],
        "summary": "Retrieve single BookedInvoiceLine",
        "description": "Use this endpoint to retrieve a line belonging to a booked invoice.",
        "operationId": "GetBookedInvoiceLineById",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookedInvoiceLine"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "**Resource not found.** The resource you have been looking for does not exist.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/booked/{documentId}/lines": {
      "get": {
        "tags": [
          "BookedInvoiceLines"
        ],
        "summary": "Retrieve all BookedInvoiceLines of a booked invoice",
        "description": "Use this endpoint to retrieve all the lines belonging to a booked invoice.",
        "operationId": "GetBookedInvoiceLinesForBookedInvoice",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BookedInvoiceLine"
                  }
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts/{documentId}/lines/{number}": {
      "get": {
        "tags": [
          "DraftInvoiceLines"
        ],
        "summary": "Retrieve single DraftInvoiceLine",
        "description": "Use this endpoint to retrieve a single draft invoice line by the number of the draft invoice and the number of the line.",
        "operationId": "GetDraftInvoiceLineById",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftInvoiceLine"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "**Resource not found.** The resource you have been looking for does not exist.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "DraftInvoiceLines"
        ],
        "summary": "Delete DraftInvoiceLine",
        "description": "Use this endpoint to delete a single draft invoice line.  \nWhen a line is deleted, the userInterfaceNumber of the remaining lines is adjusted.",
        "operationId": "DeleteDraftInvoiceLineById",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "**Resource not found.** The resource you have been looking for does not exist.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts/{documentId}/lines": {
      "get": {
        "tags": [
          "DraftInvoiceLines"
        ],
        "summary": "Retrieve all draft invoice lines for a draft invoice",
        "description": "Use this endpoint to retrieve all the lines belonging to a draft invoice.",
        "operationId": "GetDraftInvoiceLinesForDraftInvoice",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DraftInvoiceLine"
                  }
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "DraftInvoiceLines"
        ],
        "summary": "Create DraftInvoiceLine",
        "description": "Use this endpoint to create a single draft invoice line on a draft invoice.",
        "operationId": "CreateDraftInvoiceLine",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DraftInvoiceLine"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResult"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "DraftInvoiceLines"
        ],
        "summary": "Update DraftInvoiceLine",
        "description": "Use this endpoint to update a single draft invoice line.  \nThe line to update is identified by the number property in the request body.",
        "operationId": "UpdateDraftInvoiceLineById",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DraftInvoiceLine"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "**Resource not found.** The resource you have been looking for does not exist.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "**Update conflict. Object version does not match.** The resource has been updated by another user. Retrieve the resource/object and try the update again. This is needed in order to prevent you from rolling back another user's update.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts/lines/paged": {
      "get": {
        "tags": [
          "DraftInvoiceLines"
        ],
        "summary": "Retrieve paged DraftInvoiceLines",
        "description": "Use this endpoint to retrieve a page of Draft Invoice Lines for all draft invoices.",
        "operationId": "GetPageOfDraftInvoiceLines",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Use this parameter to set the page size. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Use this parameter to set the page size. [Pagination instructions](#section/Retrieving-data/Pagination)",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "skipPages",
            "in": "query",
            "description": "Use this parameter to set number of pages to skip. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maximum": 100,
              "minimum": 0,
              "type": "integer",
              "description": "Use this parameter to set number of pages to skip. [Pagination instructions](#section/Retrieving-data/Pagination)",
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DraftInvoiceLine"
                  }
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts/lines": {
      "get": {
        "tags": [
          "DraftInvoiceLines"
        ],
        "summary": "Retrieve all DraftInvoiceLines",
        "description": "Use this endpoint to retrieve all Draft Invoice Lines for all draft invoices in bulk.",
        "operationId": "GetAllDraftInvoiceLines",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "description": "Use this parameter to set the continuation cursor for paging. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maxLength": 50,
              "minLength": 0,
              "type": "string",
              "description": "Use this parameter to set the continuation cursor for paging. [Pagination instructions](#section/Retrieving-data/Pagination)"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [filtering instructions](#section/Retrieving-data/Filtering)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Array of objects along with a cursor.",
                  "$ref": "#/components/schemas/DraftInvoiceLineCursorResults"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts/lines/count": {
      "get": {
        "tags": [
          "DraftInvoiceLines"
        ],
        "summary": "Retrieve the number of Draft Invoice Lines",
        "description": "Call this endpoint to get the number of Draft Invoice Lines for all draft invoices.",
        "operationId": "GetNumberOfDraftInvoiceLines",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts/{documentId}/lines/bulk": {
      "post": {
        "tags": [
          "DraftInvoiceLines"
        ],
        "summary": "Create multiple invoice lines in bulk",
        "description": "Use this endpoint to create up to 100 draft invoice lines at once.  \nThe lines are created atomically: if any line fails validation, no lines are created.  \nThe response contains the assigned line numbers in the same order as the request.",
        "operationId": "PostBulkInvoiceLines",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DraftInvoiceLineBatchRequest"
              },
              "example": {
                "lines": [
                  { }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftInvoiceLineCreatedResultArray"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts/{number}": {
      "get": {
        "tags": [
          "DraftInvoices"
        ],
        "summary": "Retrieve single DraftInvoice",
        "description": "Use this endpoint to retrieve a draft invoice by its documentId.",
        "operationId": "GetDraftInvoiceByDocumentId",
        "parameters": [
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftInvoice"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "**Resource not found.** The resource you have been looking for does not exist.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "DraftInvoices"
        ],
        "summary": "Update DraftInvoice",
        "description": "Use this endpoint to update a single draft invoice",
        "operationId": "UpdateDraftInvoice",
        "parameters": [
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DraftInvoice"
              },
              "example": {
                "customerNumber": 0,
                "customerName": "string",
                "date": "2019-08-24T14:15:22Z",
                "currencyCode": "string",
                "layoutNumber": 0,
                "termOfPaymentNumber": 0,
                "vatZoneNumber": 0
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "**Resource not found.** The resource you have been looking for does not exist.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "**Update conflict. Object version does not match.** The resource has been updated by another user. Retrieve the resource/object and try the update again. This is needed in order to prevent you from rolling back another user's update.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "DraftInvoices"
        ],
        "summary": "Delete DraftInvoice",
        "description": "Use this endpoint to delete a single draft invoice.",
        "operationId": "DeleteDraftInvoiceByDocumentId",
        "parameters": [
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "**Resource not found.** The resource you have been looking for does not exist.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts": {
      "get": {
        "tags": [
          "DraftInvoices"
        ],
        "summary": "Retrieve all draft invoices",
        "description": "Use this endpoint to retrieve draft invoices. \nDraft invoices that are archived or have no customer are not returned.",
        "operationId": "GetDraftInvoices",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "description": "Use this parameter to set the continuation cursor for paging. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maxLength": 50,
              "minLength": 0,
              "type": "string",
              "description": "Use this parameter to set the continuation cursor for paging. [Pagination instructions](#section/Retrieving-data/Pagination)"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [filtering instructions](#section/Retrieving-data/Filtering)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Array of objects along with a cursor.",
                  "$ref": "#/components/schemas/DraftInvoiceCursorResults"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "DraftInvoices"
        ],
        "summary": "Create DraftInvoice",
        "description": "Use this endpoint to create a single draft invoice",
        "operationId": "CreateDraftInvoice",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DraftInvoice"
              },
              "example": {
                "customerNumber": 0,
                "customerName": "string",
                "date": "2019-08-24T14:15:22Z",
                "currencyCode": "string",
                "layoutNumber": 0,
                "termOfPaymentNumber": 0,
                "vatZoneNumber": 0
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResult"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts/count": {
      "get": {
        "tags": [
          "DraftInvoices"
        ],
        "summary": "Retrieve the number of DraftInvoices",
        "description": "Use this endpoint to get the number of draft invoices. \nDraft invoices that are archived or have no customer are not counted.",
        "operationId": "GetNumberOfDraftInvoices",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts/paged": {
      "get": {
        "tags": [
          "DraftInvoices"
        ],
        "summary": "Retrieve paged draft invoices",
        "description": "Use this endpoint to retrieve paged draft invoices. \nDraft invoices that are archived or have no customer are not returned.",
        "operationId": "GetDraftInvoicesPaged",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Use this parameter to set the page size. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Use this parameter to set the page size. [Pagination instructions](#section/Retrieving-data/Pagination)",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "skipPages",
            "in": "query",
            "description": "Use this parameter to set number of pages to skip. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maximum": 100,
              "minimum": 0,
              "type": "integer",
              "description": "Use this parameter to set number of pages to skip. [Pagination instructions](#section/Retrieving-data/Pagination)",
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DraftInvoice"
                  }
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/invoices/drafts/{draftInvoiceNumber}/sensitive-data": {
      "put": {
        "tags": [
          "DraftInvoices"
        ],
        "summary": "Update draft invoice sensitive data",
        "description": "Update the sensitivity level and service recipient CPR on a draft invoice. \nThe request replaces the stored values: omitted properties are cleared.",
        "operationId": "UpdateDraftInvoiceSensitiveData",
        "parameters": [
          {
            "name": "draftInvoiceNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DraftInvoiceSensitiveData"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "**Resource not found.** The resource you have been looking for does not exist.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/orders/{documentStatus}/lines/paged": {
      "get": {
        "tags": [
          "OrderLines"
        ],
        "summary": "Retrieve a page of OrderLines",
        "description": "Use this endpoint to load a page of OrderLines of a specific document status (\"drafts\", \"sent\" or \"archived\").",
        "operationId": "GetOrderLinesPage",
        "parameters": [
          {
            "name": "documentStatus",
            "in": "path",
            "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>",
            "required": true,
            "schema": {
              "enum": [
                "drafts",
                "sent",
                "archived"
              ],
              "type": "string",
              "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Use this parameter to set the page size. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Use this parameter to set the page size. [Pagination instructions](#section/Retrieving-data/Pagination)",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "skipPages",
            "in": "query",
            "description": "Use this parameter to set number of pages to skip. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maximum": 100,
              "minimum": 0,
              "type": "integer",
              "description": "Use this parameter to set number of pages to skip. [Pagination instructions](#section/Retrieving-data/Pagination)",
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OrderLine"
                  }
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/orders/{documentStatus}/lines": {
      "get": {
        "tags": [
          "OrderLines"
        ],
        "summary": "Retrieve all OrderLines",
        "description": "Use this endpoint to retrieve all Order Lines for all orders of a specific document status (\"drafts\", \"sent\" or \"archived\") in bulk.  \nThe maximum number of items returned in a single call is 1000.  \nUse the continuation cursor parameter to set the cursor for retrieval of the next set of data.  \nPlease check the [pagination instructions](#section/Retrieving-data/Pagination).",
        "operationId": "GetAllOrderLines",
        "parameters": [
          {
            "name": "documentStatus",
            "in": "path",
            "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>",
            "required": true,
            "schema": {
              "enum": [
                "drafts",
                "sent",
                "archived"
              ],
              "type": "string",
              "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Use this parameter to set the continuation cursor for paging. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maxLength": 50,
              "minLength": 0,
              "type": "string",
              "description": "Use this parameter to set the continuation cursor for paging. [Pagination instructions](#section/Retrieving-data/Pagination)"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [filtering instructions](#section/Retrieving-data/Filtering)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Array of objects along with a cursor.",
                  "$ref": "#/components/schemas/OrderLineCursorResults"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/orders/{documentStatus}/lines/count": {
      "get": {
        "tags": [
          "OrderLines"
        ],
        "summary": "Retrieve the number of Order Lines",
        "description": "Call this endpoint to get the number of Order Lines for all orders of a specific document status (\"drafts\", \"sent\" or \"archived\"). You can use filtering as well.",
        "operationId": "GetNumberOfOrderLines",
        "parameters": [
          {
            "name": "documentStatus",
            "in": "path",
            "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>",
            "required": true,
            "schema": {
              "enum": [
                "drafts",
                "sent",
                "archived"
              ],
              "type": "string",
              "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/orders/{documentStatus}/{documentId}/lines/{number}": {
      "get": {
        "tags": [
          "OrderLines"
        ],
        "summary": "Retrieve single OrderLine",
        "description": "Use this endpoint to retrieve a line belonging to an order of a specific document status (\"drafts\", \"sent\" or \"archived\").",
        "operationId": "GetOrderLineById",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "documentStatus",
            "in": "path",
            "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>",
            "required": true,
            "schema": {
              "enum": [
                "drafts",
                "sent",
                "archived"
              ],
              "type": "string",
              "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderLine"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "**Resource not found.** The resource you have been looking for does not exist.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/orders/{documentStatus}/{documentId}/lines": {
      "get": {
        "tags": [
          "OrderLines"
        ],
        "summary": "Retrieve all OrderLines of an order",
        "description": "Use this endpoint to retrieve all the lines belonging to an order of a specific document status (\"drafts\", \"sent\" or \"archived\").",
        "operationId": "GetOrderLinesForOrder",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "documentStatus",
            "in": "path",
            "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>",
            "required": true,
            "schema": {
              "enum": [
                "drafts",
                "sent",
                "archived"
              ],
              "type": "string",
              "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OrderLine"
                  }
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/quotes/{documentStatus}/lines/paged": {
      "get": {
        "tags": [
          "QuoteLines"
        ],
        "summary": "Retrieve a page of QuoteLines",
        "description": "Use this endpoint to load a page of QuoteLines of a specific document status (\"drafts\", \"sent\" or \"archived\").",
        "operationId": "GetQuoteLinesPage",
        "parameters": [
          {
            "name": "documentStatus",
            "in": "path",
            "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>",
            "required": true,
            "schema": {
              "enum": [
                "drafts",
                "sent",
                "archived"
              ],
              "type": "string",
              "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Use this parameter to set the page size. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "description": "Use this parameter to set the page size. [Pagination instructions](#section/Retrieving-data/Pagination)",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "skipPages",
            "in": "query",
            "description": "Use this parameter to set number of pages to skip. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maximum": 100,
              "minimum": 0,
              "type": "integer",
              "description": "Use this parameter to set number of pages to skip. [Pagination instructions](#section/Retrieving-data/Pagination)",
              "format": "int32",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuoteLine"
                  }
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/quotes/{documentStatus}/lines": {
      "get": {
        "tags": [
          "QuoteLines"
        ],
        "summary": "Retrieve all QuoteLines",
        "description": "Use this endpoint to retrieve all Quote Lines for all quotes of a specific document status (\"drafts\", \"sent\" or \"archived\") in bulk.  \nThe maximum number of items returned in a single call is 1000.  \nUse the continuation cursor parameter to set the cursor for retrieval of the next set of data.  \nPlease check the [pagination instructions](#section/Retrieving-data/Pagination).",
        "operationId": "GetAllQuoteLines",
        "parameters": [
          {
            "name": "documentStatus",
            "in": "path",
            "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>",
            "required": true,
            "schema": {
              "enum": [
                "drafts",
                "sent",
                "archived"
              ],
              "type": "string",
              "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Use this parameter to set the continuation cursor for paging. [Pagination instructions](#section/Retrieving-data/Pagination)",
            "schema": {
              "maxLength": 50,
              "minLength": 0,
              "type": "string",
              "description": "Use this parameter to set the continuation cursor for paging. [Pagination instructions](#section/Retrieving-data/Pagination)"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [filtering instructions](#section/Retrieving-data/Filtering)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Array of objects along with a cursor.",
                  "$ref": "#/components/schemas/QuoteLineCursorResults"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/quotes/{documentStatus}/lines/count": {
      "get": {
        "tags": [
          "QuoteLines"
        ],
        "summary": "Retrieve the number of Quote Lines",
        "description": "Call this endpoint to get the number of Quote Lines for all quotes of a specific document status (\"drafts\", \"sent\" or \"archived\"). You can use filtering as well.",
        "operationId": "GetNumberOfQuoteLines",
        "parameters": [
          {
            "name": "documentStatus",
            "in": "path",
            "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>",
            "required": true,
            "schema": {
              "enum": [
                "drafts",
                "sent",
                "archived"
              ],
              "type": "string",
              "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/quotes/{documentStatus}/{documentId}/lines/{number}": {
      "get": {
        "tags": [
          "QuoteLines"
        ],
        "summary": "Retrieve single QuoteLine",
        "description": "Use this endpoint to retrieve a line belonging to a quote of a specific document status (\"drafts\", \"sent\" or \"archived\").",
        "operationId": "GetQuoteLineById",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "documentStatus",
            "in": "path",
            "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>",
            "required": true,
            "schema": {
              "enum": [
                "drafts",
                "sent",
                "archived"
              ],
              "type": "string",
              "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteLine"
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "**Resource not found.** The resource you have been looking for does not exist.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/quotes/{documentStatus}/{documentId}/lines": {
      "get": {
        "tags": [
          "QuoteLines"
        ],
        "summary": "Retrieve all QuoteLines of a quote",
        "description": "Use this endpoint to retrieve all the lines belonging to a quote of a specific document status (\"drafts\", \"sent\" or \"archived\").",
        "operationId": "GetQuoteLinesForQuote",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "documentStatus",
            "in": "path",
            "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>",
            "required": true,
            "schema": {
              "enum": [
                "drafts",
                "sent",
                "archived"
              ],
              "type": "string",
              "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Name | Description |\n| ---- | ----------- |\n| Drafts |  |\n| Sent |  |\n| Archived |  |\n</details>"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the filtering for fields. [Filtering instructions](#section/Retrieving-data/Filtering)"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)",
            "schema": {
              "type": "string",
              "description": "Use this parameter to set the sort fields and direction. [Sort instructions](#section/Retrieving-data/Sorting)"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuoteLine"
                  }
                }
              }
            }
          },
          "400": {
            "description": "**Bad request.** Your request does not pass our validation. Check the errors array for more details.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "**Unauthorized access.** Please take a look at https://apis.e-conomic.com and follow the links to help on authorization, or use the word demo for both tokens.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "**Access forbidden.** You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "**Too many requests.** You have made too many calls towards our API. You are over your quota. Need to wait a bit. Check info in the response headers.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "**Internal server error.** Something went wrong but the error has been logged. If you continue to see errors here, please contact api@e-conomic.com. Remember to include log id and agreement number when contacting support.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "BookedInvoiceLine": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "integer",
            "description": "The unique number of the booked invoice that the line belongs to.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "number": {
            "type": "integer",
            "description": "The unique number of the booked invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "userInterfaceNumber": {
            "type": "integer",
            "description": "The line number displayed in the e-conomic web interface.  \nIn the UI, numbering for lines starts from 1 for each booked invoice, and so the number displayed in the UI will be different from the line unique identifier.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "productNumber": {
            "maxLength": 25,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The unique number of the product that will appear on the booked invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "description": {
            "maxLength": 2500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "A descriptive text associated with the booked invoice line.  \nIt can include the actual product name or any relevant note related to the specific line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "quantity": {
            "type": [
              "null",
              "number"
            ],
            "description": "The quantity of the product or service specified on the booked invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "unitNumber": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The unique identifier of the unit of measure applied to the booked invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unitNetPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The price of 1 unit of the product or service, expressed in the currency specified on the booked invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "unitCostPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The cost price of 1 unit of the product or service, expressed in the currency specified on the booked invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "discountPercentage": {
            "type": [
              "null",
              "number"
            ],
            "description": "Discount applied to the booked invoice line, expressed as a percentage.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "recommendedPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The recommended cost price for 1 unit of the product or service on the booked invoice line, expressed in the currency specified on the booked invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "departmentNumber": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The number of a department which can be set on the booked invoice line.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "quantity2": {
            "type": [
              "null",
              "number"
            ],
            "description": "The secondary quantity of the product on the the booked invoice line.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unit2Number": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The unique identifier of the second unit.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "bookedAccount": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The account number to which the booked invoices are registered.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "projectCloseAccount": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The account number to which the booked invoices are registered when the project is closed.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "accrue": {
            "type": "boolean",
            "description": "Accrual is used to allocate costs and/or revenues over several periods. If true, the invoice was booked on the accruals account.  \nIt requires the Accruals module to be installed.  \nYou can find out if you have the Accruals module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "accrueStartDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "The start date for the accrual.  \nIt requires the Accruals module to be installed.  \nYou can find out if you have the Accruals module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "date-time",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "accrueEndDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "The end date for the accrual.  \nIt requires the Accruals module to be installed.  \nYou can find out if you have the Accruals module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "date-time",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "vatRate": {
            "type": "number",
            "description": "The vat rate of the product or service to appear on the booked invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "vatAmount": {
            "type": [
              "null",
              "number"
            ],
            "description": "The calculated vat amount of the product or service to appear on the booked invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "totalNetAmount": {
            "type": [
              "null",
              "number"
            ],
            "description": "The calculated total net amount of the product or service to appear on the booked invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false
      },
      "BookedInvoiceLineCursorResults": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "items": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/BookedInvoiceLine"
            },
            "description": "Max number of items returned is 1000.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false,
        "description": "Array of objects along with a cursor.",
        "example": {
          "cursor": "234",
          "items": [
            {
              "id": "13",
              "name": "Patrick"
            },
            {
              "id": "16",
              "name": "John"
            }
          ]
        },
        "x-cursor-page-size": 1000
      },
      "CreatedResult": {
        "type": "object",
        "properties": {
          "number": {
            "type": "integer",
            "description": "<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false
      },
      "DraftInvoice": {
        "required": [
          "currencyCode",
          "customerName",
          "customerNumber",
          "date",
          "layoutNumber",
          "termOfPaymentNumber",
          "vatZoneNumber"
        ],
        "type": "object",
        "properties": {
          "number": {
            "type": "integer",
            "description": "Unique identifier for the Draft Invoice, assigned on creation from a sequence shared with quotes and orders.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "draftInvoiceNumber": {
            "type": "integer",
            "description": "The draft invoice number displayed in the e-conomic web interface.  \nAssigned on creation from a number sequence shared with quotes and orders. Not to be confused with number, which identifies the draft invoice in this API.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "customerNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Identifier for the customer the draft invoice belongs to. \nMust reference an existing customer that is not barred.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "customerName": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The name of the customer as it will appear on the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin, like</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin, like",
            "x-sortable": true
          },
          "date": {
            "type": "string",
            "description": "The date of the draft invoice. \nUsed when calculating the due date and when looking up the exchange rate for the currency of the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "date-time",
            "x-filterable": "eq, ne, lt, lte, gt, gte",
            "x-sortable": true
          },
          "currencyCode": {
            "maxLength": 3,
            "minLength": 0,
            "type": "string",
            "description": "ISO 4217 currency code of the draft invoice, e.g. DKK or EUR.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "lastUpdated": {
            "type": "string",
            "description": "Timestamp of the last change to the draft invoice or its lines \nIn Central European local time.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "date-time",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte",
            "x-sortable": true
          },
          "layoutNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Identifier for the layout group the draft invoice is using. \nMust reference a layout that exists on the agreement.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "termOfPaymentNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Identifier for the payment term the draft invoice is using. \nThe due date is calculated from the type of the payment term and the date of the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "dueDate": {
            "type": "string",
            "description": "Due date of the draft invoice. \nCalculated from the type of the payment term and the date of the draft invoice, and recalculated only when the payment term or the date changes.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "date-time",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte",
            "x-sortable": true
          },
          "vatZoneNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Identifier for the VAT zone the draft invoice is using. \nMust reference an existing VAT zone. Determines whether the amounts include VAT (isVatIncluded) when the draft invoice is created.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "isVatIncluded": {
            "type": "boolean",
            "description": "Whether the amounts on the draft invoice include VAT. \nDerived from the VAT zone when the draft invoice is created; it is not recalculated if the VAT zone is changed later.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "amountInBaseCurrency": {
            "type": "number",
            "description": "Calculated total net amount of the draft invoice, expressed in the base currency of the agreement. \nDerived from the amount and the exchange rate.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "amount": {
            "type": "number",
            "description": "The calculated total net amount of the draft invoice, expressed in the currency of the draft invoice. \nRecalculated whenever the draft invoice or its lines change.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "vatAmount": {
            "type": "number",
            "description": "The calculated total VAT amount of the draft invoice.  \nRecalculated whenever the draft invoice or its lines change. It is 0 when the amounts do not include VAT.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "roundingAmount": {
            "type": "number",
            "description": "The rounding amount applied to the draft invoice total when the agreement uses invoice rounding.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "projectNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": [
              "null",
              "integer"
            ],
            "description": "The number of the project to which the Draft Invoice belongs. Access to Project Module required to use this property.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "customerAddress": {
            "maxLength": 255,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The street address of the customer as it will appear on the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "customerPostalCode": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The postal code of the customer as it will appear on the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "customerCity": {
            "maxLength": 250,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The city of the customer as it will appear on the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "customerCountry": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The country of the customer as it will appear on the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "otherReference": {
            "maxLength": 250,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "An additional reference text displayed on the draft invoice, e.g. the customer's purchase order number.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "heading": {
            "maxLength": 250,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "An optional heading displayed on the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "textLine1": {
            "maxLength": 1000,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The first free-form text block displayed on the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "textLine2": {
            "maxLength": 1000,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The second free-form text block displayed on the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "ourReferenceNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": [
              "null",
              "integer"
            ],
            "description": "The employee number of the employee who is the reference for the draft invoice ('our reference').  \nMust reference an existing employee that is not barred.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "deliveryLocationNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": [
              "null",
              "integer"
            ],
            "description": "The number of the customer's delivery location used on the draft invoice.  \nMust reference an existing delivery location for the customer.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "deliveryAddress": {
            "maxLength": 255,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The street address of the place of delivery.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "deliveryPostalCode": {
            "maxLength": 30,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The postal code of the place of delivery.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "deliveryCity": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The city of the place of delivery.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "deliveryCountry": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The country of the place of delivery.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "deliveryTerms": {
            "maxLength": 100,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The delivery terms displayed on the draft invoice, e.g. 'FOB'.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "deliveryDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "The date of delivery displayed on the draft invoice.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "date-time",
            "x-filterable": "eq, ne, lt, lte, gt, gte",
            "x-sortable": false
          },
          "attentionNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": [
              "null",
              "integer"
            ],
            "description": "The customer contact number of the person the draft invoice is addressed to (attention).  \nMust reference an active contact for the customer.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "yourReferenceNumber": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": [
              "null",
              "integer"
            ],
            "description": "The customer contact number of the customer's reference person ('your reference').  \nMust reference an active contact for the customer.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "ourReference2Number": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": [
              "null",
              "integer"
            ],
            "description": "The employee number of the secondary employee reference on the draft invoice ('our reference 2').  \nMust reference an existing employee that is not barred.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "debtorEan": {
            "maxLength": 13,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The EAN/GLN number used when sending the invoice electronically to the customer (NemHandel).<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "publicEntryNumber": {
            "maxLength": 30,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The order or requisition reference required by some public-sector customers when the invoice is sent electronically.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "totalCostPriceInBaseCurrency": {
            "type": [
              "null",
              "number"
            ],
            "description": "The calculated total cost price of the draft invoice lines, expressed in the base currency of the agreement.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "exchangeRate": {
            "type": [
              "null",
              "number"
            ],
            "description": "The exchange rate between the currency of the draft invoice and the base currency of the agreement, scaled by 100 (100 = 1:1).  \nWhen omitted at creation, the rate registered for the currency on the date of the draft invoice is used. Used when deriving the base currency amounts.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "cvr": {
            "maxLength": 40,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The CVR (company registration) number of the customer on the draft invoice.  \nWhen omitted at creation, it is copied from the customer.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "pNr": {
            "maxLength": 40,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The P-number (production unit number) of the customer on the draft invoice.  \nWhen omitted at creation, it is copied from the customer.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "nemHandelReceiverType": {
            "maximum": 4,
            "minimum": 0,
            "type": [
              "null",
              "integer"
            ],
            "description": "How the customer receives electronic invoices (NemHandel): 0 = EAN number, 1 = CVR number, 2 = P-number, 3 = MobilePay, 4 = Peppol.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "debitorMobilePhone": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The mobile phone number of the customer.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "externalId": {
            "maxLength": 50,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "An optional free-text identifier of your own choosing, e.g. an id from an external system.  \nIt is stored as-is, is not required to be unique, and is preserved on the booked invoice when the draft is booked.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin, like</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin, like",
            "x-sortable": false
          },
          "objectVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "The object version, required for PUT requests to help ensure that updates made by others don't get overwritten by your update request.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false
      },
      "DraftInvoiceCursorResults": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "items": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DraftInvoice"
            },
            "description": "Max number of items returned is 1000.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false,
        "description": "Array of objects along with a cursor.",
        "example": {
          "cursor": "234",
          "items": [
            {
              "id": "13",
              "name": "Patrick"
            },
            {
              "id": "16",
              "name": "John"
            }
          ]
        },
        "x-cursor-page-size": 1000
      },
      "DraftInvoiceLine": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "integer",
            "description": "The unique number of the draft invoice that the line belongs to.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "draftInvoiceNumber": {
            "type": "integer",
            "description": "The number of the draft invoice that the line belongs to, as displayed in the e-conomic web interface.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "number": {
            "type": "integer",
            "description": "The unique number of the draft invoice line.  \nIgnored for POST requests. For PUT requests it identifies the line to update and must match an existing line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "userInterfaceNumber": {
            "type": "integer",
            "description": "The line number displayed in the e-conomic web interface.  \nIn the UI, numbering for lines starts from 1 for each sales document, and so the number displayed in the UI will be different from the line unique identifier.  \nWhen a line is deleted, the remaining lines are renumbered.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "productNumber": {
            "maxLength": 25,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The unique number of the product that will appear on the draft invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "description": {
            "maxLength": 2500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "A descriptive text associated with the draft invoice line.  \nIt can include the actual product name or any relevant note related to the specific line.  \nThe description is required when a product number is provided. In this case it should consist of the product name as you want it to be displayed on the invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "quantity": {
            "type": [
              "null",
              "number"
            ],
            "description": "The quantity of the product or service on the draft invoice line.  \nQuantity and product number must be provided together: the property is required if the product number is set, and cannot be set without one.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "unitNumber": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The unique identifier of the unit of measure applied to the draft invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unitNetPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The price of 1 unit of the product or service on the draft invoice line, expressed in the currency of the draft invoice.  \nCan only be set when a product number is provided.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "unitCostPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The cost price of 1 unit of the goods or services on the draft invoice line, expressed in the currency specified on the draft invoice.  \nCan only be set when a product number is provided. On bulk creation, an omitted or zero value is populated from the cost price of the product; on single creation and update the value is used as-is.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "discountPercentage": {
            "type": [
              "null",
              "number"
            ],
            "description": "The discount applied to the draft invoice line, expressed as a percentage.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "recommendedPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The recommended cost price for 1 unit of the product or service on the draft invoice line, expressed in the currency specified on the draft invoice.  \nFor lines with a product number the value is recalculated on update (quantity multiplied by the recommended price of the product), overwriting any supplied value; for lines without a product it is set to 0.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "departmentNumber": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The number of a department which can be set on the draft invoice line.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "quantity2": {
            "type": [
              "null",
              "number"
            ],
            "description": "The secondary quantity of the product on the draft invoice line.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unit2Number": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The unique identifier of the second unit.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "accrue": {
            "type": "boolean",
            "description": "Accrual is used to allocate costs and/or revenues over several periods. If true, the invoice is to be booked on the accruals account.  \nIt requires the Accruals module to be installed.  \nYou can find out if you have the Accruals module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "accrueStartDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "The start date for the accrual. Required when accrue is true, and must be before the accrual end date.  \nIt requires the Accruals module to be installed.  \nYou can find out if you have the Accruals module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "date-time",
            "x-filterable": "eq, ne, lt, lte, gt, gte",
            "x-sortable": false
          },
          "accrueEndDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "The end date for the accrual. Required when accrue is true.  \nIt requires the Accruals module to be installed.  \nYou can find out if you have the Accruals module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "date-time",
            "x-filterable": "eq, ne, lt, lte, gt, gte",
            "x-sortable": false
          },
          "marginInBaseCurrency": {
            "type": [
              "null",
              "number"
            ],
            "description": "The difference between the net price and the cost price for the product or service on the draft invoice line expressed in base currency.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "marginPercentage": {
            "type": [
              "null",
              "number"
            ],
            "description": "The difference between the net price and the cost price for the product or service on the draft invoice line expressed as percentage.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "totalNetAmount": {
            "type": [
              "null",
              "number"
            ],
            "description": "The calculated total net amount of the product or service to appear on the draft invoice line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "objectVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "The object version, required for PUT requests to help ensure that updates made by others don't get overwritten by your update request.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false
      },
      "DraftInvoiceLineBatchRequest": {
        "required": [
          "lines"
        ],
        "type": "object",
        "properties": {
          "lines": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DraftInvoiceLine"
            },
            "description": "The draft invoice lines to create, at most 100 per request.  \nThe lines are created atomically: if any line fails validation, no lines are created. The response contains the assigned line numbers in the same order as the request.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false
      },
      "DraftInvoiceLineCreatedResultArray": {
        "type": "object",
        "properties": {
          "numbers": {
            "type": "array",
            "items": {
              "type": "integer",
              "description": "The unique number of the draft invoice line.  \nIgnored for POST requests. For PUT requests it identifies the line to update and must match an existing line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
              "format": "int32",
              "readOnly": true,
              "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
              "x-sortable": true
            }
          }
        },
        "additionalProperties": false
      },
      "DraftInvoiceLineCursorResults": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "items": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/DraftInvoiceLine"
            },
            "description": "Max number of items returned is 1000.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false,
        "description": "Array of objects along with a cursor.",
        "example": {
          "cursor": "234",
          "items": [
            {
              "id": "13",
              "name": "Patrick"
            },
            {
              "id": "16",
              "name": "John"
            }
          ]
        },
        "x-cursor-page-size": 1000
      },
      "DraftInvoiceSensitiveData": {
        "type": "object",
        "properties": {
          "sensitivityLevel": {
            "maximum": 2,
            "minimum": 0,
            "type": [
              "null",
              "integer"
            ],
            "description": "Sensitivity level for electronic invoicing: 0 = None, 1 = Common information, 2 = Sensitive information.  \nWrite-only; never returned by the API. The request replaces the stored values: omitting this property clears the stored sensitivity level.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "serviceRecipientCpr": {
            "maxLength": 11,
            "minLength": 10,
            "type": [
              "null",
              "string"
            ],
            "description": "CPR number of the service recipient (NemHandel). Allowed formats: 1234567890 or 123456-1234.  \nWrite-only; never returned by the API. Encrypted at rest. The request replaces the stored values: omitting this property erases the stored CPR number.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false
      },
      "Error": {
        "type": "object",
        "properties": {
          "message": {
            "type": [
              "null",
              "string"
            ],
            "description": "<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "errorCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "property": {
            "type": [
              "null",
              "string"
            ],
            "description": "<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false
      },
      "OrderLine": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "integer",
            "description": "The unique number of the order that the line belongs to.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "orderNumber": {
            "type": "integer",
            "description": "The number of the order that the line belongs to, as displayed in the e-conomic web interface.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "number": {
            "type": "integer",
            "description": "The unique number of the order line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "userInterfaceNumber": {
            "type": "integer",
            "description": "The line number displayed in the e-conomic web interface.  \nIn the UI, numbering for lines starts from 1 for each order, and so the number displayed in the UI will be different from the line unique identifier.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "productNumber": {
            "maxLength": 25,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The unique number of the product that will appear on the order line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "description": {
            "maxLength": 2500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "A descriptive text associated with the order line.  \nIt can include the actual product name or any relevant note related to the specific line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "quantity": {
            "type": [
              "null",
              "number"
            ],
            "description": "The quantity of the product or service on the order line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unitNumber": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The unique identifier of the unit of measure applied to the order line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unitNetPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The price of 1 unit of the product or service on the order line, expressed in the currency specified on the order.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unitCostPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The cost price of 1 unit of the product or service on the order line, expressed in the currency specified on the order.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "discountPercentage": {
            "type": [
              "null",
              "number"
            ],
            "description": "The discount applied to the order line, expressed as a percentage.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "recommendedPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The recommended cost price for 1 unit of the product or service on the order line, expressed in the currency specified on the order.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "departmentNumber": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The number of a department which can be set on the order line.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "quantity2": {
            "type": [
              "null",
              "number"
            ],
            "description": "The secondary quantity of the product on the order line.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unit2Number": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The unique identifier of the second unit.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "marginInBaseCurrency": {
            "type": [
              "null",
              "number"
            ],
            "description": "The difference between the net price and the cost price for the product or service on the order line expressed in base currency.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "marginPercentage": {
            "type": [
              "null",
              "number"
            ],
            "description": "The difference between the net price and the cost price for the product or service on the order line expressed as a percentage.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "totalNetAmount": {
            "type": [
              "null",
              "number"
            ],
            "description": "The calculated total net amount of the product or service to appear on the order line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false
      },
      "OrderLineCursorResults": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "items": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/OrderLine"
            },
            "description": "Max number of items returned is 1000.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false,
        "description": "Array of objects along with a cursor.",
        "example": {
          "cursor": "234",
          "items": [
            {
              "id": "13",
              "name": "Patrick"
            },
            {
              "id": "16",
              "name": "John"
            }
          ]
        },
        "x-cursor-page-size": 1000
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": [
              "null",
              "string"
            ]
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "detail": {
            "type": [
              "null",
              "string"
            ]
          },
          "instance": {
            "type": [
              "null",
              "string"
            ]
          },
          "errors": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          },
          "traceId": {
            "type": "string"
          },
          "errorCode": {
            "type": "string"
          },
          "traceTimeUtc": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "QuoteLine": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "integer",
            "description": "The unique number of the quote that the line belongs to.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "quoteNumber": {
            "type": "integer",
            "description": "The number of the quote that the line belongs to, as displayed in the e-conomic web interface.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "number": {
            "type": "integer",
            "description": "The unique number of the quote line of the document.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "userInterfaceNumber": {
            "type": "integer",
            "description": "The line number displayed in the e-conomic web interface.  \nIn the UI, numbering for lines starts from 1 for each quote, and so the number displayed in the UI will be different from the line unique identifier.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: true</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": true
          },
          "productNumber": {
            "maxLength": 25,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "The unique number of the product that will appear on the quote line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "description": {
            "maxLength": 2500,
            "minLength": 0,
            "type": [
              "null",
              "string"
            ],
            "description": "A descriptive text associated with the quote line.  \nIt can include the actual product name or any relevant note related to the specific line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "quantity": {
            "type": [
              "null",
              "number"
            ],
            "description": "The quantity of the product or service on the quote line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unitNumber": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The unique identifier of the unit of measure applied to the quote line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unitNetPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The price of 1 unit of the product or service on the quote line, expressed in the currency specified on the quote.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unitCostPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The cost price of 1 unit of the product or service on the quote line, expressed in the currency specified on the quote.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "discountPercentage": {
            "type": [
              "null",
              "number"
            ],
            "description": "The discount applied to the quote line, expressed as a percentage.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "recommendedPrice": {
            "type": [
              "null",
              "number"
            ],
            "description": "The recommended cost price for 1 unit of the product or service on the quote line, expressed in the currency specified on the quote.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "departmentNumber": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The number of a department which can be set on the quote line.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: eq, ne, lt, lte, gt, gte, in, nin</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "eq, ne, lt, lte, gt, gte, in, nin",
            "x-sortable": false
          },
          "quantity2": {
            "type": [
              "null",
              "number"
            ],
            "description": "The secondary quantity of the product on the quote line.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "unit2Number": {
            "type": [
              "null",
              "integer"
            ],
            "description": "The unique identifier of the second unit.  \nIt requires the Dimension module to be installed.  \nYou can find out if you have the Dimension module by calling this endpoint: https://restdocs.e-conomic.com/#self<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "int32",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "marginInBaseCurrency": {
            "type": [
              "null",
              "number"
            ],
            "description": "The difference between the net price and the cost price for the product or service on the quote line expressed in base currency.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "marginPercentage": {
            "type": [
              "null",
              "number"
            ],
            "description": "The difference between the net price and the cost price for the product or service on the quote line expressed as a percentage.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "totalNetAmount": {
            "type": [
              "null",
              "number"
            ],
            "description": "The calculated total net amount of the goods or services to appear on the quote line.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "format": "double",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false
      },
      "QuoteLineCursorResults": {
        "type": "object",
        "properties": {
          "cursor": {
            "type": [
              "null",
              "string"
            ],
            "description": "Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Read-only: true</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "readOnly": true,
            "x-filterable": "not filterable",
            "x-sortable": false
          },
          "items": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/QuoteLine"
            },
            "description": "Max number of items returned is 1000.<p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Filterable: not filterable</p><p style='font-style:italic;font-family:monospace;font-size:small;margin:0'>Sortable: false</p>",
            "x-filterable": "not filterable",
            "x-sortable": false
          }
        },
        "additionalProperties": false,
        "description": "Array of objects along with a cursor.",
        "example": {
          "cursor": "234",
          "items": [
            {
              "id": "13",
              "name": "Patrick"
            },
            {
              "id": "16",
              "name": "John"
            }
          ]
        },
        "x-cursor-page-size": 1000
      },
      "SalesDocumentStatusRoute": {
        "type": "integer",
        "oneOf": [
          {
            "const": 0,
            "title": "Drafts"
          },
          {
            "const": 1,
            "title": "Sent"
          },
          {
            "const": 2,
            "title": "Archived"
          }
        ],
        "description": "<details><summary><b>Click to see the list of possible values.</b></summary>\n\n| Value | Name | Description |\n| ----- | ---- | ----------- |\n| 0 | Drafts |  |\n| 1 | Sent |  |\n| 2 | Archived |  |\n</details>"
      }
    },
    "securitySchemes": {
      "X-AppSecretToken": {
        "type": "apiKey",
        "description": "Application secret token needed to access the endpoints.",
        "name": "X-AppSecretToken",
        "in": "header"
      },
      "X-AgreementGrantToken": {
        "type": "apiKey",
        "description": "Agreement grant token needed to access the endpoints.",
        "name": "X-AgreementGrantToken",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "X-AppSecretToken": [ ],
      "X-AgreementGrantToken": [ ]
    }
  ],
  "tags": [
    {
      "name": "BookedInvoiceLines",
      "description": "<code>BookedInvoiceLines</code> define the products or services that appear on booked invoices.\n\nBooked invoice lines can never be empty - an invoice without a product number cannot be booked.\n\n\n#### Examples of use cases:\n\n* Retrieve all the lines on a booked invoice;\n* Retrieve all the lines on all booked invoices.\n\nRelated guide for users: [e-copedia](https://www.e-conomic.dk/support/artikler/ny-fakturalinje) (Danish).\n\n\n\n**Required application roles:** SuperUser or Sales [More info](https://www.e-conomic.com/developer/permissions)",
      "x-required-roles": [
        "Sales",
        "SuperUser"
      ]
    },
    {
      "name": "DraftInvoiceLines",
      "description": "<code>DraftInvoiceLines</code> define the products or services that appear on draft invoices.\n\nLines without a product number are also possible and can be used to provide extra info on the order, product or customer.\n\n\n#### Examples of use cases:\n\n* Retrieve all the lines on a draft invoice;\n* Retrieve all the lines on all draft invoices.\n\nRelated guide for users: [e-copedia](https://www.e-conomic.dk/support/artikler/ny-fakturalinje) (Danish).\n\n\n<details><summary><b>Click to see the list of possible error codes.</b></summary>\n\n| Error Code | Description |\n| ---------- | ----------- |\n| SalesDocumentLineInvalidProductId | The product does not exist or is not accessible. |\n| SalesDocumentLineMissingAccrueStartDate | An accrual start date is required when accrue is true. |\n| SalesDocumentLineMissingAccrueEndDate | An accrual end date is required when accrue is true. |\n| SalesDocumentLineAccrueStartDateMustBeBeforeAccrueEndDate | The accrual start date must be before the accrual end date. |\n| SalesDocumentLineCannotUseAccrualWithoutProduct | Accrual can only be used on lines with a product number. |\n| SalesDocumentLineCannotUseAccrualProductGroupIsMissingAccrualAccountNumber | Accrual cannot be used: the product group of the product has no accrual account. |\n| SalesDocumentLineInvalidUnit | The unit does not exist. |\n| SalesDocumentLineInvalidDepartmentOrDistributionKeyId | The department or distribution key is not valid. |\n| SalesDocumentLineBatchDeleteExceedsMaxBatchSize | At most 300 lines can be deleted per batch request. |\n| SalesDocumentLineInvalidSalesDocumentId | The sales document does not exist. |\n| SalesDocumentLineCannotSetProductWithoutQuantity | A quantity is required when a product number is set. |\n| SalesDocumentLineCannotSetQuantityWithoutProduct | A quantity can only be set when a product number is set. |\n| SalesDocumentLineCannotSetUnitNetPriceWithoutProduct | A unit net price can only be set when a product number is set. |\n| SalesDocumentLineCannotSetUnitCostPriceWithoutProduct | A unit cost price can only be set when a product number is set. |\n| SalesDocumentLineCanotSetQuantity2WithoutUnit2 | A secondary quantity can only be set when a second unit is set. |\n| SalesDocumentLineCannotSetProductContainingHeadingAccount | The product cannot be used because its product group refers to a heading account. |\n| SalesDocumentLineCannotSetServiceRecipientCPROnLineAlreadySetOnDocument | A service recipient CPR number cannot be set on a line when the document already has one. |\n| SalesDocumentLineCannotHaveZeroValue | Quantity and secondary quantity cannot be zero. |\n| SalesDocumentLineLineNumberMustBeLargerThanZero | The line number must be larger than zero. |\n| SalesDocumentLineLineNumberCannotBeChanged | The line number cannot be changed. |\n| SalesDocumentLineSalesDocumentIdCannotBeChanged | The sales document of a line cannot be changed. |\n| SalesDocumentLineCannotDeleteOrderTransferredToInvoicing | Lines of an order that has been transferred to invoicing cannot be deleted. |\n| SalesDocumentLineBatchCreateExceedsMaxBatchSize | At most 100 lines can be created per batch request. |\n| SalesDocumentLineCannotDeleteArchivedOrSent | Lines of archived documents, or of sent orders and quotes, cannot be deleted. |\n| ONLYONEITEMPERDIMENSION | Invalid dimension key, only one dimension value or distribution key is allowed per dimension. |\n| ONLYONEDISTRIBUTIONALLOWED | Invalid dimension key, only one distribution key is allowed across dimensions. |\n| CONTAINSINVALIDVALUES | Invalid dimension key, please use valid dimension value or distribution key. |\n| CONTAINSBARREDDISTRIBUTIONKEY | Contains barred distribution key. |\n| CONTAINSBARREDDIMENSIONVALUE | Contains barred dimension value. |\n</details>\n\n**Required application roles:** SuperUser or Sales [More info](https://www.e-conomic.com/developer/permissions)",
      "x-error-codes": [
        "CONTAINSBARREDDIMENSIONVALUE",
        "CONTAINSBARREDDISTRIBUTIONKEY",
        "CONTAINSINVALIDVALUES",
        "ONLYONEDISTRIBUTIONALLOWED",
        "ONLYONEITEMPERDIMENSION",
        "SalesDocumentLineAccrueStartDateMustBeBeforeAccrueEndDate",
        "SalesDocumentLineBatchCreateExceedsMaxBatchSize",
        "SalesDocumentLineBatchDeleteExceedsMaxBatchSize",
        "SalesDocumentLineCannotDeleteArchivedOrSent",
        "SalesDocumentLineCannotDeleteOrderTransferredToInvoicing",
        "SalesDocumentLineCannotHaveZeroValue",
        "SalesDocumentLineCannotSetProductContainingHeadingAccount",
        "SalesDocumentLineCannotSetProductWithoutQuantity",
        "SalesDocumentLineCannotSetQuantityWithoutProduct",
        "SalesDocumentLineCannotSetServiceRecipientCPROnLineAlreadySetOnDocument",
        "SalesDocumentLineCannotSetUnitCostPriceWithoutProduct",
        "SalesDocumentLineCannotSetUnitNetPriceWithoutProduct",
        "SalesDocumentLineCannotUseAccrualProductGroupIsMissingAccrualAccountNumber",
        "SalesDocumentLineCannotUseAccrualWithoutProduct",
        "SalesDocumentLineCanotSetQuantity2WithoutUnit2",
        "SalesDocumentLineInvalidDepartmentOrDistributionKeyId",
        "SalesDocumentLineInvalidProductId",
        "SalesDocumentLineInvalidSalesDocumentId",
        "SalesDocumentLineInvalidUnit",
        "SalesDocumentLineLineNumberCannotBeChanged",
        "SalesDocumentLineLineNumberMustBeLargerThanZero",
        "SalesDocumentLineMissingAccrueEndDate",
        "SalesDocumentLineMissingAccrueStartDate",
        "SalesDocumentLineSalesDocumentIdCannotBeChanged"
      ],
      "x-required-roles": [
        "Sales",
        "SuperUser"
      ]
    },
    {
      "name": "DraftInvoices",
      "description": "<code>DraftInvoices</code> - Get, create, update and delete draft invoices. \n\n\n#### Examples of use cases:\n\n* Retrieve all draft invoices\n* Retrieve draft invoice by its number\n* Create a new draft invoice\n* Update a draft invoice\n* Delete a draft invoice\n\n\t\t\n<details><summary><b>Click to see the list of possible error codes.</b></summary>\n\n| Error Code | Description |\n| ---------- | ----------- |\n| CustomerRequiredForOrderQuoteAndDraftInvoice | A customer is required on quotes, orders and draft invoices. |\n| CustomerDoesNotExistOrIsBarred | The customer does not exist or is barred. |\n| ProjectDoesNotExistOrIsClosed | The project does not exist or is closed. |\n| OnlyOrdersCanBeTransferredToInvoicing | Only orders can be transferred to invoicing. |\n| CurrencyCodeIsRequired | A currency code is required. |\n| CustomerNameIsRequired | A customer name is required. |\n| ExchangeRateMustBeGreaterThanZero | The exchange rate must be greater than zero. |\n| DueDateMustBeGreaterOrEqualToDate | The due date cannot be before the date of the document. |\n| LayoutDoesNotExist | The layout does not exist. |\n| CustomerContactDoesNotExistOrIsNotAccessible | The customer contact does not exist or is not accessible. |\n| PaymentTermIsRequired | A payment term is required. |\n| PaymentTermDoesNotExistOrIsNotAccessible | The payment term does not exist or is not accessible. |\n| EmployeeDoesNotExistOrIsNotAccessible | The employee referenced does not exist or is barred. |\n| InvalidDocumentType | The document type is not valid for this operation. |\n| VatZoneIsRequired | A VAT zone is required. |\n| VatZoneDoesNotExist | The VAT zone does not exist. |\n| DeliveryLocationDoesNotExistOrIsNotAccessible | The delivery location does not exist or is not accessible. |\n| InvalidSensitivityLevel | The sensitivity level must be 0 (None), 1 (Common information) or 2 (Sensitive information). |\n| InvalidServiceRecipientCpr | Invalid CPR number. Allowed formats: 1234567890 or 123456-1234. |\n| SalesDocumentCannotSetServiceRecipientCPROnDocumentWhenLinesContainCPR | A service recipient CPR number cannot be set on the document when one of its lines already has one. |\n| CannotDeleteOrderTransferredToInvoicing | An order that has been transferred to invoicing cannot be deleted. |\n| ProjectAccessError | Access to the Projects module is required to use the project number. |\n</details>\n\n**Required application roles:** SuperUser or Sales [More info](https://www.e-conomic.com/developer/permissions)",
      "x-error-codes": [
        "CannotDeleteOrderTransferredToInvoicing",
        "CurrencyCodeIsRequired",
        "CustomerContactDoesNotExistOrIsNotAccessible",
        "CustomerDoesNotExistOrIsBarred",
        "CustomerNameIsRequired",
        "CustomerRequiredForOrderQuoteAndDraftInvoice",
        "DeliveryLocationDoesNotExistOrIsNotAccessible",
        "DueDateMustBeGreaterOrEqualToDate",
        "EmployeeDoesNotExistOrIsNotAccessible",
        "ExchangeRateMustBeGreaterThanZero",
        "InvalidDocumentType",
        "InvalidSensitivityLevel",
        "InvalidServiceRecipientCpr",
        "LayoutDoesNotExist",
        "OnlyOrdersCanBeTransferredToInvoicing",
        "PaymentTermDoesNotExistOrIsNotAccessible",
        "PaymentTermIsRequired",
        "ProjectAccessError",
        "ProjectDoesNotExistOrIsClosed",
        "SalesDocumentCannotSetServiceRecipientCPROnDocumentWhenLinesContainCPR",
        "VatZoneDoesNotExist",
        "VatZoneIsRequired"
      ],
      "x-required-roles": [
        "Sales",
        "SuperUser"
      ]
    },
    {
      "name": "OrderLines",
      "description": "<code>OrderLines</code> define the products or services that appear on orders.\n\nLines without a product number are also possible and can be used to provide extra info on the order, product or customer.\n\n\n#### Examples of use cases:\n\n* Retrieve all the lines on an order;\n* Retrieve all the lines on all orders.\n\nRelated guide for users: [e-copedia](https://www.e-conomic.dk/support/artikler/opret-og-send-ordre) (Danish).\n\n\n\n**Required application roles:** SuperUser or Sales [More info](https://www.e-conomic.com/developer/permissions)",
      "x-required-roles": [
        "Sales",
        "SuperUser"
      ]
    },
    {
      "name": "QuoteLines",
      "description": "<code>QuoteLines</code> define the products or services that appear on quotes.\n\nLines without a product number are also possible and can be used to provide extra info on the quote, product or customer.\n\n\n#### Examples of use cases:\n\n* Retrieve all the lines on a quote;\n* Retrieve all the lines on all quotes.\n\nRelated guide for users: [e-copedia](https://www.e-conomic.dk/support/artikler/opret-og-send-ordre#section2) (Danish).\n\n\n\n**Required application roles:** SuperUser or Sales [More info](https://www.e-conomic.com/developer/permissions)",
      "x-required-roles": [
        "Sales",
        "SuperUser"
      ]
    }
  ],
  "x-tagGroups": [
    {
      "name": "Invoices",
      "tags": [
        "BookedInvoiceLines",
        "DraftInvoiceLines",
        "DraftInvoices"
      ]
    },
    {
      "name": "Orders",
      "tags": [
        "OrderLines"
      ]
    },
    {
      "name": "Quotes",
      "tags": [
        "QuoteLines"
      ]
    }
  ]
}