{
  "x-generator": "NSwag v13.18.2.0 (NJsonSchema v10.8.0.0 (Newtonsoft.Json v11.0.0.0))",
  "openapi": "3.0.0",
  "info": {
    "title": "Billing API",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.thomsonreuters.com/legal-tracker/billing-api/v1"
    },
    {
      "url": "https://api.thomsonreuters.com.au/legal-tracker/billing-api/v1"
    },
    {
      "url": "https://api.thomsonreuters.co.uk/legal-tracker/billing-api/v1"
    },
    {
      "url": "https://api.thomsonreuters.ca/legal-tracker/billing-api/v1"
    },
    {
      "url": "https://api.thomsonreuters.de/legal-tracker/billing-api/v1"
    }
  ],
  "paths": {
    "/matters": {
      "get": {
        "tags": [
          "Matters"
        ],
        "operationId": "MattersBilling_GetMatters",
        "parameters": [
          {
            "name": "Company-ID",
            "in": "header",
            "required": true,
            "description": "Identifier of the Company the matter(s) is/are being retrieved for.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "$select",
            "in": "query",
            "style": "simple",
            "required": true,
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "id",
                  "clientMatterName",
                  "clientMatterNumber",
                  "status",
                  "matterType",
                  "substantiveLaw",
                  "countryOrRegion",
                  "state",
                  "leadCompanyPersonEmail",
                  "numberTwoCompanyPersonEmail",
                  "fullNameAndPartiesInvolved",
                  "leadOutsideCouncelEmail",
                  "leadFirmName",
                  "leadFirmOfficeName",
                  "primaryFeeArrangement",
                  "primaryFeeComment",
                  "utbmsExpenseCodesRequired"
                ]
              }
            }
          },
          {
            "name": "$filter",
            "in": "query",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)<br />Available operations: eq, ne, gt, ge, lt, le, and, or, not, any<br />Available functions: contains<br />Available properties: id, clientMatterName, clientMatterNumber, status, matterType, substantiveLaw, countryOrRegion, state, startDateTime, resolutionDateTime, leadCompanyPersonEmail, numberTwoCompanyPersonEmail, fullNameAndPartiesInvolved, leadOutsideCouncelEmail, leadFirmName, leadFirmOfficeName, utbmsExpenseCodesRequired",
            "examples": {
              "No Filter": {},
              "Filter clientMatterName": {
                "value": "clientMatterName eq 'client matter name'"
              },
              "Filter resolutionDateTime": {
                "value": "resolutionDateTime gt 2021-01-01 and resolutionDateTime lt 2021-01-31"
              },
              "Filter closed Matters": {
                "value": "status eq 'closed'"
              },
              "Mixed Filter": {
                "value": "contains(clientMatterNumber, 'number') and utbmsExpenseCodeRequired"
              }
            },
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$top",
            "in": "query",
            "description": "Show only the first n items, see [Paging - Top](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "$skip",
            "in": "query",
            "description": "Skip the first n items, see [Paging - Skip](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "$count",
            "in": "query",
            "description": "Include count of items, see [Count](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "$orderby",
            "in": "query",
            "description": "Order items by specified properties, see [OrderBy](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "examples": {
              "No Sorting": {},
              "Sort id ascending": {
                "value": "id asc"
              },
              "Sort id descending": {
                "value": "id desc"
              },
              "Sort clientMatterName ascending": {
                "value": "clientMatterName asc"
              },
              "Sort clientMatterName descending": {
                "value": "clientMatterName desc"
              },
              "Sort clientMatterNumber ascending": {
                "value": "clientMatterNumber asc"
              },
              "Sort clientMatterNumber descending": {
                "value": "clientMatterNumber desc"
              },
              "Sort status ascending": {
                "value": "status asc"
              },
              "Sort status descending": {
                "value": "status desc"
              },
              "Sort matterType ascending": {
                "value": "matterType asc"
              },
              "Sort matterType descending": {
                "value": "matterType desc"
              },
              "Sort substantiveLaw ascending": {
                "value": "substantiveLaw asc"
              },
              "Sort substantiveLaw descending": {
                "value": "substantiveLaw desc"
              },
              "Sort countryOrRegion ascending": {
                "value": "countryOrRegion asc"
              },
              "Sort countryOrRegion descending": {
                "value": "countryOrRegion desc"
              },
              "Sort state ascending": {
                "value": "state asc"
              },
              "Sort state descending": {
                "value": "state desc"
              },
              "Sort leadCompanyPersonEmail ascending": {
                "value": "leadCompanyPersonEmail asc"
              },
              "Sort leadCompanyPersonEmail descending": {
                "value": "leadCompanyPersonEmail desc"
              },
              "Sort numberTwoCompanyPersonEmail ascending": {
                "value": "numberTwoCompanyPersonEmail asc"
              },
              "Sort numberTwoCompanyPersonEmail descending": {
                "value": "numberTwoCompanyPersonEmail desc"
              },
              "Sort fullNameAndPartiesInvolved ascending": {
                "value": "fullNameAndPartiesInvolved asc"
              },
              "Sort fullNameAndPartiesInvolved descending": {
                "value": "fullNameAndPartiesInvolved desc"
              },
              "Sort leadOutsideCouncelEmail ascending": {
                "value": "leadOutsideCouncelEmail asc"
              },
              "Sort leadOutsideCouncelEmail descending": {
                "value": "leadOutsideCouncelEmail desc"
              },
              "Sort leadFirmName ascending": {
                "value": "leadFirmName asc"
              },
              "Sort leadFirmName descending": {
                "value": "leadFirmName desc"
              },
              "Sort leadFirmOfficeName ascending": {
                "value": "leadFirmOfficeName asc"
              },
              "Sort leadFirmOfficeName descending": {
                "value": "leadFirmOfficeName desc"
              },
              "Sort utbmsExpenseCodesRequired ascending": {
                "value": "utbmsExpenseCodesRequired asc"
              },
              "Sort utbmsExpenseCodesRequired descending": {
                "value": "utbmsExpenseCodesRequired desc"
              }
            },
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "MatterBillingModel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrackerODataResponseOfMatterBillingModel"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The web service account has insufficient permissions to access this endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "The requested resource requires authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Access is denied": {
                    "value": {
                      "error": {
                        "code": "Unauthorized",
                        "message": "The requested resource requires authentication."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    },
    "/invoice-attachment-types": {
      "get": {
        "tags": [
          "Attachments"
        ],
        "operationId": "InvoiceDocumentType_GetAttachmentTypes",
        "parameters": [
          {
            "name": "Company-ID",
            "in": "header",
            "description": "Identifier of the Company the invoice attachment type(s) is/are being retrieved for.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "$select",
            "in": "query",
            "style": "simple",
            "required": true,
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "id",
                  "name",
                  "description",
                  "isDefault",
                  "isActive",
                  "allowMultiple",
                  "includeInAPBatch",
                  "requirement"
                ]
              }
            }
          },
          {
            "name": "$filter",
            "in": "query",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)<br />Available operations: eq, ne, gt, ge, lt, le, and, or, not, any<br />Available functions: contains<br />Available properties: id, name, description, isDefault, isActive, modifiedDateTime, allowMultiple, includeInAPBatch, requirement",
            "examples": {
              "No Filter": {},
              "Filter name": {
                "value": "name eq 'attachment type name'"
              },
              "Filter dateModified": {
                "value": "dateModified gt 2021-01-01 and dateModified lt 2021-01-31"
              },
              "Filter active Attachment Types": {
                "value": "isActive"
              },
              "Filter inactive Attachment Types": {
                "value": "not isActive"
              },
              "Mixed Filter": {
                "value": "contains(name, 'name') and isDefault"
              }
            },
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$top",
            "in": "query",
            "description": "Show only the first n items, see [Paging - Top](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 100
            }
          },
          {
            "name": "$skip",
            "in": "query",
            "description": "Skip the first n items, see [Paging - Skip](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          },
          {
            "name": "$count",
            "in": "query",
            "description": "Include count of items, see [Count](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "$orderby",
            "in": "query",
            "description": "Order items by specified properties, see [OrderBy](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "examples": {
              "No Sorting": {},
              "Sort id ascending": {
                "value": "id asc"
              },
              "Sort id descending": {
                "value": "id desc"
              },
              "Sort name ascending": {
                "value": "name asc"
              },
              "Sort name descending": {
                "value": "name desc"
              },
              "Sort description ascending": {
                "value": "description asc"
              },
              "Sort description descending": {
                "value": "description desc"
              },
              "Sort isDefault ascending": {
                "value": "isDefault asc"
              },
              "Sort isDefault descending": {
                "value": "isDefault desc"
              },
              "Sort isActive ascending": {
                "value": "isActive asc"
              },
              "Sort isActive descending": {
                "value": "isActive desc"
              },
              "Sort allowMultiple ascending": {
                "value": "allowMultiple asc"
              },
              "Sort allowMultiple descending": {
                "value": "allowMultiple desc"
              },
              "Sort includeInAPBatch ascending": {
                "value": "includeInAPBatch asc"
              },
              "Sort includeInAPBatch descending": {
                "value": "includeInAPBatch desc"
              },
              "Sort requirement ascending": {
                "value": "requirement asc"
              },
              "Sort requirement descending": {
                "value": "requirement desc"
              }
            },
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "InvoiceDocumentTypeModel",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrackerODataResponseOfInvoiceDocumentTypeModel"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The web service account has insufficient permissions to access this endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported format type is included in \"Content-Type\" header",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "The requested resource requires authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Access is denied": {
                    "value": {
                      "error": {
                        "code": "Unauthorized",
                        "message": "The requested resource requires authentication."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    },
    "/invoices": {
      "post": {
        "tags": [
          "Invoices"
        ],
        "operationId": "InvoiceBilling_Post",
        "parameters": [
          {
            "name": "Prefer",
            "in": "header",
            "description": "* return=representation: This is the default. The server includes an entity representing the current state of the resource. In response to a successful request a status of 201 would be returned.\r\n* return=minimal: The response will not include the entity in the response. A successful request would result in a status of 204 to be returned.\r\n",
            "schema": {
              "type": "string",
              "example": "return=representation"
            }
          },
          {
            "name": "Company-ID",
            "in": "header",
            "description": "Identifier of the Company you are posting the invoice to.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "x-name": "Invoice POST",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "matterId",
                  "isLedes"
                ],
                "properties": {
                  "firmId": {
                    "type": "integer",
                    "description": "The Tracker id of the firm associated with the invoice.",
                    "format": "int32",
                    "nullable": true
                  },
                  "firmOfficeId": {
                    "type": "integer",
                    "description": "The Tracker id of the firm office associated with the invoice.",
                    "format": "int32",
                    "nullable": true
                  },
                  "matterId": {
                    "type": "integer",
                    "description": "The Tracker id of the matter associated with the invoice.",
                    "format": "int32",
                    "nullable": false
                  },
                  "currency": {
                    "type": "string",
                    "description": "The currency used in the invoice.",
                    "maxLength": 3,
                    "minLength": 3
                  },
                  "isLedes": {
                    "type": "boolean",
                    "description": "Indicates whether the invoice is a LEDES invoice or not.",
                    "nullable": false
                  },
                  "isMemo": {
                    "type": "boolean",
                    "description": "Indicates whether the invoice is a memo invoice or not.",
                    "nullable": true
                  },
                  "isProforma": {
                    "type": "boolean",
                    "description": "Indicates whether the invoice is a proforma invoice or not.",
                    "nullable": false
                  },
                  "proformaInvoiceId": {
                    "type": "integer",
                    "description": "The proforma invoice id of the posted tax invoice.",
                    "format": "int32",
                    "nullable": true
                  },
                  "invoiceFileKey": {
                    "type": "string",
                    "description": "The file key (blob name) of the invoice file (LEDES file for LEDES invoices or PDF for non-LEDES). Cannot be used together with content. Please refer to EFile API documentation for additional information on file upload process.",
                    "minLength": 1
                  },
                  "content": {
                    "type": "string",
                    "description": "The content of the invoice LEDES file provided as plain text. Cannot be used together with invoiceFileKey.",
                    "minLength": 1
                  },
                  "invoiceFileName": {
                    "type": "string",
                    "description": "The file name of the posted invoice (if invoice is posted using content field).",
                    "maxLength": 255,
                    "minLength": 1
                  },
                  "postedDateTime": {
                    "type": "string",
                    "description": "The date and time at which the invoice was posted (only for memo invoices).",
                    "format": "date-time",
                    "nullable": true
                  },
                  "approvedDateTime": {
                    "type": "string",
                    "description": "The date and time at which the final approver approved (or rejected) the invoice.",
                    "format": "date-time",
                    "nullable": true
                  },
                  "attachments": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "The information on the posted invoice attachments.",
                      "required": [
                        "fileKey"
                      ],
                      "properties": {
                        "typeId": {
                          "type": "integer",
                          "description": "The id of the type of the posted invoice file attachment.",
                          "format": "int32",
                          "nullable": true
                        },
                        "description": {
                          "type": "string",
                          "description": "The description of the posted invoice file attachment.",
                          "maxLength": 255
                        },
                        "fileKey": {
                          "type": "string",
                          "description": "The file key (blob name) of the posted invoice file attachment. Please refer to EFile API documentation for additional information on file upload process.",
                          "minLength": 1
                        }
                      }
                    }
                  }
                }
              },
              "examples": {
                "Full Model": {
                  "summary": "Full Model",
                  "value": {
                    "firmId": 0,
                    "firmOfficeId": 0,
                    "matterId": 0,
                    "currency": "string",
                    "isLedes": true,
                    "isMemo": true,
                    "isProforma": true,
                    "proformaInvoiceId": 0,
                    "invoiceFileKey": "string",
                    "content": "string",
                    "invoiceFileName": "string",
                    "postedDateTime": "2023-10-06T05:30:03.6523841Z",
                    "approvedDateTime": "2023-10-06T11:56:28.0660482Z",
                    "attachments": [
                      {
                        "typeId": 0,
                        "description": "string",
                        "fileKey": "string"
                      }
                    ]
                  }
                },
                "LEDES 98B (Firm user)": {
                  "summary": "LEDES 98B (Firm user)",
                  "value": {
                    "firmOfficeId": 0,
                    "matterId": 0,
                    "currency": "string",
                    "isLedes": true,
                    "content": "LEDES1998B[]\nINVOICE_DATE|INVOICE_NUMBER|CLIENT_ID|LAW_FIRM_MATTER_ID|INVOICE_TOTAL|BILLING_START_DATE|BILLING_END_DATE|INVOICE_DESCRIPTION|LINE_ITEM_NUMBER|EXP/FEE/INV_ADJ_TYPE|LINE_ITEM_NUMBER_OF_UNITS|LINE_ITEM_ADJUSTMENT_AMOUNT|LINE_ITEM_TOTAL|LINE_ITEM_DATE|LINE_ITEM_TASK_CODE|LINE_ITEM_EXPENSE_CODE|LINE_ITEM_ACTIVITY_CODE|TIMEKEEPER_ID|LINE_ITEM_DESCRIPTION|LAW_FIRM_ID|LINE_ITEM_UNIT_COST|TIMEKEEPER_NAME|TIMEKEEPER_CLASSIFICATION|CLIENT_MATTER_ID[]\n"
                  }
                },
                "LEDES 98B via invoice file key (Firm user)": {
                  "summary": "LEDES 98B via invoice file key (Firm user)",
                  "value": {
                    "firmOfficeId": 0,
                    "matterId": 0,
                    "currency": "string",
                    "isLedes": true,
                    "invoiceFileKey": "111cacc6-63b0-4c90-9458-4080271db00f:AB1cdefgHIjkLmN4OP=="
                  }
                },
                "LEDES 98BI Live (Company user)": {
                  "summary": "LEDES 98BI Live (Company user)",
                  "value": {
                    "firmId": 0,
                    "firmOfficeId": 0,
                    "matterId": 0,
                    "isLedes": true,
                    "content": "LEDES1998BI[]\nINVOICE_DATE|INVOICE_NUMBER|CLIENT_ID|LAW_FIRM_MATTER_ID|INVOICE_TOTAL|BILLING_START_DATE|BILLING_END_DATE|INVOICE_DESCRIPTION|LINE_ITEM_NUMBER|EXP/FEE/INV_ADJ_TYPE|LINE_ITEM_NUMBER_OF_UNITS|LINE_ITEM_ADJUSTMENT_AMOUNT|LINE_ITEM_TOTAL|LINE_ITEM_DATE|LINE_ITEM_TASK_CODE|LINE_ITEM_EXPENSE_CODE|LINE_ITEM_ACTIVITY_CODE|TIMEKEEPER_ID|LINE_ITEM_DESCRIPTION|LAW_FIRM_ID|LINE_ITEM_UNIT_COST|TIMEKEEPER_NAME|TIMEKEEPER_CLASSIFICATION|CLIENT_MATTER_ID|PO_NUMBER|CLIENT_TAX_ID|MATTER_NAME|INVOICE_TAX_TOTAL|INVOICE_NET_TOTAL|INVOICE_CURRENCY|TIMEKEEPER_LAST_NAME|TIMEKEEPER_FIRST_NAME|ACCOUNT_TYPE|LAW_FIRM_NAME|LAW_FIRM_ADDRESS_1|LAW_FIRM_ADDRESS_2|LAW_FIRM_CITY|LAW_FIRM_STATEorREGION|LAW_FIRM_POSTCODE|LAW_FIRM_COUNTRY|CLIENT_NAME|CLIENT_ADDRESS_1|CLIENT_ADDRESS_2|CLIENT_CITY|CLIENT_STATEorREGION|CLIENT_POSTCODE|CLIENT_COUNTRY|LINE_ITEM_TAX_RATE|LINE_ITEM_TAX_TOTAL|LINE_ITEM_TAX_TYPE[]\n"
                  }
                },
                "LEDES XML Memo (Company user)": {
                  "summary": "LEDES XML Memo (Company user)",
                  "value": {
                    "firmId": 0,
                    "firmOfficeId": 0,
                    "matterId": 0,
                    "isLedes": true,
                    "isMemo": true,
                    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ledesxmlebilling2.1 xmlns=\"http://www.ledes.org/ledes21.xsd\">\n<firm>\n</firm>\n</ledesxmlebilling2.1>",
                    "datePosted": "2023-10-06T05:30:03.6523841Z",
                    "dateApproved": "2023-10-06T11:56:28.0660482Z"
                  }
                },
                "LEDES 98BI Proforma (Firm user)": {
                  "summary": "LEDES 98BI Proforma (Firm user)",
                  "value": {
                    "firmOfficeId": 0,
                    "matterId": 0,
                    "isLedes": true,
                    "isProforma": true,
                    "content": "LEDES1998BI[]\nINVOICE_DATE|INVOICE_NUMBER|CLIENT_ID|LAW_FIRM_MATTER_ID|INVOICE_TOTAL|BILLING_START_DATE|BILLING_END_DATE|INVOICE_DESCRIPTION|LINE_ITEM_NUMBER|EXP/FEE/INV_ADJ_TYPE|LINE_ITEM_NUMBER_OF_UNITS|LINE_ITEM_ADJUSTMENT_AMOUNT|LINE_ITEM_TOTAL|LINE_ITEM_DATE|LINE_ITEM_TASK_CODE|LINE_ITEM_EXPENSE_CODE|LINE_ITEM_ACTIVITY_CODE|TIMEKEEPER_ID|LINE_ITEM_DESCRIPTION|LAW_FIRM_ID|LINE_ITEM_UNIT_COST|TIMEKEEPER_NAME|TIMEKEEPER_CLASSIFICATION|CLIENT_MATTER_ID|PO_NUMBER|CLIENT_TAX_ID|MATTER_NAME|INVOICE_TAX_TOTAL|INVOICE_NET_TOTAL|INVOICE_CURRENCY|TIMEKEEPER_LAST_NAME|TIMEKEEPER_FIRST_NAME|ACCOUNT_TYPE|LAW_FIRM_NAME|LAW_FIRM_ADDRESS_1|LAW_FIRM_ADDRESS_2|LAW_FIRM_CITY|LAW_FIRM_STATEorREGION|LAW_FIRM_POSTCODE|LAW_FIRM_COUNTRY|CLIENT_NAME|CLIENT_ADDRESS_1|CLIENT_ADDRESS_2|CLIENT_CITY|CLIENT_STATEorREGION|CLIENT_POSTCODE|CLIENT_COUNTRY|LINE_ITEM_TAX_RATE|LINE_ITEM_TAX_TOTAL|LINE_ITEM_TAX_TYPE[]\n"
                  }
                },
                "LEDES 98BIv2 Tax with Proforma (Firm user)": {
                  "summary": "LEDES 98BIv2 Tax with Proforma (Firm user)",
                  "value": {
                    "firmOfficeId": 0,
                    "matterId": 0,
                    "isLedes": true,
                    "isProforma": false,
                    "proformaInvoiceId": 1,
                    "content": "LEDES1998BI V2[]\nINVOICE_DATE|INVOICE_NUMBER|CLIENT_ID|LAW_FIRM_MATTER_ID|INVOICE_TOTAL|BILLING_START_DATE|BILLING_END_DATE|INVOICE_DESCRIPTION|LINE_ITEM_NUMBER|EXP/FEE/INV_ADJ_TYPE|LINE_ITEM_NUMBER_OF_UNITS|LINE_ITEM_ADJUSTMENT_AMOUNT|LINE_ITEM_TOTAL|LINE_ITEM_DATE|LINE_ITEM_TASK_CODE|LINE_ITEM_EXPENSE_CODE|LINE_ITEM_ACTIVITY_CODE|TIMEKEEPER_ID|LINE_ITEM_DESCRIPTION|LAW_FIRM_ID|LINE_ITEM_UNIT_COST|TIMEKEEPER_NAME|TIMEKEEPER_CLASSIFICATION|CLIENT_MATTER_ID|PO_NUMBER|CLIENT_TAX_ID|MATTER_NAME|INVOICE_TAX_TOTAL|INVOICE_NET_TOTAL|INVOICE_CURRENCY|TIMEKEEPER_LAST_NAME|TIMEKEEPER_FIRST_NAME|ACCOUNT_TYPE|LAW_FIRM_NAME|LAW_FIRM_ADDRESS_1|LAW_FIRM_ADDRESS_2|LAW_FIRM_CITY|LAW_FIRM_STATEorREGION|LAW_FIRM_POSTCODE|LAW_FIRM_COUNTRY|CLIENT_NAME|CLIENT_ADDRESS_1|CLIENT_ADDRESS_2|CLIENT_CITY|CLIENT_STATEorREGION|CLIENT_POSTCODE|CLIENT_COUNTRY|LINE_ITEM_TAX_RATE|LINE_ITEM_TAX_TOTAL|LINE_ITEM_TAX_TYPE|INVOICE_REPORTED_TAX_TOTAL|INVOICE_TAX_CURRENCY[]\n"
                  }
                },
                "LEDES 98B Memo Tax with Proforma (Company user)": {
                  "summary": "LEDES 98B Memo Tax with Proforma (Company user)",
                  "value": {
                    "firmId": 0,
                    "firmOfficeId": 0,
                    "matterId": 0,
                    "currency": "string",
                    "isLedes": true,
                    "isMemo": true,
                    "isProforma": false,
                    "proformaInvoiceId": 1,
                    "content": "LEDES1998B[]\nINVOICE_DATE|INVOICE_NUMBER|CLIENT_ID|LAW_FIRM_MATTER_ID|INVOICE_TOTAL|BILLING_START_DATE|BILLING_END_DATE|INVOICE_DESCRIPTION|LINE_ITEM_NUMBER|EXP/FEE/INV_ADJ_TYPE|LINE_ITEM_NUMBER_OF_UNITS|LINE_ITEM_ADJUSTMENT_AMOUNT|LINE_ITEM_TOTAL|LINE_ITEM_DATE|LINE_ITEM_TASK_CODE|LINE_ITEM_EXPENSE_CODE|LINE_ITEM_ACTIVITY_CODE|TIMEKEEPER_ID|LINE_ITEM_DESCRIPTION|LAW_FIRM_ID|LINE_ITEM_UNIT_COST|TIMEKEEPER_NAME|TIMEKEEPER_CLASSIFICATION|CLIENT_MATTER_ID[]\n",
                    "datePosted": "2023-10-06T05:30:03.6523841Z",
                    "dateApproved": "2023-10-06T11:56:28.0660482Z"
                  }
                },
                "LEDES XML Live with Attachments (Firm user)": {
                  "summary": "LEDES XML Live with Attachments (Firm user)",
                  "value": {
                    "firmOfficeId": 0,
                    "matterId": 0,
                    "isLedes": true,
                    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ledesxmlebilling2.1 xmlns=\"http://www.ledes.org/ledes21.xsd\">\n<firm>\n</firm>\n</ledesxmlebilling2.1>",
                    "attachments": [
                      {
                        "typeId": 1,
                        "description": "description",
                        "fileKey": "111cacc6-63b0-4c90-9458-4080271db00f:AB1cdefgHIjkLmN4OP=="
                      }
                    ]
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "GetInvoiceBillingModel",
            "headers": {
              "ETag": {
                "description": "The ETag response-header field provides the current value of the entity tag for the requested variant. Used with If-Match, If-None-Match and If-Range to implement optimistic concurrency control.",
                "schema": {
                  "type": "string"
                }
              },
              "Location": {
                "description": "The value of the header is a URL that can be used to retrieve or update the resource.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInvoiceBillingModel"
                }
              }
            }
          },
          "204": {
            "description": "Record was created successfully",
            "headers": {
              "Preference-Applied": {
                "description": "Indicates that the resource was successfully created, but the resource representation is not returned.",
                "schema": {
                  "type": "string"
                }
              },
              "ETag": {
                "description": "The ETag response-header field provides the current value of the entity tag for the requested variant. Used with If-Match, If-None-Match and If-Range to implement optimistic concurrency control.",
                "schema": {
                  "type": "string"
                }
              },
              "Location": {
                "description": "The value of the header is a URL that can be used to retrieve or update the resource.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The web service account has insufficient permissions to access this endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported format type is included in \"Content-Type\" header",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "The requested resource requires authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Access is denied": {
                    "value": {
                      "error": {
                        "code": "Unauthorized",
                        "message": "The requested resource requires authentication."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    },
    "/invoices/{id}": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "operationId": "InvoiceBilling_GetInvoice",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "Company-ID",
            "in": "header",
            "description": "Identifier of the Company you are retrieving an invoice from.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "$expand",
            "in": "query",
            "description": "Expands related entities, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "examples": {
              "Expand invoiceFileInfo": {
                "value": "invoiceFileInfo"
              },
              "Expand attachments": {
                "value": "attachments"
              },
              "Expand attachments fileInfo": {
                "value": "attachments($expand=fileInfo)"
              },
              "Expand invoiceFileInfo and attachments fileInfo": {
                "value": "invoiceFileInfo, attachments($expand=fileInfo)"
              },
              "Expand taxes": {
                "value": "taxes"
              },
              "Expand adjustments": {
                "value": "adjustments"
              }
            },
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "GetInvoiceBillingModel",
            "headers": {
              "ETag": {
                "description": "The ETag response-header field provides the current value of the entity tag for the requested variant. Used with If-Match, If-None-Match and If-Range to implement optimistic concurrency control.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetInvoiceBillingModel"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The web service account has insufficient permissions to access this endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "No request with that identifier could be found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "The requested resource requires authentication.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "Access is denied": {
                    "value": {
                      "error": {
                        "code": "Unauthorized",
                        "message": "The requested resource requires authentication."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "OAuth2": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "MatterBillingModel": {
        "title": "MatterBillingModel",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "clientMatterName": {
            "type": "string",
            "maxLength": 100,
            "nullable": true
          },
          "clientMatterNumber": {
            "type": "string",
            "maxLength": 100,
            "nullable": true
          },
          "firmMatterNumbers": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/FirmMatterNumbersModel"
            }
          },
          "status": {
            "$ref": "#/components/schemas/MatterStatus"
          },
          "matterType": {
            "type": "string",
            "maxLength": 301,
            "nullable": true
          },
          "substantiveLaw": {
            "type": "string",
            "maxLength": 301,
            "nullable": true
          },
          "countryOrRegion": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "state": {
            "type": "string",
            "maxLength": 300,
            "nullable": true
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resolutionDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "leadCompanyPersonEmail": {
            "type": "string",
            "maxLength": 150,
            "nullable": true
          },
          "numberTwoCompanyPersonEmail": {
            "type": "string",
            "maxLength": 150,
            "nullable": true
          },
          "fullNameAndPartiesInvolved": {
            "type": "string",
            "maxLength": 3000,
            "nullable": true
          },
          "leadOutsideCouncelEmail": {
            "type": "string",
            "maxLength": 150,
            "nullable": true
          },
          "leadFirmName": {
            "type": "string",
            "maxLength": 30,
            "nullable": true
          },
          "leadFirmOfficeName": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "primaryFeeArrangement": {
            "type": "string",
            "maxLength": 150,
            "nullable": true
          },
          "primaryFeeComment": {
            "type": "string",
            "maxLength": 200,
            "nullable": true
          },
          "utbmsExpenseCodesRequired": {
            "type": "boolean"
          },
          "requiredTaskCodeTypes": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "FirmMatterNumbersModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "matterNumber": {
            "type": "string",
            "maxLength": 25,
            "nullable": true
          },
          "clientNumber": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "matterName": {
            "type": "string",
            "maxLength": 35,
            "nullable": true
          },
          "locationOfLegalWork": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          }
        }
      },
      "MatterStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Open",
          "Closed"
        ],
        "enum": [
          "open",
          "closed"
        ]
      },
      "TrackerODataResponseOfMatterBillingModel": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer"
          },
          "value": {
            "type": "array",
            "items": {
              "title": "MatterBillingModel",
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "type": "integer",
                  "format": "int32"
                },
                "clientMatterName": {
                  "type": "string",
                  "maxLength": 100,
                  "nullable": true
                },
                "clientMatterNumber": {
                  "type": "string",
                  "maxLength": 100,
                  "nullable": true
                },
                "firmMatterNumbers": {
                  "type": "array",
                  "nullable": true,
                  "items": {
                    "$ref": "#/components/schemas/FirmMatterNumbersModel"
                  }
                },
                "status": {
                  "$ref": "#/components/schemas/MatterStatus"
                },
                "matterType": {
                  "type": "string",
                  "maxLength": 301,
                  "nullable": true
                },
                "substantiveLaw": {
                  "type": "string",
                  "maxLength": 301,
                  "nullable": true
                },
                "countryOrRegion": {
                  "type": "string",
                  "maxLength": 50,
                  "nullable": true
                },
                "state": {
                  "type": "string",
                  "maxLength": 300,
                  "nullable": true
                },
                "startDateTime": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                },
                "resolutionDateTime": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                },
                "leadCompanyPersonEmail": {
                  "type": "string",
                  "maxLength": 150,
                  "nullable": true
                },
                "numberTwoCompanyPersonEmail": {
                  "type": "string",
                  "maxLength": 150,
                  "nullable": true
                },
                "fullNameAndPartiesInvolved": {
                  "type": "string",
                  "maxLength": 3000,
                  "nullable": true
                },
                "leadOutsideCouncelEmail": {
                  "type": "string",
                  "maxLength": 150,
                  "nullable": true
                },
                "leadFirmName": {
                  "type": "string",
                  "maxLength": 30,
                  "nullable": true
                },
                "leadFirmOfficeName": {
                  "type": "string",
                  "maxLength": 20,
                  "nullable": true
                },
                "primaryFeeArrangement": {
                  "type": "string",
                  "maxLength": 150,
                  "nullable": true
                },
                "primaryFeeComment": {
                  "type": "string",
                  "maxLength": 200,
                  "nullable": true
                },
                "utbmsExpenseCodesRequired": {
                  "type": "boolean"
                },
                "requiredTaskCodeTypes": {
                  "type": "array",
                  "nullable": true,
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "nextLink": {
            "type": "string"
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "target": {
                "type": "string"
              },
              "details": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "code",
                    "message"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "target": {
                      "type": "string"
                    }
                  }
                }
              },
              "innererror": {
                "type": "object",
                "description": "The structure of this object is service-specific."
              }
            }
          }
        }
      },
      "InvoiceDocumentTypeModel": {
        "title": "InvoiceDocumentTypeModel",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isDefault": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          },
          "modifiedDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "allowMultiple": {
            "type": "boolean"
          },
          "includeInAPBatch": {
            "type": "boolean"
          },
          "requirement": {
            "$ref": "#/components/schemas/InvoiceDocumentTypeRequirement"
          }
        }
      },
      "InvoiceDocumentTypeRequirement": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Null",
          "Optional",
          "Required",
          "RequiredLedesOnly",
          "RequiredNonLedesOnly"
        ],
        "enum": [
          "null",
          "optional",
          "required",
          "requiredLedes",
          "requiredNonLedes"
        ]
      },
      "TrackerODataResponseOfInvoiceDocumentTypeModel": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer"
          },
          "value": {
            "type": "array",
            "items": {
              "title": "InvoiceDocumentTypeModel",
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "type": "integer",
                  "format": "int32"
                },
                "name": {
                  "type": "string",
                  "nullable": true
                },
                "description": {
                  "type": "string",
                  "nullable": true
                },
                "isDefault": {
                  "type": "boolean"
                },
                "isActive": {
                  "type": "boolean"
                },
                "modifiedDateTime": {
                  "type": "string",
                  "format": "date-time"
                },
                "allowMultiple": {
                  "type": "boolean"
                },
                "includeInAPBatch": {
                  "type": "boolean"
                },
                "requirement": {
                  "$ref": "#/components/schemas/InvoiceDocumentTypeRequirement"
                }
              }
            }
          },
          "nextLink": {
            "type": "string"
          }
        }
      },
      "GetInvoiceBillingModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "firmId": {
            "type": "integer",
            "format": "int32"
          },
          "firmOfficeId": {
            "type": "integer",
            "format": "int32"
          },
          "otherVendor": {
            "nullable": true,
            "$ref": "#/components/schemas/OtherVendorModel"
          },
          "matterId": {
            "type": "integer",
            "format": "int32"
          },
          "currency": {
            "type": "string",
            "nullable": true
          },
          "isLedes": {
            "type": "boolean"
          },
          "isMemo": {
            "type": "boolean"
          },
          "isProforma": {
            "type": "boolean"
          },
          "proformaInvoiceId": {
            "type": "integer",
            "format": "int32"
          },
          "invoiceFileInfo": {
            "nullable": true,
            "$ref": "#/components/schemas/FileInfoModel"
          },
          "fees": {
            "type": "number",
            "format": "decimal"
          },
          "expenses": {
            "type": "number",
            "format": "decimal"
          },
          "taxes": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/InvoiceTaxModel"
            }
          },
          "invoiceNumber": {
            "type": "string",
            "nullable": true
          },
          "invoiceDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "billingPeriodStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "billingPeriodEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "state": {
            "nullable": true,
            "$ref": "#/components/schemas/GetInvoiceStateFieldModel"
          },
          "postedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "approvedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "adjustments": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/InvoiceAdjustmentModel"
            }
          },
          "attachments": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/GetAttachmentFileModel"
            }
          }
        }
      },
      "OtherVendorModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "vendorName": {
            "type": "string",
            "nullable": true
          },
          "street1": {
            "type": "string",
            "nullable": true
          },
          "street2": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "zipPostalCode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "FileInfoModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "integer",
            "format": "int32"
          },
          "uploadedDateTime": {
            "type": "string",
            "format": "date-time"
          },
          "md5Hash": {
            "type": "string",
            "nullable": true
          },
          "downloadLink": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "InvoiceTaxModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "taxType": {
            "$ref": "#/components/schemas/TaxType"
          },
          "otherTaxTypeName": {
            "type": "string",
            "nullable": true
          },
          "subjectToTax": {
            "type": "number",
            "format": "decimal"
          },
          "taxRate": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "taxAmount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "TaxType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Null",
          "VAT",
          "GST",
          "HST",
          "PST",
          "Sales",
          "Other",
          "QST",
          "Withholding"
        ],
        "enum": [
          "null",
          "vat",
          "gst",
          "hst",
          "pst",
          "sales",
          "other",
          "qst",
          "withholding"
        ]
      },
      "GetInvoiceStateFieldModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "status": {
            "type": "string",
            "nullable": true
          },
          "comment": {
            "type": "string",
            "nullable": true
          },
          "details": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "InvoiceAdjustmentModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": {
            "$ref": "#/components/schemas/InvoiceAdjustmentType"
          },
          "amount": {
            "type": "number",
            "format": "decimal"
          },
          "adjusterId": {
            "type": "string",
            "nullable": true
          },
          "adjusterName": {
            "type": "string",
            "nullable": true
          },
          "dateTime": {
            "type": "string",
            "format": "date-time"
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "comment": {
            "type": "string",
            "nullable": true
          },
          "lineItemNumber": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "InvoiceAdjustmentType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Null",
          "MIA",
          "MIB",
          "MICF",
          "MICM",
          "MIDB",
          "MIDHR",
          "MIFA",
          "MIFF",
          "MIR",
          "MISF",
          "EID",
          "EIFF",
          "EIA",
          "EIDHR",
          "FID",
          "FIFF",
          "FIA",
          "FIDHR",
          "Other"
        ],
        "enum": [
          "null",
          "mia",
          "mib",
          "micf",
          "micm",
          "midb",
          "midhr",
          "mifa",
          "miff",
          "mir",
          "misf",
          "eid",
          "eiff",
          "eia",
          "eidhr",
          "fid",
          "fiff",
          "fia",
          "fidhr",
          "other"
        ]
      },
      "GetAttachmentFileModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "typeId": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "fileInfo": {
            "nullable": true,
            "$ref": "#/components/schemas/FileInfoModel"
          }
        }
      },
      "PostInvoiceBillingModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "firmId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "firmOfficeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "matterId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "nullable": true
          },
          "isLedes": {
            "type": "boolean",
            "nullable": true
          },
          "isMemo": {
            "type": "boolean",
            "nullable": true
          },
          "isProforma": {
            "type": "boolean"
          },
          "proformaInvoiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "invoiceFileKey": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "type": "string",
            "nullable": true
          },
          "invoiceFileName": {
            "type": "string",
            "nullable": true
          },
          "postedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "approvedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "attachments": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PostAttachmentFileModel"
            }
          }
        }
      },
      "PostAttachmentFileModel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "typeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "fileKey": {
            "type": "string",
            "nullable": true
          }
        }
      }
    },
    "securitySchemes": {
      "OAuth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.thomsonreuters.com/onepass/oauth2/token?grant_type=client_credentials",
            "scopes": {
              "access": "Grants access to Tracker APIs"
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "Matters",
      "description": "Use the Matters Billing API to view existing matters in Tracker."
    },
    {
      "name": "Attachments",
      "description": "Use the Attachments Billing API to view supported attachment types in Tracker."
    },
    {
      "name": "Invoices",
      "description": "Use the Invoice Billing API to view existing invoices and upload/update invoices into Tracker."
    }
  ]
}
