{
  "openapi": "3.1.0",
  "servers": [
    {
      "url": "https://api.karbonhq.com",
      "description": "The production API server"
    }
  ],
  "info": {
    "description": "> 📖 **Agent/developer quick-reference:** See [KARBON_API.md](./KARBON_API.md) in this repository.\n\nThis document covers Karbon API endpoints and data formats. You can find additional developer resources at [Karbon Developer Center](https://developers.karbonhq.com).\n\n**Please note the following:**\n\n- Karbon's APIs use the OData standard to help with resource searching. Use [OData's reference guide](https://www.odata.org/documentation/odata-version-2-0/uri-conventions/) to learn more about OData URI conventions.\n- OData's `$expand` option is only available where explicitly mentioned.\n- If an endpoint allows you to use multiple properties with the `$expand` option, you can assign a comma-separated list of the properties to the `$expand` option.\n- Wherever `$orderby` option is explicitly mentioned, you can also use allowed property name followed by space then `desc` keyword to receive the response in descending order.\n\n> ⚠️ The examples shown below are for **illustrative purposes only**. Attempting to call an API using the examples for request payload might result in unusual behaviour because the Karbon generated values for various entities' keys may differ from the values in your tenant.\n\n## Credentials for accessing Karbon APIs\n\nYou will need two credentials - an Authorization token and an AccessKey - to access Karbon APIs. If you don't already have these credentials, follow the steps below to receive them and access Karbon APIs:\n\n1. Karbon Customers can enable API access and obtain the Authorization (`Bearer`) token and Access Key under **Settings -> Connected Apps -> API Applications -> `{Your API Application}`** in Karbon.\n1. Assign the Authorization token to `Authorization` header and Karbon Tenant AccessKey to `AccessKey` header to send requests to Karbon APIs.\n",
    "version": "v3",
    "title": "Karbon API",
    "termsOfService": "https://karbonhq.com/terms-of-use/",
    "contact": {
      "name": "API Support",
      "url": "https://developers.karbonhq.com/issues/"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "tags": [
    {
      "name": "Billing",
      "description": "List and view an Invoice and associated line items"
    },
    {
      "name": "Business Cards",
      "description": "View or update the Business Card attached to a Contact and/or Organization"
    },
    {
      "name": "Client Groups",
      "description": "Create a client group to manage related contacts, create work for them, and see all related jobs in a single view. [Read more](https://help.karbonhq.com/en/articles/5880261-manage-a-client-group)"
    },
    {
      "name": "Comments",
      "description": "Use comments on tasks to add notes or bring a colleague into the conversation to collaborate on the task. [Read more](https://help.karbonhq.com/en/articles/2111192-comment-and-collaborate-on-a-task)"
    },
    {
      "name": "Contacts",
      "description": "Manage your contacts and get the full overview over clients, whether they are individuals or organizations. [Read more](https://help.karbonhq.com/en/articles/5708609-overview-of-contacts)"
    },
    {
      "name": "Custom Fields",
      "description": "Endpoints to manage Custom Fields on Contacts and Organizations in Karbon, refer to the Karbon help and support content for more information on [creating custom fields](https://help.karbonhq.com/en/articles/10971113-create-a-new-custom-contact-field) and [frequently asked questions](https://help.karbonhq.com/en/articles/10971266-custom-contact-fields-faqs)"
    },
    {
      "name": "Estimate Summaries",
      "description": "Estimate and track time to understand jobs that are on-budget, allocate resources, and uncover performance insights to transform your firm. [Read more](https://help.karbonhq.com/en/articles/4439115-overview-of-time-budgets)"
    },
    {
      "name": "Files",
      "description": "Handle files and attachments. [Read more](https://help.karbonhq.com/en/articles/5714089-files-and-attachments)"
    },
    {
      "name": "Integrated Workflows",
      "description": "Endpoints that enable Karbon Integration Partners to manage integrated workflow tasks enabled for their integrations. Note that these endpoints cannot be used to access Tasks or Client Tasks. Access is limited to approved developers building apps that serve all Karbon customers."
    },
    {
      "name": "Organizations",
      "description": "Create an organization to represent marriages and couples and client groups to represent families. [Read more](https://help.karbonhq.com/en/articles/5708609-overview-of-contacts#h_8ee87bfcc1)"
    },
    {
      "name": "Notes",
      "description": "Hold a conversation internally within your company. Unlike an email, Notes are viewed only by members of your team. [Read more](https://help.karbonhq.com/en/s/articles/5919746-use-notes)"
    },
    {
      "name": "Tags",
      "description": "Assign or remove tags from an entity - <strong>Note:</strong> Tags APIs are currently in beta and are <strong>not</strong> enabled for all API users"
    },
    {
      "name": "Tenant Settings",
      "description": "Retrieve lists of valid Contact Types, Work Types and Work Statuses"
    },
    {
      "name": "Timesheets and Time Entries",
      "description": "Retrieve individual (non-aggregated) time entries, each record represents a single time entry for a specific day, user, and work item. [Read more](https://help.karbonhq.com/en/s/articles/6022358-managing-time-budgets-and-expenses-in-karbon).\n**Deprecated** Review Time aggregate Timesheets for colleagues. [Read more](https://help.karbonhq.com/en/s/articles/6022358-managing-time-budgets-and-expenses-in-karbon)"
    },
    {
      "name": "Users",
      "description": "Create and view the basics & defaults for colleagues, teams and job roles to customize Karbon to represent the way you and your team work. [Read more](https://help.karbonhq.com/en/articles/3731216-edit-your-user-profile)"
    },
    {
      "name": "Webhook Payloads",
      "description": "Details of the different payloads sent for Karbon Webhook subscriptions"
    },
    {
      "name": "Webhook Subscriptions",
      "description": "Integrate your system with Karbon to receive changes made to your data in Karbon.\n\nNote: Webhook payloads take the following form:\n\n```JSON\n{\n  \"ResourcePermaKey\": \"{EntityKey}\",\n  \"ResourceType\": \"{EntityType}\",\n  \"ActionType\": \"{ActionType}\"\n  \"TimeStamp\": \"{YYYY-MM-DDTHH:mm:ssZ}\"\n}\n```\n\n"
    },
    {
      "name": "Work Items",
      "description": "Manage a Work Item to best fit your workflow, including timelines, tasks and work teams. [Read more](https://help.karbonhq.com/en/articles/6057036-managing-work-items-and-teams)"
    },
    {
      "name": "Work Schedules",
      "description": "Set a Work Item to repeat on a defined schedule. [Read more](https://help.karbonhq.com/en/articles/6096234-setup-repeating-work-on-a-schedule)"
    },
    {
      "name": "Work Templates",
      "description": "Find and review templates that you created to fit your firm's unique workflows. [Read more](https://help.karbonhq.com/en/articles/5325202-create-and-customize-work-templates)"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": [],
      "BearerAuth": []
    }
  ],
  "webhooks": {
    "contact": {
      "post": {
        "tags": ["Webhook Payloads"],
        "description": "Contact created or updated",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookRequestHeader"
          }
        ],
        "requestBody": {
          "description": "Information about the created or updated contact",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/contact-webhook"
              }
            }
          }
        }
      }
    },
    "customfield": {
      "post": {
        "tags": ["Webhook Payloads"],
        "description": "Custom field value added or updated",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookRequestHeader"
          }
        ],
        "requestBody": {
          "description": "Information about the created or updated custom field value",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/customfield-webhook"
              }
            }
          }
        }
      }
    },
    "estimate-summary": {
      "post": {
        "tags": ["Webhook Payloads"],
        "description": "Estimate Summary updated",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookRequestHeader"
          }
        ],
        "requestBody": {
          "description": "Information about the updated Estimate Summary",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/estimate-summary-webhook"
              }
            }
          }
        }
      }
    },
    "integration-task": {
      "post": {
        "tags": ["Webhook Payloads"],
        "description": "Integration Task created",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookRequestHeader"
          }
        ],
        "requestBody": {
          "description": "Information about an Integration Task that has been added to Work Item",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/integration-task-webhook"
              }
            }
          }
        }
      }
    },
    "invoice": {
      "post": {
        "tags": ["Webhook Payloads"],
        "description": "Invoice status updated",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookRequestHeader"
          }
        ],
        "requestBody": {
          "description": "Information about the created or updated Invoice",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/invoice-webhook"
              }
            }
          }
        }
      }
    },
    "note": {
      "post": {
        "tags": ["Webhook Payloads"],
        "description": "Note created or updated",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookRequestHeader"
          }
        ],
        "requestBody": {
          "description": "Information about the created or updated Note",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/note-webhook"
              }
            }
          }
        }
      }
    },
    "note-comment": {
      "post": {
        "tags": ["Webhook Payloads"],
        "description": "Note Comment created or updated",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookRequestHeader"
          }
        ],
        "requestBody": {
          "description": "Information about the created or updated Note Comment",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/note-comment-webhook"
              }
            }
          }
        }
      }
    },
    "user": {
      "post": {
        "tags": ["Webhook Payloads"],
        "description": "User has accepted Karbon invite",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookRequestHeader"
          }
        ],
        "requestBody": {
          "description": "Information about the user who has accepted their invite",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/user-webhook"
              }
            }
          }
        }
      }
    },
    "work": {
      "post": {
        "tags": ["Webhook Payloads"],
        "description": "Work created or updated",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookRequestHeader"
          }
        ],
        "requestBody": {
          "description": "Information about the created or updated WorkItem",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/work-webhook"
              }
            }
          }
        }
      }
    }
  },
  "paths": {
    "/v3/IntegrationTaskDefinitions": {
      "get": {
        "operationId": "ListIntegrationTaskDefintions",
        "tags": ["Integrated Workflows"],
        "summary": "Get a list of integration task definitions",
        "description": "Use the `GET` method on this endpoint to receive a list of the integration task types that have been defined for your integration",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntegrationTaskDefinitions"
                }
              }
            }
          }
        }
      }
    },
    "/v3/IntegrationTasks": {
      "get": {
        "operationId": "ListIntegrationTasks",
        "tags": ["Integrated Workflows"],
        "summary": "Get a list of integration tasks",
        "description": "Use the `GET` method on this endpoint to receive a list of the integration tasks created in the Karbon account which has connected your integration",
        "parameters": [
          {
            "$ref": "#/components/parameters/IntegrationTaskListFilter"
          },
          {
            "$ref": "#/components/parameters/IntegrationTaskListOrderBy"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntegrationTasks"
                }
              }
            }
          }
        }
      }
    },
    "/v3/IntegrationTasks/{IntegrationTaskKey}": {
      "get": {
        "operationId": "GetIntegrationTask",
        "tags": ["Integrated Workflows"],
        "summary": "Get an integration task details",
        "description": "Use the `GET` method on this endpoint to retrieve the details of a single integration task",
        "parameters": [
          {
            "$ref": "#/components/parameters/IntegrationTaskKey"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntegrationTask"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "UpdateIntegrationTask",
        "tags": ["Integrated Workflows"],
        "summary": "Update an integration task",
        "description": "Use the `PUT` method on this endpoint to update the details of a single integration task",
        "parameters": [
          {
            "$ref": "#/components/parameters/IntegrationTaskKey"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {}
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "An integration task request body",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IntegrationTaskWriteable"
              }
            }
          }
        }
      }
    },
    "/v3/Invoices": {
      "get": {
        "operationId": "getInvoices",
        "tags": ["Billing"],
        "summary": "Gets a list of Invoices",
        "parameters": [
          {
            "$ref": "#/components/parameters/SkipRecords"
          },
          {
            "$ref": "#/components/parameters/TopRecords"
          },
          {
            "in": "query",
            "name": "$filter",
            "schema": {
              "type": "string"
            },
            "examples": {
              "invoiceStatusApproved": {
                "value": "InvoiceStatus eq 'Approved'",
                "summary": "Invoices with the status 'Approved'"
              },
              "invoiceStatusAwaitingPayment": {
                "value": "InvoiceStatus eq 'AwaitingPayment'",
                "summary": "Invoices with the status 'AwaitingPayment'"
              },
              "invoiceStatusPaid": {
                "value": "InvoiceStatus eq 'Paid'",
                "summary": "Invoices with the status 'Paid'"
              },
              "invoiceStatusExported": {
                "value": "InvoiceStatus eq 'Exported'",
                "summary": "Invoices with the status 'Exported'"
              },
              "invoiceStatusVoided": {
                "value": "InvoiceStatus eq 'Voided'",
                "summary": "Invoices with the status 'Voided'"
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will return a subset of the Invoices that satisfy the `$filter` expression. The `InvoiceStatus` property supports the `eq` operator."
          },
          {
            "in": "query",
            "name": "$orderby",
            "schema": {
              "type": "string"
            },
            "examples": {
              "orderByInvoiceDate": {
                "value": "InvoiceDate",
                "summary": "Order results by InvoiceDate, oldest to newest"
              },
              "orderByInvoiceDateDesc": {
                "value": "InvoiceDate desc",
                "summary": "Order results by InvoiceDate, newest to oldest"
              },
              "orderByInvoiceCreatedAt": {
                "value": "CreatedAt",
                "summary": "Order results by CreatedAt timestamp, oldest to newest"
              },
              "orderByInvoiceCreatedAtDesc": {
                "value": "CreatedAt desc",
                "summary": "Order results by CreatedAt timestamp, newest to oldest"
              },
              "orderByInvoiceUpdatedAt": {
                "value": "UpdatedAt",
                "summary": "Order results by UpdatedAt timestamp, oldest to newest"
              },
              "orderByInvoiceUpdatedAtDesc": {
                "value": "UpdatedAt desc",
                "summary": "Order results by UpdatedAt timestamp, newest to oldest"
              },
              "orderByInvoiceNumber": {
                "value": "InvoiceNumber",
                "summary": "Order results by InvoiceNumber, oldest to newest"
              },
              "orderByInvoiceNumberDesc": {
                "value": "InvoiceNumber desc",
                "summary": "Order results by InvoiceNumber, newest to oldest"
              }
            },
            "description": "Alter the sort order of the invoice list"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive a list of Invoices",
        "responses": {
          "200": {
            "description": "Successful Invoices GET operation",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "@odata.context": {
                      "type": "string",
                      "example": "https://api.karbonhq.com/v3/$metadata#Invoices",
                      "description": "The information about Karbon controllers generating this response."
                    },
                    "@odata.count": {
                      "type": "integer",
                      "example": 10,
                      "description": "The total number of results"
                    },
                    "values": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/BillingInvoice"
                      }
                    }
                  }
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Invoices",
                  "@odata.count": 1,
                  "value": [
                    {
                      "InvoiceKey": "M2dVbCt4RHk",
                      "InvoiceNumber": "KIN-1001",
                      "TotalAmountDue": 1607.13,
                      "InvoiceTotal": 1607.13,
                      "InvoiceSubTotal": 1397.5,
                      "InvoiceTaxTotal": 209.63,
                      "InvoiceDate": "2023-07-21T00:00:00Z",
                      "PaymentDueDate": "2023-07-28T00:00:00Z",
                      "UpdatedAt": "2023-07-20T23:52:11Z",
                      "CurrencyCode": "AUD",
                      "PaymentInstructions": null,
                      "InvoiceStatus": "AwaitingPayment",
                      "Client": {
                        "ClientKey": "2xxnBLyCP4Ts",
                        "ClientType": "Organization",
                        "Name": "Acme Corp",
                        "AddressLine": "15 Example Street",
                        "City": "Sydney",
                        "StateProvinceCounty": "NSW",
                        "ZipCode": "4004",
                        "Country": "Australia",
                        "EmailAddress": "acme@example.com"
                      },
                      "TaxLineItems": [
                        {
                          "TaxName": "GST",
                          "TaxValue": 209.63
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "example": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          }
        }
      }
    },
    "/v3/Invoices/{InvoiceKey}": {
      "get": {
        "operationId": "getInvoiceByKey",
        "tags": ["Billing"],
        "summary": "Gets a single Invoice",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "InvoiceKey",
            "example": "M2dVbCt4RHk",
            "schema": {
              "type": "string"
            },
            "description": "The Karbon-generated Invoice key"
          },
          {
            "$ref": "#/components/parameters/InvoiceExpandParams"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of an Invoice specified using the InvoiceKey.",
        "responses": {
          "200": {
            "description": "Successful Invoice GET operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "@odata.context": {
                          "type": "string",
                          "example": "https://api.karbonhq.com/v3/$metadata#Invoices/$entity",
                          "description": "The information about Karbon controllers generating this response."
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/BillingInvoiceWithPayment"
                    }
                  ]
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Invoices/$entity",
                  "InvoiceKey": "M2dVbCt4RHk",
                  "InvoiceNumber": "KIN-1001",
                  "TotalAmountDue": 1607.13,
                  "InvoiceTotal": 1607.13,
                  "InvoiceSubTotal": 1397.5,
                  "InvoiceTaxTotal": 209.63,
                  "InvoiceDate": "2023-07-21T00:00:00Z",
                  "PaymentDueDate": "2023-07-28T00:00:00Z",
                  "UpdatedAt": "2023-07-20T23:52:11Z",
                  "CurrencyCode": "AUD",
                  "PaymentInstructions": "Payment due 7 days from invoice date",
                  "InvoiceStatus": "AwaitingPayment",
                  "Client": {
                    "ClientKey": "2xxnBLyCP4Ts",
                    "ClientType": "Organization",
                    "Name": "Acme Corp",
                    "AddressLine": "15 Example Street",
                    "City": "Sydney",
                    "StateProvinceCounty": "NSW",
                    "ZipCode": "4004",
                    "Country": "Australia",
                    "EmailAddress": "acme@example.com"
                  },
                  "TaxLineItems": [
                    {
                      "TaxName": "GST",
                      "TaxValue": 209.63
                    }
                  ],
                  "LineItems": [
                    {
                      "LineItemKey": "string",
                      "BillableItemEntityKey": "string",
                      "BillableItemType": "TimeEntry",
                      "Description": "string",
                      "Quantity": 0,
                      "UnitPrice": "string",
                      "Amount": 0,
                      "TaxRate": 0,
                      "TaxRateName": "string"
                    }
                  ],
                  "Payments": [
                    {
                      "PaymentKey": "4n3mrlQPycxn",
                      "PaymentReference": "KPY-001",
                      "PaymentType": "ManualPayment",
                      "PaymentDate": "2025-01-07",
                      "Amount": 1100.5
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "UDI Not Found": {
                    "$ref": "#/components/examples/Invoice_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          }
        }
      }
    },
    "/v3/Payments": {
      "get": {
        "operationId": "getPayments",
        "tags": ["Billing"],
        "summary": "Gets a list of Payments",
        "parameters": [
          {
            "$ref": "#/components/parameters/SkipRecords"
          },
          {
            "$ref": "#/components/parameters/TopRecords"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive a list of Payments",
        "responses": {
          "200": {
            "description": "Successful Payments GET operation",
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "@odata.context": {
                      "type": "string",
                      "example": "https://api.karbonhq.com/v3/$metadata#Payments",
                      "description": "The information about Karbon controllers generating this response."
                    },
                    "@odata.count": {
                      "type": "integer",
                      "example": 10,
                      "description": "The total number of results"
                    },
                    "values": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/BillingPayment"
                      }
                    }
                  }
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Payments",
                  "@odata.count": 1,
                  "value": [
                    {
                      "InvoiceKey": "72dVb4dTRkH",
                      "PaymentReference": "KPY-1000",
                      "PaymentType": "ManualPayment",
                      "PaymentDate": "2023-07-28",
                      "GrossAmount": 1550.5,
                      "PaymentMethod": "Check",
                      "KarbonPayment": {
                        "CardType": "",
                        "CardCountry": null,
                        "CardFunding": "",
                        "PayoutStatus": "",
                        "SurchargeAmount": 0,
                        "KarbonFeeAmount": 0,
                        "KarbonFeeTaxAmount": 0,
                        "NetAmount": 0
                      },
                      "Client": null
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "example": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          }
        }
      }
    },
    "/v3/ManualPayments": {
      "post": {
        "operationId": "createManualPayment",
        "tags": ["Billing"],
        "summary": "Create a manual payment against an Invoice",
        "description": "Use the `POST` method on this endpoint to create a Manual Payment",
        "responses": {
          "201": {
            "description": "Manual Payment recorded successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "@odata.context": {
                      "type": "string",
                      "example": "https://api.karbonhq.com/v3/$metadata#Invoices/$entity",
                      "description": "The information about Karbon controllers generating this response."
                    },
                    "InvoiceKey": {
                      "type": "string",
                      "example": "2F3pqz88T2hW",
                      "description": "The unique Key of the Invoice which the payment was applied to."
                    },
                    "PaymentMethod": {
                      "type": "string",
                      "example": "Cash",
                      "description": "The method used to make the payment."
                    },
                    "PaymentDate": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2024-06-24T00:00:00Z",
                      "description": "The date the payment made by the customer."
                    },
                    "TotalAmount": {
                      "type": "number",
                      "format": "double",
                      "example": 99.95,
                      "description": "The amount of the payment"
                    },
                    "Reference": {
                      "description": "An optional reference to include with the payment.",
                      "oneOf": [
                        {
                          "type": "string",
                          "maxLength": 250,
                          "example": "Payment made in cash."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "PaymentProcessingKey": {
                      "type": "string",
                      "example": "2cmDVpGdCp99",
                      "description": "The unique id of the payment record."
                    }
                  }
                },
                "example": {
                  "@odata.context": "https://api-stage.karbonhq.com/v3/$metadata#ManualPayments/$entity",
                  "InvoiceKey": "2F3pqz88T2hW",
                  "PaymentMethod": "Cash",
                  "PaymentDate": "2024-06-06T00:00:00Z",
                  "TotalAmount": 1100.11,
                  "Reference": "Cash payment",
                  "PaymentProcessingKey": "2cmDVpGdCp99"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "description": "The response shown when trying to overpay an invoice",
                  "type": "object",
                  "properties": {
                    "Error": {
                      "type": "object",
                      "properties": {
                        "Code": {
                          "type": "string",
                          "description": "A code that denotes different types of error under the 400 response code.",
                          "example": "4002"
                        },
                        "Message": {
                          "type": "string",
                          "description": "The error message",
                          "example": "An attempt was made to overpay Invoice with [tenantPermaKey=2BzmMRkhbwBT] and [invoicePermaKey=tnl31HQDzRS]."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "A manual payment request body",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "required": ["InvoiceKey", "PaymentMethod", "PaymentDate", "TotalAmount"],
                "properties": {
                  "InvoiceKey": {
                    "type": "string",
                    "example": "tnl31HQDzRS",
                    "description": "The unique key of the Invoice to pay"
                  },
                  "PaymentMethod": {
                    "type": "string",
                    "example": "Cash",
                    "enum": [
                      "Bank Transfer",
                      "Direct Debit",
                      "Credit Card Online",
                      "Credit Card Office",
                      "Check",
                      "Cash",
                      "Other"
                    ],
                    "description": "The method used to pay the invoice"
                  },
                  "PaymentDate": {
                    "type": "string",
                    "example": "2024-06-30",
                    "description": "The date the Payment is to be Recorded using an ISO 8601 datestamp",
                    "format": "date"
                  },
                  "TotalAmount": {
                    "type": "number",
                    "example": 520.55,
                    "description": "The amount of the payment in the nominated currency, must be greater than 0 and equal or less than the outstanding due amount on the invoice.",
                    "format": "float",
                    "minimum": 0.01
                  },
                  "Reference": {
                    "type": "string",
                    "example": "Payment in person",
                    "description": "An optional reference to include with the payment."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/ManualPayments/{ManualPaymentKey}": {
      "delete": {
        "operationId": "deleteManualPayment",
        "tags": ["Billing"],
        "summary": "Delete a manual payment",
        "description": "Use the `DELETE` method on this endpoint to delete a Manual Payment",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "ManualPaymentKey",
            "example": "2Rz483jmtvzb",
            "schema": {
              "type": "string"
            },
            "description": "The Manual Payment key"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Manual Payment not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManualPaymentNotFoundErrorMessage"
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          }
        }
      }
    },
    "/v3/ReverseManualPayment": {
      "post": {
        "operationId": "reverseManualPayment",
        "tags": ["Billing"],
        "summary": "Reverse a manual payment",
        "description": "Use the `POST` method on this endpoint to reverse a Manual Payment",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Manual Payment not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManualPaymentNotFoundErrorMessage"
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "A reverse manual payment request body",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "required": ["PaymentKey", "ReversalDate"],
                "properties": {
                  "PaymentKey": {
                    "type": "string",
                    "example": "2NmwhRJXjHdH",
                    "description": "The unique key of the Manual Payment to reverse"
                  },
                  "ReversalDate": {
                    "type": "string",
                    "format": "date-time",
                    "example": "2025-08-01T00:00:00Z",
                    "description": "The date the Reversal is to be recorded using an ISO 8601 datestamp"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Payments/{PaymentKey}": {
      "get": {
        "operationId": "getPaymentByPaymentKey",
        "tags": ["Billing"],
        "summary": "Gets a single Payment",
        "parameters": [
          {
            "in": "path",
            "name": "PaymentKey",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "72dVb4dTRkH",
            "description": "The unique key of the payment"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive details of a single Payment",
        "responses": {
          "200": {
            "description": "Successful Payment GET operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "@odata.context": {
                          "type": "string",
                          "example": "https://api.karbonhq.com/v3/$metadata#Payments/$entity",
                          "description": "The information about Karbon controllers generating this response."
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/BillingPayment"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "example": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          }
        }
      }
    },
    "/v3/BusinessCards/{BusinessCardKey}": {
      "get": {
        "operationId": "getBusinessCardByKey",
        "tags": ["Business Cards"],
        "summary": "Gets a single Business Card",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "BusinessCardKey",
            "example": "2tBHyXtJBxBy",
            "schema": {
              "type": "string"
            },
            "description": "The Karbon-generated Business Card key"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a Business Card specified using the BusinessCardKey.",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "@odata.context": {
                          "type": "string",
                          "example": "https://api.karbonhq.com/v3/$metadata#BusinessCards/$entity",
                          "description": "The information about Karbon controllers generating this response."
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "EntityType": {
                          "type": "string",
                          "example": "Organization",
                          "enum": ["Contact", "Organization", "ClientGroup"],
                          "description": "The type of entity that this business card is connected to."
                        },
                        "EntityKey": {
                          "type": "string",
                          "example": "2jHPZngklwxQ",
                          "description": "The unique key for the entity specified this business card is connected to"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/BusinessCard"
                    }
                  ]
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#BusinessCards/$entity",
                  "@odata.type": "#KarbonService.ClientGroupDTO",
                  "BusinessCardKey": "2tBHyXtJBxBy",
                  "EntityType": "Organization",
                  "EntityKey": "2jHPZngklwxQ",
                  "IsPrimaryCard": true,
                  "WebSites": ["www.website.one", "www.website.two"],
                  "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                  "OrganizationKey": "ZGNmtYyLm4z",
                  "RoleOrTitle": "COO",
                  "FacebookLink": "facebook.com/sampleName",
                  "LinkedInLink": "linkedin.com/sampleName",
                  "TwitterLink": "twitter.com/sampleName",
                  "SkypeLink": "skype.com/sampleName",
                  "Addresses": [
                    {
                      "AddressKey": "e150a05a-2dea-4292-8bc8-03398c9384e4",
                      "AddressLines": "45 Sample Street",
                      "City": "Alexandria",
                      "StateProvinceCounty": "NSW",
                      "ZipCode": "2015",
                      "CountryCode": "AU",
                      "Label": "Physical"
                    }
                  ],
                  "PhoneNumbers": [
                    {
                      "PhoneNumberKey": "6e0b9ace-24b1-4328-a922-3b8be5ef5052",
                      "Number": "1234567890",
                      "CountryCode": "AU",
                      "Label": "Work"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "UDI Not Found": {
                    "$ref": "#/components/examples/BusinessCard_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "updateBusinessCardByKey",
        "tags": ["Business Cards"],
        "summary": "Updates a single Business Card",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "BusinessCardKey",
            "schema": {
              "type": "string"
            },
            "example": "2tBHyXtJBxBy",
            "description": "The Karbon-generated Business Card key"
          }
        ],
        "description": "Use the `PUT` method on this endpoint to update the details of a Business Card specified using the BusinessCardKey.",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Update_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/ResourceNotFound"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Non existent Key": {
                    "$ref": "#/components/examples/Shortened_5001"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "EntityType": {
                        "type": "string",
                        "example": "Organization",
                        "enum": ["Contact", "Organization", "ClientGroup"],
                        "description": "The type of entity that this business card is connected to."
                      },
                      "EntityKey": {
                        "type": "string",
                        "example": "2jHPZngklwxQ",
                        "description": "The unique key for the entity specified this business card is connected to"
                      }
                    }
                  },
                  {
                    "$ref": "#/components/schemas/BusinessCardRequest"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/v3/ClientGroups": {
      "get": {
        "tags": ["Client Groups"],
        "summary": "Gets a list of Client Groups",
        "parameters": [
          {
            "in": "query",
            "name": "$filter",
            "schema": {
              "type": "string",
              "pattern": "^FullName"
            },
            "example": "FullName eq 'Sample Management Team'",
            "description": "When this parameter is combined with the URI, this endpoint will return a subset of the Client Groups that satisfy the `$filter` expression.\n"
          },
          {
            "in": "query",
            "name": "$orderby",
            "schema": {
              "type": "string",
              "default": "ClientGroupKey"
            },
            "examples": {
              "fullName": {
                "value": "FullName",
                "summary": "Order by Full name in ascending (A-Z) order"
              },
              "fullNameDesc": {
                "value": "FullName desc",
                "summary": "Order by Full name in descending (Z-A) order"
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will return a list of Client Groups, sorted by the available properties.\n"
          },
          {
            "$ref": "#/components/parameters/SkipRecords"
          },
          {
            "$ref": "#/components/parameters/TopRecords"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive a paginated list of Client Groups from your tenant.\nUsing the query parameters available to this endpoint, you can also filter the list of Client Groups by their full name.\n\n**Notes**\n\n* This endpoint returns a maximum of 100 Client Groups at once.\n* If the query results in more than 100 Client Groups, a link to the next set of the results will be given in the `@odata.nextLink` field of the response.\n* The `$filter` query parameter supports a logical operator - `eq` and a property to help you form an expression.\n\n",
        "operationId": "getClientGroups",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetClientGroup"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Unsupported_Property_Filter"
                  },
                  "Unsupported Orderby Property": {
                    "$ref": "#/components/examples/Orderby_Unsupported_Property"
                  },
                  "$top limit exceeded": {
                    "$ref": "#/components/examples/Limit_Exceeded_Top"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": ["Client Groups"],
        "summary": "Creates a new Client Group",
        "description": "Use the `POST` method on this endpoint to create a new Client Group in your tenant.\n",
        "operationId": "createClientGroup",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ResponseCreateClientGroup"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "AccountingDetails": {
                          "type": ["string", "null"],
                          "description": "The accounting details associated with the Client Group. This property will be `null`."
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "BusinessCard": {
                          "$ref": "#/components/schemas/BusinessCard"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "ClientTeam": {
                          "$ref": "#/components/schemas/ClientTeam"
                        }
                      }
                    }
                  ]
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#ClientGroups/$entity",
                  "@odata.type": "#KarbonService.ClientGroupDTO",
                  "ClientGroupKey": "38zlxNyJSr8y",
                  "FullName": "Abigail Silvers",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Client",
                  "UserDefinedIdentifier": "SILVERS",
                  "RestrictionLevel": "Public",
                  "PrimaryContact": "Duncan Moore",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "Members": [
                    {
                      "ContactKey": null,
                      "OrganizationKey": "X6Hm1D2Jvxf"
                    },
                    {
                      "ContactKey": "CFbcmM5Lvzc",
                      "OrganizationKey": null
                    }
                  ],
                  "EntityDescription": {
                    "Text": "Bicycle rental service in the New jersey area."
                  },
                  "AccountingDetails": null
                }
              }
            },
            "headers": {
              "Location": {
                "description": "The endpoint URL to the newly created Client Group.",
                "schema": {
                  "type": "string",
                  "example": "https://api.karbonhq.com/v3/ClientGroups('4t8LbR1QcbGS')"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Create_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Duplicate UDI": {
                    "$ref": "#/components/examples/Duplicate_UDI"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreateClientGroup"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "AccountingDetails": {
                        "type": ["string", "null"],
                        "description": "The accounting details associated with the Client Group. This property will be `null`."
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "BusinessCard": {
                        "$ref": "#/components/schemas/BusinessCard"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "ClientTeam": {
                        "$ref": "#/components/schemas/ClientTeam"
                      }
                    }
                  }
                ]
              },
              "example": {
                "FullName": "Abigail Silvers",
                "ClientOwner": "rodney.muller@samplecompany.com",
                "ClientManager": "jessica.tse@samplecompany.com",
                "ContactType": "Client",
                "UserDefinedIdentifier": "SILVERS",
                "RestrictionLevel": "Public",
                "PrimaryContact": "Duncan Moore",
                "EntityDescription": {
                  "Text": "Bicycle rental service in the New jersey area."
                },
                "Members": [
                  {
                    "ContactKey": null,
                    "OrganizationKey": "X6Hm1D2Jvxf"
                  },
                  {
                    "ContactKey": "CFbcmM5Lvzc",
                    "OrganizationKey": null
                  }
                ],
                "ClientTeam": [
                  {
                    "MemberKey": "2q2wx44pTBNh",
                    "MemberType": "User",
                    "RoleType": "ClientManager"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/v3/ClientGroups/GetClientGroupByUserDefinedIdentifier(UserDefinedIdentifier='{UserDefinedIdentifier}')": {
      "get": {
        "tags": ["Client Groups"],
        "summary": "Gets a Client Group using UserDefinedIdentifier",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "UserDefinedIdentifier",
            "schema": {
              "type": "string"
            },
            "example": "SILVERS",
            "description": "A unique identifier that you had created to identify this Client Group. This parameter is **not** case sensitive."
          },
          {
            "in": "query",
            "name": "$expand",
            "schema": {
              "type": "string",
              "enum": ["BusinessCard"]
            },
            "example": "BusinessCard",
            "description": "When this parameter is combined with the URI, this endpoint will also return the Business Card of the Client Group.\n"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a Client Group specified using the UserDefinedIdentifier.\n\nUsing the query parameter available to this endpoint, you can also include Business Card details of the Client Group in the response.\n",
        "operationId": "getClientGroupByUDI",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ResponseCreateClientGroup"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "AccountingDetails": {
                          "type": ["string", "null"],
                          "description": "The accounting details associated with the Client Group. This property will be `null`."
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "BusinessCard": {
                          "$ref": "#/components/schemas/BusinessCard"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "ClientTeam": {
                          "$ref": "#/components/schemas/ClientTeam"
                        }
                      }
                    }
                  ]
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#ClientGroups/$entity",
                  "@odata.type": "#KarbonService.ClientGroupDTO",
                  "ClientGroupKey": "38zlxNyJSr8y",
                  "FullName": "Abigail Silvers",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Client",
                  "UserDefinedIdentifier": "SILVERS",
                  "RestrictionLevel": "Public",
                  "PrimaryContact": "Duncan Moore",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "Members": [
                    {
                      "ContactKey": "34yxkY51knn7",
                      "OrganizationKey": null
                    },
                    {
                      "ContactKey": null,
                      "OrganizationKey": "4ncPZ7q96SGc"
                    }
                  ],
                  "EntityDescription": {
                    "Text": "Bicycle rental service in the New jersey area."
                  },
                  "AccountingDetails": null,
                  "BusinessCard": {
                    "BusinessCardKey": "2tBHyXtJBxBy",
                    "EntityType": "ClientGroup",
                    "EntityKey": "38zlxNyJSr8y",
                    "IsPrimaryCard": true,
                    "WebSites": ["www.website.one", "www.website.two"],
                    "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                    "OrganizationKey": "ZGNmtYyLm4z",
                    "RoleOrTitle": "COO",
                    "FacebookLink": "facebook.com/sampleName",
                    "LinkedInLink": "linkedin.com/sampleName",
                    "TwitterLink": "twitter.com/sampleName",
                    "SkypeLink": "skype.com/sampleName",
                    "Addresses": [
                      {
                        "AddressKey": "e150a05a-2dea-4292-8bc8-03398c9384e4",
                        "AddressLines": "45 Sample Street",
                        "City": "Alexandria",
                        "StateProvinceCounty": "NSW",
                        "ZipCode": "2015",
                        "CountryCode": "AU",
                        "Label": "Physical"
                      }
                    ],
                    "PhoneNumbers": [
                      {
                        "PhoneNumberKey": "6e0b9ace-24b1-4328-a922-3b8be5ef5052",
                        "Number": "1234567890",
                        "CountryCode": "AU",
                        "Label": "Work"
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "UDI Is Empty": {
                    "$ref": "#/components/examples/UDI_Is_Empty"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "UDI Not Found": {
                    "$ref": "#/components/examples/UDI_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/ClientGroups/{ClientGroupkey}": {
      "get": {
        "tags": ["Client Groups"],
        "summary": "Gets a Client Group using ClientGroupkey",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "ClientGroupkey",
            "schema": {
              "type": "string"
            },
            "example": "4t8LbR1QcbGS",
            "description": "The Karbon-generated Client Group key"
          },
          {
            "in": "query",
            "name": "$expand",
            "schema": {
              "type": "string"
            },
            "examples": {
              "BusinessCard": {
                "value": "BusinessCard",
                "summary": "Include the Business Card for the Client Group the API response"
              },
              "ClientTeam": {
                "value": "ClientTeam",
                "summary": "Include the Client Team assigned to the Client Group in the API response"
              },
              "BusinessCardAndClientTeam": {
                "value": "BusinessCard,ClientTeam",
                "summary": "Include the Business Card and the Client Team assigned to the Client Group in the API response"
              }
            },
            "description": "When this parameter is specified in the query string this endpoint will also return the Business Card and/or Client Team of the Client Group.\n"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a Client Group specified using the `ClientGroupKey`.\n\nUsing the query parameter available to this endpoint,  you can also include the Business Card details of the Client Group in the response.\n",
        "operationId": "getClientGroupByID",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/ResponseCreateClientGroup"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "AccountingDetails": {
                          "type": ["string", "null"],
                          "description": "The accounting details associated with the Client Group. This property will be `null`."
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "BusinessCard": {
                          "$ref": "#/components/schemas/BusinessCard"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "ClientTeam": {
                          "$ref": "#/components/schemas/ClientTeam"
                        }
                      }
                    }
                  ]
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#ClientGroups/$entity",
                  "@odata.type": "#KarbonService.ClientGroupDTO",
                  "ClientGroupKey": "38zlxNyJSr8y",
                  "FullName": "Abigail Silvers",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Client",
                  "UserDefinedIdentifier": "SILVERS",
                  "RestrictionLevel": "Public",
                  "PrimaryContact": "Duncan Moore",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "Members": [
                    {
                      "ContactKey": "34yxkY51knn7",
                      "OrganizationKey": null
                    },
                    {
                      "ContactKey": null,
                      "OrganizationKey": "4ncPZ7q96SGc"
                    }
                  ],
                  "EntityDescription": {
                    "Text": "Bicycle rental service in the New jersey area."
                  },
                  "AccountingDetails": null,
                  "BusinessCard": {
                    "BusinessCardKey": "2tBHyXtJBxBy",
                    "EntityType": "ClientGroup",
                    "EntityKey": "38zlxNyJSr8y",
                    "IsPrimaryCard": true,
                    "WebSites": ["www.website.one", "www.website.two"],
                    "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                    "OrganizationKey": "ZGNmtYyLm4z",
                    "RoleOrTitle": "COO",
                    "FacebookLink": "facebook.com/sampleName",
                    "LinkedInLink": "linkedin.com/sampleName",
                    "TwitterLink": "twitter.com/sampleName",
                    "SkypeLink": "skype.com/sampleName",
                    "Addresses": [
                      {
                        "AddressKey": "e150a05a-2dea-4292-8bc8-03398c9384e4",
                        "AddressLines": "45 Sample Street",
                        "City": "Alexandria",
                        "StateProvinceCounty": "NSW",
                        "ZipCode": "2015",
                        "CountryCode": "AU",
                        "Label": "Physical"
                      }
                    ],
                    "PhoneNumbers": [
                      {
                        "PhoneNumberKey": "6e0b9ace-24b1-4328-a922-3b8be5ef5052",
                        "Number": "1234567890",
                        "CountryCode": "AU",
                        "Label": "Work"
                      }
                    ]
                  },
                  "ClientTeam": [
                    {
                      "MemberKey": "JTphCpQqQYg",
                      "MemberType": "User",
                      "RoleType": "ClientOwner"
                    },
                    {
                      "MemberKey": "nRML2ngs7WJ",
                      "MemberType": "User",
                      "RoleType": "ClientManager"
                    },
                    {
                      "MemberKey": "3fv7lflmd1Z7",
                      "MemberType": "User",
                      "RoleType": "UserDefinedRole2"
                    },
                    {
                      "MemberKey": "3v9YJmt55hLY",
                      "MemberType": "User",
                      "RoleType": "UserDefinedRole1"
                    },
                    {
                      "MemberKey": "3zdQh89xCmZM",
                      "MemberType": "User",
                      "RoleType": null
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/Key_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Client Groups"],
        "summary": "Updates a Client Group (Full)",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "ClientGroupkey",
            "schema": {
              "type": "string"
            },
            "example": "4t8LbR1QcbGS",
            "description": "The Karbon-generated Client Group key"
          }
        ],
        "description": "Use the `PUT` method on this endpoint to update full details of a Client Group specified using the `ClientGroupkey`.\n\nUsing the query parameter available to this endpoint, you can also update the Business Card details of the Client Group.\n",
        "operationId": "putClientGroupByID",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Update_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/ResourceNotFound"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Non existent Key": {
                    "$ref": "#/components/examples/Shortened_5001"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreateClientGroup"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "BusinessCard": {
                        "$ref": "#/components/schemas/BusinessCardRequest"
                      }
                    }
                  }
                ]
              },
              "example": {
                "FullName": "Abigail Silvers",
                "ClientOwner": "rodney.muller@samplecompany.com",
                "ClientManager": "jessica.tse@samplecompany.com",
                "ContactType": "Client",
                "UserDefinedIdentifier": "SILVERS",
                "RestrictionLevel": "Public",
                "PrimaryContact": "Duncan Moore",
                "EntityDescription": {
                  "Text": "Bicycle rental service in the New jersey area."
                },
                "BusinessCard": {
                  "IsPrimaryCard": true,
                  "WebSites": ["www.website.one", "www.website.two"],
                  "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                  "RoleOrTitle": "COO",
                  "FacebookLink": "facebook.com/sampleName",
                  "LinkedInLink": "linkedin.com/sampleName",
                  "TwitterLink": "twitter.com/sampleName",
                  "SkypeLink": "skype.com/sampleName",
                  "Addresses": [
                    {
                      "AddressLines": "45 Sample Street",
                      "City": "Alexandria",
                      "StateProvinceCounty": "NSW",
                      "ZipCode": "2015",
                      "CountryCode": "AU",
                      "Label": "Physical"
                    }
                  ],
                  "PhoneNumbers": [
                    {
                      "Number": "1234567890",
                      "CountryCode": "AU",
                      "Label": "Work"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": ["Client Groups"],
        "summary": "Updates a Client Group (Partial)",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "ClientGroupkey",
            "schema": {
              "type": "string"
            },
            "example": "4t8LbR1QcbGS",
            "description": "The Karbon-generated Client Group key"
          }
        ],
        "description": "Use the `PATCH` method on this endpoint to update partial details of a Client Group specified using the `ClientGroupkey`.\n\nThis method **only supports** editing the `FullName` property.\n",
        "operationId": "patchClientGroupByID",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Update_Unsupported_Property"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/ResourceNotFound"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Non existent Key": {
                    "$ref": "#/components/examples/Shortened_5001"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "FullName": {
                    "type": "string",
                    "description": "The full name of the Client Group",
                    "example": "Abigail Silvers"
                  }
                }
              },
              "example": {
                "FullName": "Abigail Silvers"
              }
            }
          }
        }
      }
    },
    "/v3/Comments('{Commentkey}')": {
      "get": {
        "tags": ["Comments"],
        "summary": "Gets a Comment using CommentKey",
        "description": "This endpoint can be used to get the comment attached to any Karbon entity (e.g., Work Item, Timesheet, Notes, Contacts).\n\n\nTo place a call using this endpoint, you will need the unique `Commentkey` that is used to identify a particular comment in Karbon.",
        "operationId": "getComment",
        "parameters": [
          {
            "name": "Commentkey",
            "in": "path",
            "description": "A Karbon-generated unique value that is used to identify the comment",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Xn2r5u7xZe"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetComment"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Update_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/CommentKey_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Contacts": {
      "get": {
        "tags": ["Contacts"],
        "summary": "Gets a list of Contacts",
        "parameters": [
          {
            "in": "query",
            "name": "$filter",
            "schema": {
              "type": "string"
            },
            "examples": {
              "FullName": {
                "value": "FullName eq 'Sample Management Team",
                "summary": "Return only the Contacts where the Full Name matches 'Sample Client Team'"
              },
              "EmailAddress": {
                "value": "EmailAddress eq 'karbon@example.com'",
                "summary": "Return only the Contacts where the Email Address matches 'karbon@example.com'"
              },
              "PhoneNumber": {
                "value": "PhoneNumber eq '220114588'",
                "summary": "Return only the Contacts where the Phone Number matches '220114588'"
              },
              "ContactType": {
                "value": "ContactType eq 'Client'",
                "summary": "Return only the Contacts where the Contact Type matches 'Client'"
              },
              "externalKey": {
                "value": "ExternalKey eq '123987456'",
                "summary": "Return only the Contacts whose ExternalKey matches '123987456'. ExternalKey is the identifier from an integrated external system - XPM Client ID, Xero Contact ID, or QuickBooks Online Intuit Customer ID. Only the eq operator is supported."
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will return a subset of the Contacts that satisfy the `$filter` expression.\n"
          },
          {
            "in": "query",
            "name": "$orderby",
            "schema": {
              "type": "string",
              "enum": ["FullName", "FullName desc", "LastModifiedDateTime", "LastModifiedDateTime desc"],
              "default": "ClientGroupKey"
            },
            "example": "FullName",
            "description": "When this parameter is combined with the URI, this endpoint will return a list of Contacts, sorted by the available properties.\n"
          },
          {
            "$ref": "#/components/parameters/SkipRecords"
          },
          {
            "$ref": "#/components/parameters/TopRecords"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive a paginated list of Contacts from your tenant.   Using the query parameters available to this endpoint,  you can also filter the list of Contacts by their full name, email address, or phone number.\n\n**Notes**  <ul>  <li>This endpoint returns a maximum of 100 Contacts at once.</li>  <li>If the query results in more than 100 Contacts, a link to the next set of the results will be given in the `@odata.nextLink` field of the response.</li>  <li>The `$filter` query parameter supports 3 logical operators (`eq`, `contains`, and `and`) and 3 properties to help you form an expression. Usage examples below</li> <table> <thead> <tr>\n<th>Logical Operators</th>\n<th>Purpose</th>\n<th>FullName</th>\n<th>EmailAddress</th>\n<th>PhoneNumber</th>\n</tr> </thead> <tbody>\n<tr>\n<td>eq</td>\n<td>Full-text search</td>\n<td>/v3/Contacts?$filter=FullName eq 'Sample Management\nTeam'</td>\n<td>/v3/Contacts?$filter=EmailAddress eq\n'sample@company.com'</td>\n<td>/v3/Contacts?$filter=PhoneNumber eq\n'1234567890'</td>\n</tr>\n<tr>\n<td>contains</td>\n<td>Partial-text search</td>\n<td>/v3/Contacts?$filter=(contains(FullName, 'Management\nTeam'))</td>\n<td>/v3/Contacts?$filter=(contains(EmailAddress,\n'sample@'))</td>\n<td>/v3/Contacts?$filter=(contains(PhoneNumber,\n'45678'))</td>\n</tr>\n<tr>\n<td>and</td>\n<td>Combines properties</td>\n<td colspan = \"2\">/v3/Contacts?$filter=PhoneNumber eq\n'1234567890' and contains(FullName, 'Management Team')</td>\n</tr>\n</tbody> </table>\n",
        "operationId": "getAllContacts",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetContacts"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Unsupported_Property_Filter"
                  },
                  "Unsupported Orderby Property": {
                    "$ref": "#/components/examples/Orderby_Unsupported_Property"
                  },
                  "$top limit exceeded": {
                    "$ref": "#/components/examples/Limit_Exceeded_Top"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": ["Contacts"],
        "summary": "Creates a new Contact",
        "description": "Use the `POST` method on this endpoint to create a new Contact in your tenant.\n",
        "operationId": "createContact",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseCreateContact"
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Contacts/KarbonService.ContactDTO/$entity",
                  "@odata.type": "#KarbonService.ContactDTO",
                  "ContactKey": "67zlxNyJSr8e",
                  "FirstName": "William",
                  "MiddleName": "John",
                  "LastName": "Connor",
                  "PreferredName": "Bill",
                  "Salutation": "Mr",
                  "Suffix": "Jr.",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Client",
                  "UserDefinedIdentifier": "BILLJR",
                  "RestrictionLevel": "Public",
                  "AvatarUrl": "https://az.karbonemail.com/images/e4ae96c1-8d17-4c6e-af8a-8040482176fc",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "EntityDescription": {
                    "Text": "Birthday on June 23."
                  },
                  "AccountingDetail": {
                    "ContactPermaKey": "67zlxNyJSr8e",
                    "OrganizationPermaKey": null,
                    "BirthDate": "1969-08-05T00:00:00Z",
                    "DeathDate": null,
                    "Salutation": "Mr",
                    "Sex": "M",
                    "FinancialYearEndDay": 30,
                    "FinancialYearEndMonth": 8,
                    "IncorporationDate": null,
                    "IncorporationState": null,
                    "LegalName": null,
                    "LineOfBusiness": null,
                    "EntityType": null,
                    "TaxCountryCode": "US",
                    "TradingName": null,
                    "AnnualRevenue": null,
                    "BaseCurrency": null,
                    "GstBasis": null,
                    "GstPeriod": null,
                    "IncomeTaxInstallmentPeriod": "Yearly",
                    "IsVATRegistered": null,
                    "OrganizationValuation": null,
                    "PaysTax": null,
                    "PrepareGST": null,
                    "ProvisionalTaxBasic": null,
                    "ProvisionalTaxRatio": null,
                    "RevenueModel": null,
                    "SalesTaxBasis": null,
                    "SalesTaxPeriod": null,
                    "Sells": null,
                    "RegistrationNumbers": [
                      {
                        "RegistrationNumber": "12-3456789",
                        "Type": "Social Security Number (SSN)"
                      }
                    ],
                    "Notes": [
                      {
                        "Body": "This is a sample note text.",
                        "Type": "Basic"
                      }
                    ]
                  },
                  "BusinessCards": [
                    {
                      "BusinessCardKey": "2tBHyXtJBxBy",
                      "EntityType": "Contact",
                      "EntityKey": "67zlxNyJSr8e",
                      "IsPrimaryCard": true,
                      "WebSites": ["www.website.one", "www.website.two"],
                      "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                      "OrganizationKey": "ZGNmtYyLm4z",
                      "RoleOrTitle": "COO",
                      "FacebookLink": "facebook.com/sampleName",
                      "LinkedInLink": "linkedin.com/sampleName",
                      "TwitterLink": "twitter.com/sampleName",
                      "SkypeLink": "skype.com/sampleName",
                      "Addresses": [
                        {
                          "AddressKey": "e150a05a-2dea-4292-8bc8-03398c9384e4",
                          "AddressLines": "45 Sample Street",
                          "City": "Alexandria",
                          "StateProvinceCounty": "NSW",
                          "ZipCode": "2015",
                          "CountryCode": "AU",
                          "Label": "Physical"
                        }
                      ],
                      "PhoneNumbers": [
                        {
                          "PhoneNumberKey": "6e0b9ace-24b1-4328-a922-3b8be5ef5052",
                          "Number": "1234567890",
                          "CountryCode": "AU",
                          "Label": "Work"
                        }
                      ]
                    }
                  ]
                }
              }
            },
            "headers": {
              "Location": {
                "description": "The endpoint URL to the newly created Contact.",
                "schema": {
                  "type": "string",
                  "example": "https://api.karbonhq.com/v3/Contacts('9zgh8pk1dfL')/KarbonService.ContactDTO"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Create_Data"
                  },
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Update_Unsupported_Property"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Duplicate UDI": {
                    "$ref": "#/components/examples/Duplicate_UDI"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContact"
              }
            }
          }
        }
      }
    },
    "/v3/Contacts/GetContactByUserDefinedIdentifier(UserDefinedIdentifier='{UserDefinedIdentifier}')": {
      "get": {
        "tags": ["Contacts"],
        "summary": "Gets a Contact using UserDefinedIdentifier",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "UserDefinedIdentifier",
            "schema": {
              "type": "string"
            },
            "example": "BILLJR",
            "description": "A unique identifier that you had created to identify this Contact. This parameter is **not** case sensitive."
          },
          {
            "in": "query",
            "name": "$expand",
            "schema": {
              "type": "string",
              "enum": ["BusinessCards"]
            },
            "example": "BusinessCards",
            "description": "When this parameter is combined with the URI, this endpoint will also return the Business Cards of the Contact.\n"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a Contact specified using the UserDefinedIdentifier.\n\nUsing the query parameter available to this endpoint, you can also include Business Card details of the Contact in the response.\n",
        "operationId": "getContactByUDI",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseCreateContact"
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Contacts/KarbonService.ContactDTO/$entity",
                  "@odata.type": "#KarbonService.ContactDTO",
                  "ContactKey": "67zlxNyJSr8e",
                  "FirstName": "William",
                  "MiddleName": "John",
                  "LastName": "Connor",
                  "PreferredName": "Bill",
                  "Salutation": "Mr",
                  "Suffix": "Jr.",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Client",
                  "UserDefinedIdentifier": "BILLJR",
                  "RestrictionLevel": "Public",
                  "AvatarUrl": "https://az.karbonemail.com/images/e4ae96c1-8d17-4c6e-af8a-8040482176fc",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "EntityDescription": {
                    "Text": "Birthday on June 23."
                  },
                  "AccountingDetail": {
                    "ContactPermaKey": "67zlxNyJSr8e",
                    "OrganizationPermaKey": null,
                    "BirthDate": "1969-08-05T00:00:00Z",
                    "DeathDate": null,
                    "Salutation": "Mr",
                    "Sex": "M",
                    "FinancialYearEndDay": 30,
                    "FinancialYearEndMonth": 8,
                    "IncorporationDate": null,
                    "IncorporationState": null,
                    "LegalName": null,
                    "LineOfBusiness": null,
                    "EntityType": null,
                    "TaxCountryCode": "US",
                    "TradingName": null,
                    "AnnualRevenue": null,
                    "BaseCurrency": null,
                    "GstBasis": null,
                    "GstPeriod": null,
                    "IncomeTaxInstallmentPeriod": "Quarterly",
                    "IsVATRegistered": null,
                    "OrganizationValuation": null,
                    "PaysTax": null,
                    "PrepareGST": null,
                    "ProvisionalTaxBasic": null,
                    "ProvisionalTaxRatio": null,
                    "RevenueModel": null,
                    "SalesTaxBasis": null,
                    "SalesTaxPeriod": null,
                    "Sells": null,
                    "RegistrationNumbers": [
                      {
                        "RegistrationNumber": "12-3456789",
                        "Type": "Social Security Number (SSN)"
                      }
                    ],
                    "Notes": [
                      {
                        "Body": "This is a sample note text.",
                        "Type": "Basic"
                      }
                    ]
                  },
                  "BusinessCards": [
                    {
                      "BusinessCardKey": "2tBHyXtJBxBy",
                      "EntityType": "Contact",
                      "EntityKey": "67zlxNyJSr8e",
                      "IsPrimaryCard": true,
                      "WebSites": ["www.website.one", "www.website.two"],
                      "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                      "OrganizationKey": "ZGNmtYyLm4z",
                      "RoleOrTitle": "COO",
                      "FacebookLink": "facebook.com/sampleName",
                      "LinkedInLink": "linkedin.com/sampleName",
                      "TwitterLink": "twitter.com/sampleName",
                      "SkypeLink": "skype.com/sampleName",
                      "Addresses": [
                        {
                          "AddressKey": "e150a05a-2dea-4292-8bc8-03398c9384e4",
                          "AddressLines": "45 Sample Street",
                          "City": "Alexandria",
                          "StateProvinceCounty": "NSW",
                          "ZipCode": "2015",
                          "CountryCode": "AU",
                          "Label": "Physical"
                        }
                      ],
                      "PhoneNumbers": [
                        {
                          "PhoneNumberKey": "6e0b9ace-24b1-4328-a922-3b8be5ef5052",
                          "Number": "1234567890",
                          "CountryCode": "AU",
                          "Label": "Work"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "UDI Is Empty": {
                    "$ref": "#/components/examples/UDI_Is_Empty"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "UDI Not Found": {
                    "$ref": "#/components/examples/UDI_Not_Found_Contact"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Contacts/{Contactkey}": {
      "get": {
        "tags": ["Contacts"],
        "summary": "Gets a Contact using Contactkey",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "Contactkey",
            "schema": {
              "type": "string"
            },
            "example": "4jgPTtcXxwC2",
            "description": "The Karbon-generated Contact key"
          },
          {
            "in": "query",
            "name": "$expand",
            "schema": {
              "type": "string",
              "enum": ["BusinessCards", "ClientTeam", "ClientAccess"]
            },
            "example": "BusinessCards",
            "description": "When this parameter is combined with the URI, this endpoint will also return one or more of the following: Business Cards for the Contact, the Client Team assigned to the Contact, or a list of other Contacts that can access this Contact in Karbon for Clients."
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a Contact specified using the `Contactkey`.\n\nUsing the query parameter available to this endpoint,  you can also include the Business Card details of the Contacts in the response.\n",
        "operationId": "getContactByID",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseCreateContact"
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Contacts/KarbonService.ContactDTO/$entity",
                  "@odata.type": "#KarbonService.ContactDTO",
                  "ContactKey": "67zlxNyJSr8e",
                  "FirstName": "William",
                  "MiddleName": "John",
                  "LastName": "Connor",
                  "PreferredName": "Bill",
                  "Salutation": "Mr",
                  "Suffix": "Jr.",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Client",
                  "UserDefinedIdentifier": "BILLJR",
                  "RestrictionLevel": "Public",
                  "AvatarUrl": "https://az.karbonemail.com/images/e4ae96c1-8d17-4c6e-af8a-8040482176fc",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "EntityDescription": {
                    "Text": "Birthday on June 23."
                  },
                  "AccountingDetail": {
                    "ContactPermaKey": "67zlxNyJSr8e",
                    "OrganizationPermaKey": null,
                    "BirthDate": "1969-08-05T00:00:00Z",
                    "DeathDate": null,
                    "Salutation": "Mr",
                    "Sex": "M",
                    "FinancialYearEndDay": 30,
                    "FinancialYearEndMonth": 8,
                    "IncorporationDate": null,
                    "IncorporationState": null,
                    "LegalName": null,
                    "LineOfBusiness": null,
                    "EntityType": null,
                    "TaxCountryCode": "US",
                    "TradingName": null,
                    "AnnualRevenue": null,
                    "BaseCurrency": null,
                    "GstBasis": null,
                    "GstPeriod": null,
                    "IncomeTaxInstallmentPeriod": "Quarterly",
                    "IsVATRegistered": null,
                    "OrganizationValuation": null,
                    "PaysTax": null,
                    "PrepareGST": null,
                    "ProvisionalTaxBasic": null,
                    "ProvisionalTaxRatio": null,
                    "RevenueModel": null,
                    "SalesTaxBasis": null,
                    "SalesTaxPeriod": null,
                    "Sells": null,
                    "RegistrationNumbers": [
                      {
                        "RegistrationNumber": "12-3456789",
                        "Type": "Social Security Number (SSN)"
                      }
                    ],
                    "Notes": [
                      {
                        "Body": "This is a sample note text.",
                        "Type": "Basic"
                      }
                    ]
                  },
                  "BusinessCards": [
                    {
                      "BusinessCardKey": "2tBHyXtJBxBy",
                      "EntityType": "Contact",
                      "EntityKey": "67zlxNyJSr8e",
                      "IsPrimaryCard": true,
                      "WebSites": ["www.website.one", "www.website.two"],
                      "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                      "OrganizationKey": "ZGNmtYyLm4z",
                      "RoleOrTitle": "COO",
                      "FacebookLink": "facebook.com/sampleName",
                      "LinkedInLink": "linkedin.com/sampleName",
                      "TwitterLink": "twitter.com/sampleName",
                      "SkypeLink": "skype.com/sampleName",
                      "Addresses": [
                        {
                          "AddressKey": "e150a05a-2dea-4292-8bc8-03398c9384e4",
                          "AddressLines": "45 Sample Street",
                          "City": "Alexandria",
                          "StateProvinceCounty": "NSW",
                          "ZipCode": "2015",
                          "CountryCode": "AU",
                          "Label": "Physical"
                        }
                      ],
                      "PhoneNumbers": [
                        {
                          "PhoneNumberKey": "6e0b9ace-24b1-4328-a922-3b8be5ef5052",
                          "Number": "1234567890",
                          "CountryCode": "AU",
                          "Label": "Work"
                        }
                      ]
                    }
                  ],
                  "ClientTeam": [
                    {
                      "MemberKey": "JTphCpQqQYg",
                      "MemberType": "User",
                      "RoleType": "ClientOwner"
                    },
                    {
                      "MemberKey": "nRML2ngs7WJ",
                      "MemberType": "User",
                      "RoleType": "ClientManager"
                    },
                    {
                      "MemberKey": "3fv7lflmd1Z7",
                      "MemberType": "User",
                      "RoleType": "UserDefinedRole2"
                    },
                    {
                      "MemberKey": "3v9YJmt55hLY",
                      "MemberType": "User",
                      "RoleType": "UserDefinedRole1"
                    },
                    {
                      "MemberKey": "3zdQh89xCmZM",
                      "MemberType": "User",
                      "RoleType": null
                    }
                  ],
                  "ClientAccess": [
                    {
                      "ClientKey": "67zlxNyJSr8e",
                      "ClientType": "Contact",
                      "AccessLevel": "Limited"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Update_Unsupported_Property"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/ContactKey_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Contacts"],
        "summary": "Updates a Contact (Full)",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "Contactkey",
            "schema": {
              "type": "string"
            },
            "example": "4t8LbR1QcbGS",
            "description": "The Karbon-generated Contact key"
          }
        ],
        "description": "Use the `PUT` method on this endpoint to update full details of a Contact specified using the `Contactkey`.\n\nUsing the query parameter `$expand` with this endpoint, you can also update the Business Card details of the Contact.\n\n**Note:** When updating business cards, you must include `BusinessCardKey`, `EntityType` and `EntityKey` properties for existing Business Cards - or the existing card and any associated Client Requests may be removed.\n\n**BusinessCards is optional:** If the `BusinessCards` array is omitted from the request body, the existing Business Cards on the Contact are left untouched. Include the `BusinessCards` array only when you intend to update it.\n\n**RegistrationNumber null/empty values delete the entry:** If a `RegistrationNumbers` entry is included with a null, empty, or whitespace `RegistrationNumber` value, any existing registration number of that `Type` is deleted. If no entry exists for that `Type`, the request is a no-op. Non-blank values continue to upsert as before.",
        "operationId": "putContactByID",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Update_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/ResourceNotFound"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Non existent Key": {
                    "$ref": "#/components/examples/Shortened_5001"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContact"
              }
            }
          }
        }
      },
      "patch": {
        "tags": ["Contacts"],
        "summary": "Updates a Contact (Partial)",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "Contactkey",
            "schema": {
              "type": "string"
            },
            "example": "4t8LbR1QcbGS",
            "description": "The Karbon-generated Contact key"
          }
        ],
        "description": "Use the `PATCH` method on this endpoint to update partial details of a Contact specified using the `Contactkey`.\n\nThis method **only supports** editing the `FirstName`, `MiddleName`, `LastName`, `PreferredName`, `Salutation` and `Suffix` properties.\n",
        "operationId": "patchContactsByID",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "@odata.context": {
                      "type": "string",
                      "description": "The information about Karbon controllers generating this response."
                    },
                    "@odata.type": {
                      "type": "string",
                      "description": "The information about Karbon Objects generating this response."
                    },
                    "ContactKey": {
                      "type": "string",
                      "description": "A Karbon-generated value that is used to identify the Contact"
                    },
                    "FirstName": {
                      "type": "string",
                      "description": "The first name of the Contact"
                    },
                    "MiddleName": {
                      "type": "string",
                      "description": "The middle name of the Contact"
                    },
                    "LastName": {
                      "type": "string",
                      "description": "The last name of the Contact"
                    },
                    "PreferredName": {
                      "type": "string",
                      "description": "The preferred name of the Contact"
                    },
                    "Salutation": {
                      "type": "string",
                      "description": "The title to address the Contact"
                    },
                    "Suffix": {
                      "type": "string",
                      "description": "The suffix of the Contact"
                    },
                    "ClientOwner": {
                      "type": "string",
                      "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the Contact. You can only use the UserKey or the email address of an existing team member."
                    },
                    "ClientManager": {
                      "type": "string",
                      "description": "The team member in your firm who manages the work for Contact. You can only use the UserKey or the email address of an existing team member.",
                      "example": "jessica.tse@samplecompany.com"
                    },
                    "ContactType": {
                      "type": "string",
                      "description": "The Contact Type for this Contact. You can only use existing Contact Types, these are available from the TenantSettings endpoint."
                    },
                    "UserDefinedIdentifier": {
                      "type": "string",
                      "description": "A unique key that you can use to identify this Contact."
                    },
                    "RestrictionLevel": {
                      "type": "string",
                      "description": "The privacy level for this Client Group.\n\n<ul><li>Public Client Groups can be managed by anyone in the firm</li> <li>Private Client Groups can only be managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team). Basic details (name of the Contacts and the Work Items) related to such Client Groups are visible to anyone in the firm.</li> <li>Hidden Client Groups are only be visible to and managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team).</li>\n",
                      "example": "Public",
                      "default": "Public",
                      "enum": ["Public", "Private", "Hidden"]
                    },
                    "AvatarUrl": {
                      "type": "string",
                      "description": "The URL to the Contact's avatar"
                    },
                    "LastModifiedDateTime": {
                      "type": "string",
                      "format": "date-time",
                      "description": "The date and time at which this Contact was last modified."
                    },
                    "EntityDescription": {
                      "type": "object",
                      "properties": {
                        "Text": {
                          "type": "string",
                          "description": "Free-form text that can be used to add more information about the Client Group"
                        }
                      }
                    },
                    "AccountingDetail": {
                      "type": ["string", "null"],
                      "description": "The accounting details associated with the Contact. This property will be `null`."
                    }
                  }
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Contacts/KarbonService.ContactDTO/$entity",
                  "@odata.type": "#KarbonService.ContactDTO",
                  "ContactKey": "67zlxNyJSr8e",
                  "FirstName": "William",
                  "MiddleName": "John",
                  "LastName": "Connor",
                  "PreferredName": "Bill",
                  "Salutation": "Mr",
                  "Suffix": "Jr.",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Client",
                  "UserDefinedIdentifier": "BILLJR",
                  "RestrictionLevel": "Public",
                  "AvatarUrl": "https://az.karbonemail.com/images/e4ae96c1-8d17-4c6e-af8a-8040482176fc",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "EntityDescription": {
                    "Text": "Birthday on June 23."
                  },
                  "AccountingDetail": null
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Update_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  },
                  "Invalid Property": {
                    "$ref": "#/components/examples/Invalid_Property"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/ResourceNotFound"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Non existent Key": {
                    "$ref": "#/components/examples/Shortened_5001"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "FirstName": {
                    "type": "string",
                    "description": "The first name of the Contact",
                    "example": "William"
                  },
                  "MiddleName": {
                    "type": "string",
                    "description": "The middle name of the Contact",
                    "example": "John"
                  },
                  "LastName": {
                    "type": "string",
                    "description": "The last name of the Contact",
                    "example": "Connor"
                  },
                  "PreferredName": {
                    "type": "string",
                    "description": "The preferred name of the Contact",
                    "example": "Bill"
                  },
                  "Salutation": {
                    "type": "string",
                    "description": "The title to address the Contact",
                    "example": "Mr"
                  },
                  "Suffix": {
                    "type": "string",
                    "description": "The suffix of the Contact",
                    "example": "Jr."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/CustomFields": {
      "get": {
        "tags": ["Custom Fields"],
        "description": "Retrieve a list of all of the custom fields that have been created for a Karbon account",
        "summary": "Gets all custom field definitions for the current tenant",
        "operationId": "GetCustomFieldDefinitions",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldDefinitions"
                },
                "example": {
                  "Key": "ZGNmtYyLm4z",
                  "Name": "Industry Type",
                  "Type": "Text",
                  "IsVisibleToContacts": true,
                  "IsVisibleToOrganizations": true,
                  "ListOptions": []
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": ["Custom Fields"],
        "description": "Defines a new custom field that can be assigned to a Contact and/or Organization - use the Karbon UI to create examples of how a new field with specific list options should be created",
        "summary": "Creates a new custom field definition",
        "operationId": "CreateCustomFieldDefinition",
        "responses": {
          "201": {
            "description": "Custom field definition successfully created",
            "headers": {
              "Location": {
                "description": "Location of the newly created resource",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldDefinition"
                },
                "example": {
                  "Key": "ZGNmtYyLm4z",
                  "Name": "Industry Type",
                  "Type": "Text",
                  "IsVisibleToContacts": true,
                  "IsVisibleToOrganizations": true,
                  "ListOptions": []
                }
              }
            }
          },
          "400": {
            "description": "Incoming Model is invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/NotFound"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Error processing Request"
          }
        },
        "requestBody": {
          "description": "The payload sent to create a new Custom Field",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldDefinition"
              }
            }
          }
        }
      }
    },
    "/v3/CustomFields/{CustomFieldDefinitionKey}": {
      "delete": {
        "tags": ["Custom Fields"],
        "description": "Delete a custom field defintion by key",
        "summary": "Deletes a custom field definition by key",
        "operationId": "DeleteCustomFieldDefinition",
        "parameters": [
          {
            "name": "CustomFieldDefinitionKey",
            "in": "path",
            "description": "The key of the custom field definition to delete",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "ZGNmtYyLm4z"
          }
        ],
        "responses": {
          "204": {
            "description": "Custom field definition successfully deleted"
          },
          "404": {
            "description": "Custom field definition not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/NotFound"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/CustomFieldValues/{EntityKey}": {
      "get": {
        "tags": ["Custom Fields"],
        "description": "Retrieves the custom fields for a Contact or Organization",
        "summary": "Gets custom field values for a specific entity",
        "operationId": "GetCustomFieldValues",
        "parameters": [
          {
            "name": "EntityKey",
            "in": "path",
            "description": "The key to get custom field values for a Contact or Organization",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Lm4zGNmtYyZ"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldValues"
                },
                "example": {
                  "EntityKey": "ZGNmtYyLm4z",
                  "CustomFieldValues": [
                    {
                      "Key": "ZGNGtYyLm4z",
                      "Name": "Industry Type",
                      "Type": "Text",
                      "Value": ["Professional Services"]
                    },
                    {
                      "Key": "AFNGtYyLm4z",
                      "Name": "Revenue",
                      "Type": "Number",
                      "Value": ["1000000"]
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Entity not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/NotFound"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Custom Fields"],
        "description": "Performs an update of the complete set of custom field values for a Contact or Organization",
        "summary": "Updates custom field values for a specific entity",
        "operationId": "UpdateCustomFieldValues",
        "parameters": [
          {
            "name": "EntityKey",
            "in": "path",
            "description": "The key to get custom field values for a Contact or Organization",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Lm4zGNmtYyZ"
          }
        ],
        "responses": {
          "204": {
            "description": "Custom field values successfully updated",
            "content": {}
          },
          "400": {
            "description": "Invalid custom field values or entity key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Bad Request": {
                    "$ref": "#/components/examples/Bad_Request_Update_Custom_Field_Values"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Entity not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/NotFound"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "The payload sent when updating the custom fields on a Contact or Organization",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldValues"
              }
            }
          }
        }
      }
    },
    "/v3/EstimateSummaries/{WorkItemKey}": {
      "get": {
        "tags": ["Estimate Summaries"],
        "summary": "Gets estimate summaries using WorkItemKey",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "WorkItemKey",
            "schema": {
              "type": "string"
            },
            "example": "4jgPTtcXxwC2",
            "description": "The Karbon-generated Work Item key"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the estimate summaries of a Work Item specified using the `WorkItemKey`.\n",
        "operationId": "getEstimateSummariesByWorkItemKey",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "@odata.context": {
                      "type": "string",
                      "description": "The information about Karbon controllers generating this response.",
                      "example": "https://api.karbonhq.com/v3/$metadata#EstimateSummaries"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "EstimateSummaryKey": {
                            "type": "string",
                            "description": "A randomly generated GUID",
                            "example": "160F79F6-E650-40C3-8BD9-F70C287B7476-0"
                          },
                          "UserKey": {
                            "type": "string",
                            "description": "A Karbon-generated unique identifier for the Karbon user",
                            "example": "RXq4mB32PXg"
                          },
                          "RoleKey": {
                            "type": "string",
                            "description": "A Karbon-generated unique identifier for the user's role",
                            "example": "qTLmJpG85Ng"
                          },
                          "RoleName": {
                            "type": "string",
                            "description": "The Role of the user",
                            "example": "Accountant"
                          },
                          "TaskTypeKey": {
                            "type": "string",
                            "description": "A Karbon-generated unique identifier for the task",
                            "example": "3h5Tbh9GgLs7"
                          },
                          "TaskTypeName": {
                            "type": "string",
                            "description": "The name of the task",
                            "example": "Admin"
                          },
                          "EstimateMinutes": {
                            "type": "integer",
                            "description": "The total estimated time (in minutes) for the task to be completed",
                            "example": 15
                          },
                          "HourlyRate": {
                            "type": "number",
                            "format": "decimal",
                            "description": "The hourly rate of the user",
                            "example": 150
                          },
                          "ActualMinutes": {
                            "type": "integer",
                            "description": "The actual time (in minutes) spent on the task",
                            "example": 14
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Resource Not Found": {
                    "$ref": "#/components/examples/HTTP_Resource_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Files": {
      "post": {
        "tags": ["Files"],
        "summary": "Uploads and links a file",
        "description": "Use the `POST` method on this endpoint to upload and link a file to an entity in your tenant.\n\nNote that this endpoint **only supports uploading files from the local network** but not from the web.\n",
        "operationId": "createFile",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "@odata.context": {
                      "type": "string",
                      "description": "The information about Karbon controllers generating this response.",
                      "example": "https://api.karbonhq.com/v3/$metadata#Files/$entity"
                    },
                    "Id": {
                      "type": "string",
                      "description": "A Karbon-generated unique identifier for the file",
                      "example": "3pBQbds529RW"
                    },
                    "Name": {
                      "type": "string",
                      "description": "The name of the file",
                      "example": "ProposalName.pdf"
                    },
                    "MimeType": {
                      "type": "string",
                      "description": "The MIME type of valid media file as per RFC 6838. See a list of common MIME types [here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types).",
                      "example": "application/pdf"
                    },
                    "Size": {
                      "type": "string",
                      "description": "The size of the file (in bytes)",
                      "example": "334565"
                    }
                  }
                }
              }
            },
            "headers": {
              "Location": {
                "description": "The endpoint URL to the newly created file.",
                "schema": {
                  "type": "string",
                  "example": "https://api.karbonhq.com/v3/Files('2S3RNjkR66Ln')"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Resource Not Found": {
                    "$ref": "#/components/examples/HTTP_Resource_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported File Type": {
                    "$ref": "#/components/examples/Unsupported_File_Type"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.\n\nIn addition to the `file` property, at least one of the following properties is required. <ul> <li>`contact_keys`</li> <li>`organization_keys`</li> <li>`client_group_keys`</li> <li>`integration_task_key`</li>  <li>`workitem_keys`</li> </ul>\n",
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": ["file"],
                "minProperties": 2,
                "properties": {
                  "contact_keys": {
                    "type": "string",
                    "description": "A Karbon-generated unique identifier for the Contact, which this file will be associated with",
                    "example": "RXq4dB32PXg"
                  },
                  "organization_keys": {
                    "type": "string",
                    "description": "A Karbon-generated unique identifier for the Organization, which this file will be associated with",
                    "example": "qTLmTpG85Ng"
                  },
                  "client_group_keys": {
                    "type": "string",
                    "description": "A Karbon-generated unique identifier for the Client Group, which this file will be associated with",
                    "example": "3h5Tbh9RgLs7"
                  },
                  "workitem_keys": {
                    "type": "string",
                    "description": "A Karbon-generated unique identifier for the Work Item, which this file will be associated with",
                    "example": "RXq4mD62PXg"
                  },
                  "integration_task_key": {
                    "type": "string",
                    "description": "A Karbon-generated unique identifier for the Integration Task, which this file will be associated with",
                    "example": "RXq4mD62PXg"
                  },
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "File to be uploaded"
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": ["Files"],
        "summary": "Get a File using it's token",
        "description": "Use the `GET` method on this endpoint with the `token` query string parameter to retrieve a file. Note: download tokens are only valid for 15 minutes from the moment of issue.",
        "operationId": "downloadFile",
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "description": "A Karbon-generated JWT token that is used to identify the File",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJGaWxlQ29udGV4dFBlcm1hS2V5IjoiUzhic0JqdkNSSjMiLCJpYXQiOjE3MjEzNDY2MTIuMCwiZXhwIjoxNzIxMzQ3NTEyLjB9.TTVVpPAKXmAUX1jlPSLVjh5sMoCTbAyp0fOgbydA2aU"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/octet-stream": {}
            }
          },
          "400": {
            "description": "Attachment token could not be validated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/InvalidAttachmentToken"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Resource Not Found": {
                    "$ref": "#/components/examples/HTTP_Resource_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported File Type": {
                    "$ref": "#/components/examples/Unsupported_File_Type"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/FileList/{EntityType}": {
      "get": {
        "tags": ["Files"],
        "summary": "Get a list of Files for a given entity",
        "description": "Use the `GET` method on this endpoint to list files associated with a specific Entity Type and Entity Key",
        "operationId": "listFiles",
        "parameters": [
          {
            "name": "EntityType",
            "in": "path",
            "description": "The entity type related to the entity key.",
            "required": true,
            "schema": {
              "type": "string",
              "enum": ["WorkItem", "Contact", "Organization"]
            },
            "example": "WorkItem"
          },
          {
            "name": "EntityKey",
            "in": "query",
            "description": "The unique key to list files for.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "3bXVhdMHgc9P"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileList"
                }
              }
            }
          },
          "400": {
            "description": "Attachment token could not be validated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/FileEntityNotFound"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Resource Not Found": {
                    "$ref": "#/components/examples/HTTP_Resource_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported File Type": {
                    "$ref": "#/components/examples/Unsupported_File_Type"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Notes/{NoteID}": {
      "get": {
        "tags": ["Notes"],
        "summary": "Gets a Note using NoteID",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "NoteID",
            "schema": {
              "type": "string"
            },
            "example": "Tz3lJgXMPdy",
            "description": "The Karbon-generated Note key"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the Note specified using the `NoteID`.\n",
        "operationId": "getNoteByNoteKey",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoteResponse"
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Notes/$entity",
                  "Id": "Tz3lJgXMPdy",
                  "Subject": "Regarding New Proposal",
                  "Body": "Amy, could you please submit the new Proposal for Acme Corp by this weekend?",
                  "CreatedDate": "2022-07-11T02:16:06Z",
                  "AuthorEmailAddress": "jessica@samplecompany.com",
                  "AssigneeEmailAddress": "amy@samplecompany.com",
                  "DueDate": "2022-07-16T02:16:06Z",
                  "TodoDate": "2022-07-16T02:16:06Z",
                  "Timelines": [
                    {
                      "EntityType": "WorkItem",
                      "EntityKey": "2m6pSFxRzcF2"
                    }
                  ],
                  "Comments": [
                    {
                      "CommentKey": "22145nBb4tLP",
                      "CommentBody": "Hi Jess, Could you please share the template to the last proposal you created?",
                      "CreatedDate": "2022-07-11T07:16:32Z",
                      "AuthorEmailAddress": "jessica@samplecompany.com"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Resource Not Found": {
                    "$ref": "#/components/examples/HTTP_Resource_Not_Found"
                  },
                  "Key Not Found": {
                    "$ref": "#/components/examples/Generic_Key_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Notes": {
      "post": {
        "tags": ["Notes"],
        "summary": "Creates a new Note",
        "description": "Use the `POST` method on this endpoint to create a new Note and associate it with a Karbon entity (e.g., WorkItem, Contact, Organization, or ClientGroup) in your tenant.\n",
        "operationId": "createNote",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoteResponse"
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Notes/$entity",
                  "Id": "Tz3lJgXMPdy",
                  "Subject": "Regarding New Proposal",
                  "Body": "Amy, could you please submit the new Proposal for Acme Corp by this weekend?",
                  "CreatedDate": "2022-07-11T02:16:06Z",
                  "AuthorEmailAddress": "jessica@samplecompany.com",
                  "AssigneeEmailAddress": "amy@samplecompany.com",
                  "DueDate": "2022-07-16T02:16:06Z",
                  "TodoDate": "2022-07-16T02:16:06Z",
                  "Timelines": [
                    {
                      "EntityType": "WorkItem",
                      "EntityKey": "2m6pSFxRzcF2"
                    }
                  ],
                  "Comments": []
                }
              }
            },
            "headers": {
              "Location": {
                "description": "The endpoint URL to the newly created Note.",
                "schema": {
                  "type": "string",
                  "example": "https://api.karbonhq.com/v3/Notes('Tz3lJgXMPdy')"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Resource Not Found": {
                    "$ref": "#/components/examples/HTTP_Resource_Not_Found"
                  },
                  "Payload Mising": {
                    "$ref": "#/components/examples/Note_Payload_Missing"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Invalid Assignee Email Address": {
                    "$ref": "#/components/examples/Missing_Assignee_Email_Address"
                  },
                  "Invalid Author Email Address": {
                    "$ref": "#/components/examples/Invalid_Author_Email_Address"
                  },
                  "Missing Author Email Address": {
                    "$ref": "#/components/examples/Missing_Author_Email_Address"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteRequest"
              },
              "example": {
                "Subject": "Regarding New Proposal",
                "Body": "Amy, could you please submit the new Proposal for Acme Corp by this weekend?",
                "AuthorEmailAddress": "jessica@samplecompany.com",
                "AssigneeEmailAddress": "amy@samplecompany.com",
                "DueDate": "2022-07-16T02:16:06Z",
                "TodoDate": "2022-07-16T02:16:06Z",
                "Timelines": [
                  {
                    "EntityType": "WorkItem",
                    "EntityKey": "2m6pSFxRzcF2"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/v3/Organizations": {
      "get": {
        "tags": ["Organizations"],
        "summary": "Gets a list of Organizations",
        "parameters": [
          {
            "in": "query",
            "name": "$filter",
            "schema": {
              "type": "string"
            },
            "examples": {
              "fullName": {
                "value": "FullName eq 'Sample Company'",
                "summary": "The full name of the organization equals 'Sample Company'"
              },
              "emailAddress": {
                "value": "EmailAddress eq 'karbon@example.com'",
                "summary": "The email address of the organization equals 'karbon@example.com'"
              },
              "contactTypeEquals": {
                "value": "ContactType eq 'Prospect'",
                "summary": "The ContactType of the organization equals 'Prospect'"
              },
              "contactTypeContains": {
                "value": "contains(ContactType, 'Client')",
                "summary": "The ContactType of the organization contains 'Client', would return Organizations with the ContactType 'Client', 'Client - VIP' and 'Inactive Client'"
              },
              "externalKey": {
                "value": "ExternalKey eq '123987456'",
                "summary": "The ExternalKey of the organization equals '123987456'. ExternalKey is the identifier from an integrated external system - XPM Client ID, Xero Contact ID, or QuickBooks Online Intuit Customer ID."
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will return a subset of the Organizations that satisfy the `$filter` expression."
          },
          {
            "in": "query",
            "name": "$orderby",
            "schema": {
              "type": "string",
              "enum": ["FullName", "FullName desc", "LastModifiedDateTime", "LastModifiedDateTime desc"],
              "default": "OrganizationKey"
            },
            "example": "FullName",
            "description": "When this parameter is combined with the URI, this endpoint will return a list of Organizations, sorted by the available properties.\n"
          },
          {
            "$ref": "#/components/parameters/SkipRecords"
          },
          {
            "$ref": "#/components/parameters/TopRecords"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive a paginated list of Organizations from your tenant.   Using the query parameters available to this endpoint,  you can also filter the list of Organizations by their full name, email address, or external key.\n\n**Notes**\n\n* This endpoint returns a maximum of 100 Organizations at once.\n* If the query results in more than 100 Organizations, a link to the next set of the results will be given in the `@odata.nextLink` field of the response.\n* The `$filter` query parameter supports 2 logical operators - `eq` and `and` - and 3 properties to help you form an expression. Usage examples below<\n\n<table>\n<thead>\n<tr>\n<th>Logical Operators</th>\n<th>Purpose</th>\n<th>FullName</th>\n<th>EmailAddress</th>\n<th>ExternalKey</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>eq</td>\n<td>Full-text search</td>\n<td>/v3/Organizations?$filter=FullName eq 'Sample Company'</td>\n<td>/v3/Organizations?$filter=EmailAddress eq 'info@samplecompany.com'</td>\n<td>/v3/Organizations?$filter=ExternalKey eq '123987456'</td>\n</tr>\n<tr>\n<td>and</td>\n<td>Combines properties</td>\n<td colspan = \"3\">/v3/Organizations?$filter=FullName eq 'Sample Company' and EmailAddress eq 'info@samplecompany.com'</td>\n</tr>\n</tbody>\n</table>\n",
        "operationId": "getAllOrganizations",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetOrganizations"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Unsupported_Property_Filter"
                  },
                  "Unsupported Orderby Property": {
                    "$ref": "#/components/examples/Orderby_Unsupported_Property"
                  },
                  "$top limit exceeded": {
                    "$ref": "#/components/examples/Limit_Exceeded_Top"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": ["Organizations"],
        "summary": "Creates a new Organization",
        "description": "Use the `POST` method on this endpoint to create a new Organization in your tenant.\n",
        "operationId": "createOrganization",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateOrganizationResponse"
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Organizations/KarbonService.OrganizationDTO/$entity",
                  "@odata.type": "#KarbonService.OrganizationDTO",
                  "OrganizationKey": "2Nw8tnxwQCVf",
                  "FullName": "Sample Company",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Prospect",
                  "UserDefinedIdentifier": "SAMPLECO",
                  "RestrictionLevel": "Public",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "EntityDescription": {
                    "Text": "John Doe is the Managing Director of this organization."
                  },
                  "AccountingDetail": {
                    "ContactPermaKey": null,
                    "OrganizationPermaKey": "2Nw8tnxwQCVf",
                    "BirthDate": null,
                    "DeathDate": null,
                    "Salutation": null,
                    "Sex": null,
                    "FinancialYearEndDay": 11,
                    "FinancialYearEndMonth": 2,
                    "IncorporationDate": "2021-05-16T00:00:00Z",
                    "IncorporationState": "New South Wales",
                    "LegalName": "Sample Company Pty. Ltd.",
                    "LineOfBusiness": "Fast Fashion",
                    "EntityType": "Partnership",
                    "TaxCountryCode": "AU",
                    "TradingName": null,
                    "AnnualRevenue": 6000000.5,
                    "BaseCurrency": null,
                    "GstBasis": "Accruals",
                    "GstPeriod": "Monthly",
                    "IncomeTaxInstallmentPeriod": "Quarterly",
                    "IsVATRegistered": null,
                    "OrganizationValuation": null,
                    "PaysTax": null,
                    "PrepareGST": null,
                    "ProvisionalTaxBasic": null,
                    "ProvisionalTaxRatio": null,
                    "RevenueModel": "Markup",
                    "SalesTaxBasis": null,
                    "SalesTaxPeriod": null,
                    "Sells": "Products",
                    "RegistrationNumbers": [
                      {
                        "RegistrationNumber": "444 333 222",
                        "Type": "Australian Company Number (ACN)"
                      },
                      {
                        "RegistrationNumber": "444 353 222",
                        "Type": "Australian Business Number (ABN)"
                      }
                    ],
                    "Notes": [
                      {
                        "Body": "This is a sample note text.",
                        "Type": "Basic"
                      }
                    ]
                  }
                }
              }
            },
            "headers": {
              "Location": {
                "description": "The endpoint URL to the newly created Organization.",
                "schema": {
                  "type": "string",
                  "example": "https://api.karbonhq.com/v3/Organizations('2Nw8tnxwQCVf')/KarbonService.OrganizationDTO"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Duplicate UDI": {
                    "$ref": "#/components/examples/Duplicate_UDI"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOrganization"
              },
              "example": {
                "FullName": "Sample Company",
                "ClientOwner": "rodney.muller@samplecompany.com",
                "ClientManager": "jessica.tse@samplecompany.com",
                "ContactType": "Prospect",
                "UserDefinedIdentifier": "SAMPLECO",
                "EntityDescription": {
                  "Text": "John Doe is the Managing Director of this organization."
                },
                "AccountingDetail": {
                  "ContactPermaKey": null,
                  "OrganizationPermaKey": "2Nw8tnxwQCVf",
                  "BirthDate": null,
                  "DeathDate": null,
                  "Salutation": null,
                  "Sex": null,
                  "FinancialYearEndDay": 11,
                  "FinancialYearEndMonth": 2,
                  "IncorporationDate": "2021-05-16T00:00:00Z",
                  "IncorporationState": "New South Wales",
                  "LegalName": "Sample Company Pty. Ltd.",
                  "LineOfBusiness": "Fast Fashion",
                  "EntityType": "Partnership",
                  "TaxCountryCode": "AU",
                  "TradingName": null,
                  "AnnualRevenue": 6000000.5,
                  "BaseCurrency": null,
                  "GstBasis": "Accruals",
                  "GstPeriod": "Monthly",
                  "IncomeTaxInstallmentPeriod": "Quarterly",
                  "IsVATRegistered": null,
                  "OrganizationValuation": null,
                  "PaysTax": null,
                  "PrepareGST": null,
                  "ProvisionalTaxBasic": null,
                  "ProvisionalTaxRatio": null,
                  "RevenueModel": "Markup",
                  "SalesTaxBasis": null,
                  "SalesTaxPeriod": null,
                  "Sells": "Products",
                  "RegistrationNumbers": [
                    {
                      "RegistrationNumber": "444 333 222",
                      "Type": "Australian Company Number (ACN)"
                    },
                    {
                      "RegistrationNumber": "444 353 222",
                      "Type": "Australian Business Number (ABN)"
                    }
                  ],
                  "Notes": [
                    {
                      "Body": "This is a sample note text.",
                      "Type": "Basic"
                    }
                  ]
                },
                "BusinessCards": [
                  {
                    "BusinessCardKey": "2tBHyXtJBxBy",
                    "EntityType": "Organization",
                    "EntityKey": "2Nw8tnxwQCVf",
                    "IsPrimaryCard": true,
                    "WebSites": ["www.website.one", "www.website.two"],
                    "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                    "OrganizationKey": "ZGNmtYyLm4z",
                    "RoleOrTitle": "COO",
                    "FacebookLink": "facebook.com/sampleName",
                    "LinkedInLink": "linkedin.com/sampleName",
                    "TwitterLink": "twitter.com/sampleName",
                    "SkypeLink": "skype.com/sampleName",
                    "Addresses": [
                      {
                        "AddressKey": "e150a05a-2dea-4292-8bc8-03398c9384e4",
                        "AddressLines": "45 Sample Street",
                        "City": "Alexandria",
                        "StateProvinceCounty": "NSW",
                        "ZipCode": "2015",
                        "CountryCode": "AU",
                        "Label": "Physical"
                      }
                    ],
                    "PhoneNumbers": [
                      {
                        "PhoneNumberKey": "6e0b9ace-24b1-4328-a922-3b8be5ef5052",
                        "Number": "1234567890",
                        "CountryCode": "AU",
                        "Label": "Work"
                      }
                    ]
                  }
                ],
                "ClientTeam": [
                  {
                    "MemberKey": "2q2wx44pTBNh",
                    "MemberType": "User",
                    "RoleType": "ClientManager"
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/v3/Organizations/GetOrganizationByUserDefinedIdentifier(UserDefinedIdentifier='{UserDefinedIdentifier}')": {
      "get": {
        "tags": ["Organizations"],
        "summary": "Gets an Organization using UserDefinedIdentifier",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "UserDefinedIdentifier",
            "schema": {
              "type": "string"
            },
            "example": "SAMPLECO",
            "description": "A unique identifier that you had created to identify this Organization. This parameter is **not** case sensitive."
          },
          {
            "in": "query",
            "name": "$expand",
            "schema": {
              "type": "string",
              "enum": ["BusinessCards"]
            },
            "example": "BusinessCards",
            "description": "When this parameter is combined with the URI, this endpoint will also return the Business Cards of the Contact Organization.\n"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of an Organization specified using the UserDefinedIdentifier.\n\nUsing the query parameter available to this endpoint, you can also include Business Card details of the Organization in the response.\n",
        "operationId": "getOrganizationByUDI",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WithBusinessCardsCreateOrganizationResponse"
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Organizations/KarbonService.OrganizationDTO/$entity",
                  "@odata.type": "#KarbonService.OrganizationDTO",
                  "OrganizationKey": "2Nw8tnxwQCVf",
                  "FullName": "Sample Company",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Prospect",
                  "UserDefinedIdentifier": "SAMPLECO",
                  "RestrictionLevel": "Public",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "EntityDescription": {
                    "Text": "John Doe is the Managing Director of this organization."
                  },
                  "AccountingDetail": {
                    "ContactPermaKey": null,
                    "OrganizationPermaKey": "2Nw8tnxwQCVf",
                    "BirthDate": null,
                    "DeathDate": null,
                    "Salutation": null,
                    "Sex": null,
                    "FinancialYearEndDay": 11,
                    "FinancialYearEndMonth": 2,
                    "IncorporationDate": "2021-05-16T00:00:00Z",
                    "IncorporationState": "New South Wales",
                    "LegalName": "Sample Company Pty. Ltd.",
                    "LineOfBusiness": "Fast Fashion",
                    "EntityType": "Partnership",
                    "TaxCountryCode": "AU",
                    "TradingName": null,
                    "AnnualRevenue": 6000000.5,
                    "BaseCurrency": null,
                    "GstBasis": "Accruals",
                    "GstPeriod": "Monthly",
                    "IncomeTaxInstallmentPeriod": "Quarterly",
                    "IsVATRegistered": null,
                    "OrganizationValuation": null,
                    "PaysTax": null,
                    "PrepareGST": null,
                    "ProvisionalTaxBasic": null,
                    "ProvisionalTaxRatio": null,
                    "RevenueModel": "Markup",
                    "SalesTaxBasis": null,
                    "SalesTaxPeriod": null,
                    "Sells": "Products",
                    "RegistrationNumbers": [
                      {
                        "RegistrationNumber": "444 333 222",
                        "Type": "Australian Company Number (ACN)"
                      },
                      {
                        "RegistrationNumber": "444 353 222",
                        "Type": "Australian Business Number (ABN)"
                      }
                    ],
                    "Notes": [
                      {
                        "Body": "This is a sample note text.",
                        "Type": "Basic"
                      }
                    ]
                  },
                  "BusinessCards": [
                    {
                      "BusinessCardKey": "PVvnQdX1RCH",
                      "EntityType": "Organization",
                      "EntityKey": "2Nw8tnxwQCVf",
                      "IsPrimaryCard": true,
                      "WebSites": ["www.website.one", "www.website.two"],
                      "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                      "OrganizationKey": null,
                      "RoleOrTitle": null,
                      "FacebookLink": "facebook.com/samplecompany",
                      "LinkedInLink": "linkedin.com/samplecompany",
                      "TwitterLink": "twitter.com/samplecompany",
                      "SkypeLink": "skype.com/samplecompany",
                      "Addresses": [
                        {
                          "AddressKey": "e150a05a-2dea-4292-8bc8-03398c9384e4",
                          "AddressLines": "45 Sample Street",
                          "City": "Alexandria",
                          "StateProvinceCounty": "NSW",
                          "ZipCode": "2015",
                          "CountryCode": "AU",
                          "Label": "Physical"
                        }
                      ],
                      "PhoneNumbers": [
                        {
                          "PhoneNumberKey": "6e0b9ace-24b1-4328-a922-3b8be5ef5052",
                          "Number": "1234567890",
                          "CountryCode": "AU",
                          "Label": "Work"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "UDI Is Empty": {
                    "$ref": "#/components/examples/UDI_Is_Empty"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "UDI Not Found": {
                    "$ref": "#/components/examples/UDI_Not_Found_Organization"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Organizations/{Organizationkey}": {
      "get": {
        "tags": ["Organizations"],
        "summary": "Gets an Organization using Organizationkey",
        "parameters": [
          {
            "name": "Organizationkey",
            "in": "path",
            "required": true,
            "description": "The Karbon-generated Organization key",
            "schema": {
              "type": "string"
            },
            "example": "2Nw8tnxwQCVf"
          },
          {
            "in": "query",
            "name": "$expand",
            "schema": {
              "type": "string"
            },
            "examples": {
              "BusinessCards": {
                "value": "BusinessCards",
                "summary": "Include the Business Card for the Organization the API response"
              },
              "ClientTeam": {
                "value": "ClientTeam",
                "summary": "Include the Client Team assigned to the Organization in the API response"
              },
              "Contacts": {
                "value": "Contacts",
                "summary": "Include the Contacts related to the Organization in the API response"
              },
              "BusinessCardAndClientTeam": {
                "value": "BusinessCard,ClientTeam",
                "summary": "Include the Business Card and the Client Team assigned to the Organization in the API response"
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will also return Business Cards, Client Team and/or Contacts associated with the Organization. Multiple properties can be returned by specifying a comma separated list.\n"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of an Organization specified using the `Organizationkey`.\n\nUsing the query parameter available to this endpoint,  you can also include the Business Card details of the Organization in the response.\n",
        "operationId": "getOrganizationByID",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/WithBusinessCardsCreateOrganizationResponse"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "Contacts": {
                          "$ref": "#/components/schemas/ContactsCardList"
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "ClientTeam": {
                          "$ref": "#/components/schemas/ClientTeam"
                        }
                      }
                    }
                  ]
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Organizations/KarbonService.OrganizationDTO/$entity",
                  "@odata.type": "#KarbonService.OrganizationDTO",
                  "OrganizationKey": "2Nw8tnxwQCVf",
                  "FullName": "Sample Company",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Prospect",
                  "UserDefinedIdentifier": "SAMPLECO",
                  "RestrictionLevel": "Public",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "EntityDescription": {
                    "Text": "John Doe is the Managing Director of this organization."
                  },
                  "AccountingDetail": {
                    "ContactPermaKey": null,
                    "OrganizationPermaKey": "2Nw8tnxwQCVf",
                    "BirthDate": null,
                    "DeathDate": null,
                    "Salutation": null,
                    "Sex": null,
                    "FinancialYearEndDay": 11,
                    "FinancialYearEndMonth": 2,
                    "IncorporationDate": "2021-05-16T00:00:00Z",
                    "IncorporationState": "New South Wales",
                    "LegalName": "Sample Company Pty. Ltd.",
                    "LineOfBusiness": "Fast Fashion",
                    "EntityType": "Partnership",
                    "TaxCountryCode": "AU",
                    "TradingName": null,
                    "AnnualRevenue": 6000000.5,
                    "BaseCurrency": null,
                    "GstBasis": "Accruals",
                    "GstPeriod": "Monthly",
                    "IncomeTaxInstallmentPeriod": "Quarterly",
                    "IsVATRegistered": null,
                    "OrganizationValuation": null,
                    "PaysTax": null,
                    "PrepareGST": null,
                    "ProvisionalTaxBasic": null,
                    "ProvisionalTaxRatio": null,
                    "RevenueModel": "Markup",
                    "SalesTaxBasis": null,
                    "SalesTaxPeriod": null,
                    "Sells": "Products",
                    "RegistrationNumbers": [
                      {
                        "RegistrationNumber": "444 333 222",
                        "Type": "Australian Company Number (ACN)"
                      },
                      {
                        "RegistrationNumber": "444 353 222",
                        "Type": "Australian Business Number (ABN)"
                      }
                    ],
                    "Notes": [
                      {
                        "Body": "This is a sample note text.",
                        "Type": "Basic"
                      }
                    ]
                  },
                  "BusinessCards": [
                    {
                      "BusinessCardKey": "PVvnQdX1RCH",
                      "EntityType": "Organization",
                      "EntityKey": "2Nw8tnxwQCVf",
                      "IsPrimaryCard": true,
                      "WebSites": ["www.website.one", "www.website.two"],
                      "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                      "OrganizationKey": null,
                      "RoleOrTitle": null,
                      "FacebookLink": "facebook.com/samplecompany",
                      "LinkedInLink": "linkedin.com/samplecompany",
                      "TwitterLink": "twitter.com/samplecompany",
                      "SkypeLink": "skype.com/samplecompany",
                      "Addresses": [
                        {
                          "AddressKey": "e150a05a-2dea-4292-8bc8-03398c9384e4",
                          "AddressLines": "45 Sample Street",
                          "City": "Alexandria",
                          "StateProvinceCounty": "NSW",
                          "ZipCode": "2015",
                          "CountryCode": "AU",
                          "Label": "Physical"
                        }
                      ],
                      "PhoneNumbers": [
                        {
                          "PhoneNumberKey": "6e0b9ace-24b1-4328-a922-3b8be5ef5052",
                          "Number": "1234567890",
                          "CountryCode": "AU",
                          "Label": "Work"
                        }
                      ]
                    }
                  ],
                  "Contacts": [
                    {
                      "ContactKey": "443pbkv8Vx3Y",
                      "FullName": "Qutubuddin Musekhan",
                      "PreferredName": "Qutub",
                      "Salutation": "Dr",
                      "ClientOwner": null,
                      "ClientManager": null,
                      "Address": null,
                      "EmailAddress": "qutub@company.com",
                      "PhoneNumber": "123-456-7890",
                      "RoleOrTitle": "CIO",
                      "UserDefinedIdentifier": "HD567",
                      "LastModifiedDateTime": "2022-02-03T03:34:11Z"
                    }
                  ],
                  "ClientTeam": [
                    {
                      "MemberKey": "JTphCpQqQYg",
                      "MemberType": "User",
                      "RoleType": "ClientOwner"
                    },
                    {
                      "MemberKey": "nRML2ngs7WJ",
                      "MemberType": "User",
                      "RoleType": "ClientManager"
                    },
                    {
                      "MemberKey": "3fv7lflmd1Z7",
                      "MemberType": "User",
                      "RoleType": "UserDefinedRole2"
                    },
                    {
                      "MemberKey": "3v9YJmt55hLY",
                      "MemberType": "User",
                      "RoleType": "UserDefinedRole1"
                    },
                    {
                      "MemberKey": "3zdQh89xCmZM",
                      "MemberType": "User",
                      "RoleType": null
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Unsupported_Property_Filter"
                  },
                  "Unsupported Orderby Property": {
                    "$ref": "#/components/examples/Orderby_Unsupported_Property"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/Organization_Key_Not_Found_404"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Organizations"],
        "summary": "Updates an Organization (Full)",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "Organizationkey",
            "schema": {
              "type": "string"
            },
            "example": "2Nw8tnxwQCVf",
            "description": "The Karbon-generated Organization key"
          }
        ],
        "description": "Use the `PUT` method on this endpoint to update full details of an Organization specified using the `Organizationkey`.\n\n\nUsing the query parameter `$expand` with this endpoint, you can also update the Business Card details of the Organization.\n\n**Note:** When updating business cards, you must include `BusinessCardKey`, `EntityType` and `EntityKey` properties for existing Business Cards - or the existing card and any associated Client Requests may be removed.\n\n**BusinessCards is optional:** If the `BusinessCards` array is omitted from the request body, the existing Business Cards on the Organization are left untouched. Include the `BusinessCards` array only when you intend to update it.\n\n**RegistrationNumber null/empty values delete the entry:** If a `RegistrationNumbers` entry is included with a null, empty, or whitespace `RegistrationNumber` value, any existing registration number of that `Type` is deleted. If no entry exists for that `Type`, the request is a no-op. Non-blank values continue to upsert as before.",
        "operationId": "putOrganizationByID",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Update_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Resource Not Found": {
                    "$ref": "#/components/examples/HTTP_Resource_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Non existent Key": {
                    "$ref": "#/components/examples/Shortened_5001"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOrganization"
              },
              "example": {
                "FullName": "Sample Company",
                "ClientOwner": "rodney.muller@samplecompany.com",
                "ClientManager": "jessica.tse@samplecompany.com",
                "ContactType": "Client",
                "UserDefinedIdentifier": "SAMPLECO",
                "EntityDescription": {
                  "Text": "John Doe is the Managing Director of this organization."
                },
                "AccountingDetail": {
                  "ContactKey": null,
                  "OrganizationKey": "SCwCq2M9pFm",
                  "BirthDate": null,
                  "DeathDate": null,
                  "Salutation": null,
                  "Sex": null,
                  "FinancialYearEndDay": 31,
                  "FinancialYearEndMonth": 3,
                  "IncorporationDate": null,
                  "IncorporationState": null,
                  "LegalName": "The Sample Company",
                  "LineOfBusiness": "Manufacturing",
                  "EntityType": "Corporation",
                  "TaxCountryCode": "US",
                  "TradingName": null,
                  "AnnualRevenue": 10000000,
                  "BaseCurrency": null,
                  "GstBasis": null,
                  "GstPeriod": null,
                  "IncomeTaxInstallmentPeriod": null,
                  "IsVATRegistered": null,
                  "OrganizationValuation": 0,
                  "PaysTax": null,
                  "PrepareGST": null,
                  "ProvisionalTaxBasis": null,
                  "ProvisionalTaxRatio": null,
                  "RevenueModel": null,
                  "SalesTaxBasis": null,
                  "SalesTaxPeriod": null,
                  "Sells": null,
                  "RegistrationNumbers": [
                    {
                      "RegistrationNumber": "123456789",
                      "Type": "Tax ID"
                    }
                  ],
                  "Notes": [
                    {
                      "Body": "Example text",
                      "Type": "Basic"
                    }
                  ]
                },
                "BusinessCards": [
                  {
                    "BusinessCardKey": "2tBHyXtJBxBy",
                    "EntityType": "Organization",
                    "EntityKey": "SCwCq2M9pFm",
                    "IsPrimaryCard": true,
                    "WebSites": ["www.website.one", "www.website.two"],
                    "EmailAddresses": ["sample@example.com", "sample.two@example.com"],
                    "OrganizationKey": null,
                    "RoleOrTitle": null,
                    "FacebookLink": "facebook.com/sampleName",
                    "LinkedInLink": "linkedin.com/sampleName",
                    "TwitterLink": "twitter.com/sampleName",
                    "SkypeLink": "skype.com/sampleName",
                    "Addresses": [
                      {
                        "AddressKey": "e150a05a-2dea-4292-8bc8-03398c9384e4",
                        "AddressLines": "45 Sample Street",
                        "City": "Alexandria",
                        "StateProvinceCounty": "NSW",
                        "ZipCode": "2015",
                        "CountryCode": "AU",
                        "Label": "Physical"
                      }
                    ],
                    "PhoneNumbers": [
                      {
                        "PhoneNumberKey": "6e0b9ace-24b1-4328-a922-3b8be5ef5052",
                        "Number": "1234567890",
                        "CountryCode": "AU",
                        "Label": "Work"
                      }
                    ]
                  }
                ],
                "ClientTeam": [
                  {
                    "MemberKey": "2q2wx44pTBNh",
                    "MemberType": "User",
                    "RoleType": "ClientManager"
                  }
                ]
              }
            }
          }
        }
      },
      "patch": {
        "tags": ["Organizations"],
        "summary": "Updates an Organization (Partial)",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "Organizationkey",
            "schema": {
              "type": "string"
            },
            "example": "2Nw8tnxwQCVf",
            "description": "The Karbon-generated Organization key"
          },
          {
            "required": false,
            "in": "header",
            "name": "Prefer",
            "schema": {
              "type": "string"
            },
            "example": "return=representation",
            "description": "Return the record after it has been updated"
          }
        ],
        "description": "Use the `PATCH` method on this endpoint to update partial details of an Organization specified using the `Organizationkey`.\n\nThis method **only supports** editing the `FullName` property.\n",
        "operationId": "patchOrganizationByID",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "@odata.context": {
                      "type": "string",
                      "description": "The information about Karbon controllers generating this response."
                    },
                    "@odata.type": {
                      "type": "string",
                      "description": "The information about Karbon Objects generating this response."
                    },
                    "OrganizationKey": {
                      "type": "string",
                      "description": "A Karbon-generated value that is used to identify the Organization"
                    },
                    "FullName": {
                      "type": "string",
                      "description": "The full name of the Organization"
                    },
                    "ClientOwner": {
                      "type": "string",
                      "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the clients in this Organization. You can only use the UserKey or the email address of an existing team member."
                    },
                    "ClientManager": {
                      "type": "string",
                      "description": "The team member in your firm who manages the work for the clients in this Organization. You can only use the UserKey or the email address of an existing team member."
                    },
                    "ContactType": {
                      "type": "string",
                      "description": "The Contact Type for this Organization. You can only use existing Contact Type."
                    },
                    "UserDefinedIdentifier": {
                      "type": "string",
                      "description": "A unique key that you can use to identify this Organization."
                    },
                    "RestrictionLevel": {
                      "type": "string",
                      "description": "The privacy level for this Organization.\n\n<ul><li>Public Organization can be managed by anyone in the firm</li> <li>Private Organization can only be managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team). Basic details (name of the Organization and the Work Items) related to such Organization are visible to anyone in the firm.</li> <li>Hidden Organization are only be visible to and managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team).</li>\n",
                      "default": "Public",
                      "enum": ["Public", "Private", "Hidden"]
                    },
                    "LastModifiedDateTime": {
                      "type": "string",
                      "format": "date-time",
                      "description": "The date and time at which this Contact was last modified.",
                      "example": "2022-07-05T07:30:13.7188114Z"
                    },
                    "EntityDescription": {
                      "type": "object",
                      "properties": {
                        "Text": {
                          "type": "string",
                          "description": "Free-form text that can be used to add more information about the Organization",
                          "example": "Birthday on June 23."
                        }
                      }
                    },
                    "AccountingDetail": {
                      "type": ["string", "null"],
                      "description": "The accounting details associated with the Organization. This property will be `null`."
                    }
                  }
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#Organizations/KarbonService.OrganizationDTO/$entity",
                  "@odata.type": "#KarbonService.OrganizationDTO",
                  "OrganizationKey": "2Nw8tnxwQCVf",
                  "FullName": "Sample Company",
                  "ClientOwner": "rodney.muller@samplecompany.com",
                  "ClientManager": "jessica.tse@samplecompany.com",
                  "ContactType": "Prospect",
                  "UserDefinedIdentifier": "SAMPLECO",
                  "RestrictionLevel": "Public",
                  "LastModifiedDateTime": "2022-07-05T07:30:13.7188114Z",
                  "EntityDescription": {
                    "Text": "John Doe is the Managing Director of this organization."
                  },
                  "AccountingDetail": null
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Update_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  },
                  "Invalid Property": {
                    "$ref": "#/components/examples/Invalid_Property"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/ResourceNotFound"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Non existent Key": {
                    "$ref": "#/components/examples/Shortened_5001"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "FullName": {
                    "type": "string",
                    "description": "The full name of the Organization",
                    "example": "Sample Company Pty. Ltd."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Teams": {
      "get": {
        "tags": ["Users"],
        "summary": "Gets a list of Teams",
        "operationId": "getAllTeams",
        "parameters": [
          {
            "in": "query",
            "name": "$filter",
            "schema": { "type": "string" },
            "examples": {
              "name": {
                "value": "Name eq 'Audit'",
                "summary": "Return only the Team whose Name matches 'Audit'."
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will return a subset of the Teams that satisfy the `$filter` expression. Only `Name` with the `eq` operator is supported."
          },
          { "$ref": "#/components/parameters/SkipRecords" },
          { "$ref": "#/components/parameters/TopRecords" }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTeams" } } }
          },
          "400": {
            "description": "Bad Request",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorMessages" } } }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ResourceNotFound" },
                "examples": { "Unauthorized Access": { "$ref": "#/components/examples/UnauthorizedAccess" } }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RateLimitErrorMessage" } } }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorMessages" },
                "examples": { "Undefined Error": { "$ref": "#/components/examples/elongated_5001" } }
              }
            }
          }
        }
      }
    },
    "/v3/Teams/{TeamKey}": {
      "get": {
        "tags": ["Users"],
        "summary": "Gets a single Team, including its members",
        "operationId": "getTeamByKey",
        "parameters": [
          {
            "in": "path",
            "name": "TeamKey",
            "required": true,
            "schema": { "type": "string" },
            "description": "The key of the Team to retrieve."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamProfile" } } }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ResourceNotFound" },
                "examples": { "Unauthorized Access": { "$ref": "#/components/examples/UnauthorizedAccess" } }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorMessages" } } }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RateLimitErrorMessage" } } }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorMessages" },
                "examples": { "Undefined Error": { "$ref": "#/components/examples/elongated_5001" } }
              }
            }
          }
        }
      }
    },
    "/v3/TenantSettings": {
      "get": {
        "tags": ["Tenant Settings"],
        "summary": "Gets lists of customer specific Contact and Work settings",
        "description": "Get specific settings for a tenant, including the valid work statuses, work types and client types",
        "operationId": "getTenantSettings",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTenantSettings"
                },
                "example": {
                  "@odata.context": "https://api.karbonhq.com/v3/$metadata#TenantSettings/$entity",
                  "TenantKey": "2BzmMRkhbwBT",
                  "ClientAccessActivated": true,
                  "WorkStatuses": [
                    {
                      "Name": "Planned",
                      "Type": "Primary",
                      "Children": []
                    },
                    {
                      "Name": "InProgress",
                      "Type": "Primary",
                      "Children": [
                        {
                          "Name": "Review",
                          "Type": "Secondary",
                          "WorkStatusKey": "2mwflHRTqsdv"
                        },
                        {
                          "Name": "Assemble",
                          "Type": "Secondary",
                          "WorkStatusKey": "4mdN65g99lzF"
                        },
                        {
                          "Name": "Lodge",
                          "Type": "Secondary",
                          "WorkStatusKey": "22tBP6QkrMbY"
                        },
                        {
                          "Name": "Follow-up",
                          "Type": "Secondary",
                          "WorkStatusKey": "3sDb8y6mgzrz"
                        }
                      ]
                    },
                    {
                      "Name": "Waiting",
                      "Type": "Primary",
                      "Children": [
                        {
                          "Name": "Waiting for client",
                          "Type": "Secondary",
                          "WorkStatusKey": "GrZfvNMt49q"
                        },
                        {
                          "Name": "Wait for confirmation",
                          "Type": "Secondary",
                          "WorkStatusKey": "3G9vZTc3cXwz"
                        }
                      ]
                    },
                    {
                      "Name": "Completed",
                      "Type": "Primary",
                      "Children": [
                        {
                          "Name": "Billed",
                          "Type": "Secondary",
                          "WorkStatusKey": "lqlGVMcvm7T"
                        },
                        {
                          "Name": "Cancelled",
                          "Type": "Secondary",
                          "WorkStatusKey": "nJ8jJDwF6l"
                        }
                      ]
                    },
                    {
                      "Name": "ReadyToStart",
                      "Type": "Primary",
                      "Children": []
                    }
                  ],
                  "WorkTypes": [
                    {
                      "Name": "Accounting",
                      "WorkTypeKey": "nTlQkTQnNz7",
                      "AvailableStatuses": {
                        "Primary": ["In Progress", "Ready To Start", "Waiting", "Completed"],
                        "Secondary": ["2mwflHRTqsdv", "3sDb8y6mgzrz", "GrZfvNMt49q", "nJ8jJDwF6l"]
                      }
                    },
                    {
                      "Name": "Bookkeeping",
                      "WorkTypeKey": "3RJgJSgq5xz",
                      "AvailableStatuses": {
                        "Primary": ["In Progress", "Ready To Start", "Waiting", "Completed"],
                        "Secondary": ["GrZfvNMt49q", "nJ8jJDwF6l"]
                      }
                    }
                  ],
                  "ContactTypes": [
                    {
                      "Name": "Prospect",
                      "ContactTypeKey": "2FZQTGSgmyyQ"
                    },
                    {
                      "Name": "Client",
                      "ContactTypeKey": "2kYcl5QHnSxh"
                    },
                    {
                      "Name": "Inactive",
                      "ContactTypeKey": "3dxPhBZvhCGm"
                    },
                    {
                      "Name": "Other",
                      "ContactTypeKey": "478pf88jbnQr"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          }
        }
      }
    },
    "/v3/Timesheets": {
      "get": {
        "deprecated": true,
        "tags": ["Timesheets and Time Entries"],
        "summary": "Gets a list of Timesheets",
        "parameters": [
          {
            "in": "query",
            "name": "$filter",
            "schema": {
              "type": "string"
            },
            "examples": {
              "StartDate": {
                "value": "StartDate gt 2024-01-01T00:00:00Z",
                "summary": "Return Timesheets where the Timesheet Start Date after January 1, 2024"
              },
              "EndDate": {
                "value": "EndDate lt 2024-03-01T00:00:00Z",
                "summary": "Return Timesheets where the Timesheet End Date before March 1, 2024"
              },
              "UserKey": {
                "value": "UserKey in ('2mYzTtly89Lq', '2Qy48WVCRBcP')",
                "summary": "Return Timesheets where the UserKey is '2mYzTtly89Lq' or '2Qy48WVCRBcP'"
              },
              "WorkItemKeys": {
                "value": "WorkItemKeys/any(x: x eq '5mGnTfly34Rf')",
                "summary": "Return Timesheets where the Work Item key is '5mGnTfly34Rf' "
              },
              "Status": {
                "value": "Status eq 'Draft'",
                "summary": "Return Timesheets where the Timesheet status is 'Draft'"
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will return a subset of the Timesheets that satisfy the `$filter` expression.\n"
          },
          {
            "in": "query",
            "name": "$orderby",
            "schema": {
              "example": "StartDate desc",
              "type": "string",
              "enum": ["StartDate", "StartDate desc", "EndDate", "EndDate desc"],
              "default": "TimesheetKey"
            },
            "example": "StartDate",
            "description": "When this parameter is combined with the URI, this endpoint will return a list of Timesheets, sorted by the available properties.\n"
          },
          {
            "$ref": "#/components/parameters/SkipRecords"
          },
          {
            "$ref": "#/components/parameters/TopRecords"
          },
          {
            "in": "query",
            "name": "$expand",
            "schema": {
              "type": "string",
              "enum": ["TimeEntries"]
            },
            "example": "TimeEntries",
            "description": "When this parameter is combined with the URI, this endpoint will also return the Time Entries associated with the Timesheets.\n"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive a paginated list of Timesheets from your tenant. Using the query parameters available to this endpoint,  you can also filter the list of Timesheets by their StartDate,  EndDate, UserKey, WorkItemKeys, and Status.\n\n**Notes**\n\n* Timesheets and Time Entries are aggregated to the time period matching your timesheet frequency (by default this is weekly, but it can be from 1-31 days long, depending on your Karbon settings). It is not possible to get a daily breakdown from this endpoint. If you need finer grained data, see <a href=\"#tag--Individual-Time-Entries\">here.</a>\n* This endpoint returns a maximum of 100 Timesheets at once.\n* If the query results in more than 100 Timesheets, a link to the next set of the results will be given in the `@odata.nextLink` field of the response.\n* The `$filter` query parameter supports 8 logical operators, 3 functions and 6 properties to help you  form an expression. They are listed below with examples of usage.\n\n### $filter operators for DateTime properties\n\n<table><thead><tr><th>Logical Operators</th><th>Purpose</th><th>StartDate</th><th>EndDate</th></tr></thead><tbody><tr><td>eq</td><td>Full-text search</td><td>/v3/Timesheets?$filter=StartDate eq 2022-07-04T00:00:00Z</td><td>/v3/Timesheets?$filter=EndDate eq 2022-07-17T00:00:00Z</td></tr><tr><td>gt</td><td>Greater than</td><td>/v3/Timesheets?$filter=StartDate gt 2021-04-27T00:00:00Z</td><td>/v3/Timesheets?$filter=EndDate gt 2021-06-21T00:00:00Z</td></tr><tr><td>ge</td><td>Greater than and equals</td><td>/v3/Timesheets?$filter=StartDate ge 2021-04-27T00:00:00Z</td><td>/v3/Timesheets?$filter=EndDate ge 2021-06-21T00:00:00Z</td></tr><tr><td>lt</td><td>Lesser than</td><td>/v3/Timesheets?$filter=StartDate lt 2021-04-27T00:00:00Z</td><td>/v3/Timesheets?$filter=EndDate lt 2021-06-21T00:00:00Z</td></tr><tr><td>le</td><td>Lesser than and equals</td><td>/v3/Timesheets?$filter=StartDate le 2021-04-27T00:00:00Z</td><td>/v3/Timesheets?$filter=EndDate le 2021-06-21T00:00:00Z</td></tr><tr><td>and</td><td>Combines properties</td><td>/v3/Timesheets?$filter=StartDate gt 2021-04-27T00:00:00Z and StartDate lt 2021-06-27T00:00:00Z</td><td>/v3/Timesheets?$filter=EndDate gt 2021-04-27T00:00:00Z and EndDate lt 2021-06-21T00:00:00Z</td></tr></tbody></table></li>\n\n### Functions for DateTime properties\n\n<table><thead><tr><th>Functions</th><th>StartDate</th><th>EndDate</th></tr></thead><tbody><tr><td>day</td><td>/v3/Timesheets?$filter=day(StartDate) eq 4</td><td>/v3/Timesheets?$filter=day(EndDate) eq 17</td></tr><tr><td>month</td><td>/v3/Timesheets?$filter=month(StartDate) eq 4</td><td>/v3/Timesheets?$filter=month(EndDate) eq 8</td></tr><tr><td>year</td><td>/v3/Timesheets?$filter=year(StartDate) eq 2021</td><td>/v3/Timesheets?$filter=year(EndDate) eq 2022</td></tr></tbody></table>\n\n### $filter operators for the rest of the properties\n\n<table><thead><tr><th>Logical Operators</th><th>Purpose</th><th>UserKey</th><th>WorkItemKeys</th>\n<th>Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>eq</td>\n<td>Full-text search</td>\n<td>/v3/Timesheets?$filter=UserKey eq '2mYzTtly89Lq'</td>\n<td>/v3/Timesheets?$filter=WorkItemKeys/any(x: x eq '5mGnTfly34Rf')</td>\n<td>/v3/Timesheets?$filter=Status eq 'Draft'</td>\n</tr>\n<tr>\n<td>in</td>\n<td>Combines multiple ORs</td>\n<td>/v3/Timesheets?$filter=UserKey in ('2mYzTtly89Lq',  '2Qy48WVCRBcP' )</td>\n<td>/v3/Timesheets?$filter=WorkItemKeys/any(x: x in ('2m6pSFxRzcF2', '2y7H6dhQL7mD'))</td>\n<td>/v3/Timesheets?$filter=Status in ('Draft', 'Approved')</td>\n</tr>\n</tbody>\n</table>\n",
        "operationId": "getAllTimesheets",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTimeSheets"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Unsupported_Property_Filter"
                  },
                  "Unsupported Orderby Property": {
                    "$ref": "#/components/examples/Orderby_Unsupported_Property"
                  },
                  "Unsupported Logical Operator": {
                    "$ref": "#/components/examples/Unsupported_Logical_Operator"
                  },
                  "$top limit exceeded": {
                    "$ref": "#/components/examples/Limit_Exceeded_Top"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Timesheets/{Timesheetkey}": {
      "get": {
        "deprecated": true,
        "tags": ["Timesheets and Time Entries"],
        "summary": "Gets a Timesheets using Timesheetkey",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "Timesheetkey",
            "schema": {
              "type": "string"
            },
            "example": "QbQFGnqPDDs",
            "description": "The Karbon-generated Timesheet key"
          },
          {
            "in": "query",
            "name": "$expand",
            "schema": {
              "type": "string",
              "enum": ["TimeEntries"]
            },
            "example": "TimeEntries",
            "description": "When this parameter is combined with the URI, this endpoint will also return the Time Entries associated with the Timesheets.\n"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a Timesheet specified using the `Timesheetkey`.\n\nUsing the query parameter available to this endpoint,  you can also include the Time Entries associated with the Timesheet in the response.\n\n**Notes**: Timesheets and Time Entries are aggregated to the time period matching your timesheet frequency (by default this is weekly, but it can be from 1-31 days long, depending on your Karbon settings). It is not possible to get a daily breakdown from this endpoint. If you need finer grained data, see <a href=\"#tag--Individual-Time-Entries\">here.</a>",
        "operationId": "getTimesheetByID",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "@odata.context": {
                          "type": "string",
                          "description": "The information about Karbon controllers generating this response.",
                          "example": "https://api.karbonhq.com/v3/$metadata#Timesheets(TimeEntries())/$entity"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/GetSingleTimeSheet"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/Timesheet_Key_Not_Found_404"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/IndividualTimeEntries": {
      "get": {
        "tags": ["Timesheets and Time Entries"],
        "summary": "Gets a list of individual time entries",
        "parameters": [
          {
            "in": "query",
            "name": "$filter",
            "schema": {
              "type": "string"
            },
            "examples": {
              "Date": {
                "value": "Date gt 2024-01-01T00:00:00Z",
                "summary": "Return entries where Date is after January 1, 2024"
              },
              "DateRange": {
                "value": "Date ge 2024-01-01T00:00:00Z and Date le 2024-03-31T00:00:00Z",
                "summary": "Return entries within a date range"
              },
              "TimesheetKey": {
                "value": "TimesheetKey eq '3TxlnQ4Pd8zJ'",
                "summary": "Return all entries for a specific timesheet"
              },
              "UserKey": {
                "value": "UserKey eq '2xfLMq5PFqb7'",
                "summary": "Return entries for a specific user"
              },
              "WorkItemKey": {
                "value": "WorkItemKey eq '3cC1vkWmhGb1'",
                "summary": "Return entries for a specific work item"
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will return a subset of the individual time entries that satisfy the `$filter` expression.\n"
          },
          {
            "in": "query",
            "name": "$orderby",
            "schema": {
              "type": "string",
              "enum": ["Date", "Date desc"],
              "default": "Date"
            },
            "example": "Date desc",
            "description": "Sort the results by Date.\n"
          },
          {
            "$ref": "#/components/parameters/SkipRecordsUnbounded"
          },
          {
            "$ref": "#/components/parameters/TopRecordsLimitedTo1000"
          },
          {
            "in": "query",
            "name": "$count",
            "schema": {
              "type": "boolean"
            },
            "example": true,
            "description": "Default is `false` (`false` is recommended). When set to `true`, the response will include the total count of matching entries in `@odata.count`.\n"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive a paginated list of individual (non-aggregated) time entries from your tenant. Using the query parameters available to this endpoint, you can also filter the list of individual time entries by their Date, TimesheetKey, EntityKey, WorkItemKey, ClientKey, UserKey, RoleName, and TaskTypeName.\n\nUnlike the Timesheets endpoint, each record represents a single time entry for a specific day, user, and work item / contact — not aggregated in any way.\n\n**Notes**\n\n* This endpoint returns a maximum of 1000 entries at once.\n* The `$filter` query parameter supports 6 logical operators, 3 functions and 8 properties to help you form an expression. They are listed below with examples of usage.\n\n### $filter operators for DateTime properties\n\n<table><thead><tr><th>Logical Operators</th><th>Purpose</th><th>Date</th></tr></thead><tbody><tr><td>eq</td><td>Full-text search</td><td>/v3/IndividualTimeEntries?$filter=Date eq 2024-07-04T00:00:00Z</td></tr><tr><td>gt</td><td>Greater than</td><td>/v3/IndividualTimeEntries?$filter=Date gt 2024-01-01T00:00:00Z</td></tr><tr><td>ge</td><td>Greater than and equals</td><td>/v3/IndividualTimeEntries?$filter=Date ge 2024-01-01T00:00:00Z</td></tr><tr><td>lt</td><td>Lesser than</td><td>/v3/IndividualTimeEntries?$filter=Date lt 2024-03-31T00:00:00Z</td></tr><tr><td>le</td><td>Lesser than and equals</td><td>/v3/IndividualTimeEntries?$filter=Date le 2024-03-31T00:00:00Z</td></tr><tr><td>and</td><td>Combines properties</td><td>/v3/IndividualTimeEntries?$filter=Date ge 2024-01-01T00:00:00Z and Date lt 2024-04-01T00:00:00Z</td></tr></tbody></table></li>\n\n### Functions for DateTime properties\n\n<table><thead><tr><th>Functions</th><th>Date</th></tr></thead><tbody><tr><td>day</td><td>/v3/IndividualTimeEntries?$filter=day(Date) eq 4</td></tr><tr><td>month</td><td>/v3/IndividualTimeEntries?$filter=month(Date) eq 7</td></tr><tr><td>year</td><td>/v3/IndividualTimeEntries?$filter=year(Date) eq 2024</td></tr></tbody></table>\n\n### $filter operators for the rest of the properties\n\nAll of the following properties support `eq` (and `and` to combine conditions).\n\n<table><thead><tr><th>Property</th><th>Example</th></tr></thead><tbody><tr><td>TimesheetKey</td><td>/v3/IndividualTimeEntries?$filter=TimesheetKey eq '3TxlnQ4Pd8zJ'</td></tr><tr><td>EntityKey</td><td>/v3/IndividualTimeEntries?$filter=EntityKey eq '3cC1vkWmhGb1'</td></tr><tr><td>WorkItemKey</td><td>/v3/IndividualTimeEntries?$filter=WorkItemKey eq '3cC1vkWmhGb1'</td></tr><tr><td>ClientKey</td><td>/v3/IndividualTimeEntries?$filter=ClientKey eq 'ZGNmtYyLm4z'</td></tr><tr><td>UserKey</td><td>/v3/IndividualTimeEntries?$filter=UserKey eq '2xfLMq5PFqb7'</td></tr><tr><td>RoleName</td><td>/v3/IndividualTimeEntries?$filter=RoleName eq 'Director'</td></tr><tr><td>TaskTypeName</td><td>/v3/IndividualTimeEntries?$filter=TaskTypeName eq 'Tax Return'</td></tr></tbody></table>\n",
        "operationId": "getAllIndividualTimeEntries",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetIndividualTimeEntries"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Unsupported_Property_Filter"
                  },
                  "Unsupported Logical Operator": {
                    "$ref": "#/components/examples/Unsupported_Logical_Operator"
                  },
                  "$top limit exceeded": {
                    "$ref": "#/components/examples/Limit_Exceeded_Top"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/IndividualTimeEntries/{IndividualTimeEntryKey}": {
      "get": {
        "tags": ["Timesheets and Time Entries"],
        "summary": "Gets an individual time entry by key",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "IndividualTimeEntryKey",
            "schema": {
              "type": "string",
              "maxLength": 32
            },
            "example": "a1b2c3d4e5f67890abcdef1234567890",
            "description": "The Karbon-generated GUID key for the individual time entry (32-character hex string, no hyphens)"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a single individual time entry specified using the `IndividualTimeEntryKey`.",
        "operationId": "GetIndividualTimeEntryByKey",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "@odata.context": {
                          "type": "string",
                          "description": "The information about Karbon controllers generating this response.",
                          "example": "https://api.karbonhq.com/v3/$metadata#IndividualTimeEntries/$entity"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/GetIndividualTimeEntry"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Invalid Key": {
                    "$ref": "#/components/examples/IndividualTimeEntry_Invalid_Key_400"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/IndividualTimeEntry_Key_Not_Found_404"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Users": {
      "get": {
        "tags": ["Users"],
        "summary": "Gets a list of Users",
        "parameters": [
          {
            "in": "query",
            "name": "$filter",
            "schema": {
              "type": "string"
            },
            "examples": {
              "Name": {
                "value": "Name eq 'John Smith'",
                "summary": "Return the Users with the name 'John Smith'"
              },
              "EmailAddress": {
                "value": "EmailAddress eq 'joe@samplecompany.com'",
                "summary": "Return the Users with the Email Eddress 'joe@samplecompany.com'"
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will return a subset of the Users that satisfy the `$filter` expression.\n"
          },
          {
            "$ref": "#/components/parameters/SkipRecords"
          },
          {
            "$ref": "#/components/parameters/TopRecords"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive a paginated list of Users from your tenant.   Using the query parameters available to this endpoint, you can also filter the list of Users by their Name, and EmailAddress.\n\n**Notes**\n\n* This endpoint returns a maximum of 100 Users at once.\n* If the query results in more than 100 Users, a link to the next set of the results will be given in the `@odata.nextLink` field of the response.\n* The `$filter` query parameter supports 3 logical operators (`eq`, `contains`, and `and`), and 2 properties to help you  form an expression. They are listed below with examples of usage.\n\n<table>\n<thead>\n<tr>\n<th>Logical Operators</th>\n<th>Purpose</th>\n<th>Name</th>\n<th>EmailAddress</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>eq</td>\n<td>Full-text search</td>\n<td>/v3/Users?$filter=Name eq 'Joe Min'</td>\n<td>/v3/Users?$filter=EmailAddress eq 'joe@samplecompany.com'</td>\n</tr>\n<tr>\n<td>contains</td>\n<td>Partial-text search</td>\n<td>/v3/Users?$filter=(contains(Name, 'Min'))</td>\n<td>/v3/Users?$filter=(contains(EmailAddress, 'joe'))</td>\n</tr>\n<tr>\n<td>and</td>\n<td>Combines properties</td>\n<td colspan = \"2\">/v3/Users?$filter=Name eq 'Joe Min' and contains(EmailAddress, 'joe')</td>\n</tr>\n</tbody>\n</table>\n",
        "operationId": "getAllUsers",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUsers"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Logical Operator": {
                    "$ref": "#/components/examples/Unsupported_Logical_Operator"
                  },
                  "$top limit exceeded": {
                    "$ref": "#/components/examples/Limit_Exceeded_Top"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": ["Users"],
        "summary": "Creates a new User",
        "description": "Use the `POST` method on this endpoint to create a new User in your tenant.",
        "operationId": "createUser",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "@odata.context": {
                          "type": "string",
                          "description": "The information about Karbon controllers generating this response.",
                          "example": "https://api.karbonhq.com/v3/$metadata#Users/$entity"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/GetSingleUser"
                    }
                  ]
                }
              }
            },
            "headers": {
              "Location": {
                "description": "The endpoint URL to the newly created User.",
                "schema": {
                  "type": "string",
                  "example": "https://api.karbonhq.com/v3/Users('4LR9qmR5NQ6T')"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Create_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Name or Email Is Empty": {
                    "$ref": "#/components/examples/Name_or_Email_Is_Empty"
                  },
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["Name", "EmailAddress"],
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "The name of the User",
                    "example": "Joe Min"
                  },
                  "EmailAddress": {
                    "type": "string",
                    "description": "The email address of the User",
                    "example": "joe@samplecompany.com"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/Users/{UserId}": {
      "get": {
        "tags": ["Users"],
        "summary": "Gets the details of a single User",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "UserId",
            "schema": {
              "type": "string"
            },
            "example": "2bYxtn94ZSdY",
            "description": "The unique ID of the User to get"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a single User from your tenant.",
        "operationId": "getUserById",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUserById"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/WebhookSubscriptions/{WebhookType}": {
      "get": {
        "tags": ["Webhook Subscriptions"],
        "summary": "Gets a Webhook Subscription",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "WebhookType",
            "schema": {
              "type": "string",
              "enum": [
                "Contact",
                "CustomField",
                "Work",
                "Note",
                "User",
                "IntegrationTask",
                "Invoice",
                "EstimateSummary"
              ]
            },
            "example": "Contact",
            "description": "The type of Karbon entity, which the Webhook Subscription must be associated with"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a Webhook Subscriptions associated with the Karbon entity specified using the `WebhookType`.\n\n**Only one** Webhook Subscription can exist per entity.\n",
        "operationId": "getWebhookSubscriptionsByWebhookType",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWebhookSubscriptions"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "No existing Subscriptions": {
                    "$ref": "#/components/examples/Webhook_Subscription_Key_Not_Found_404"
                  },
                  "Invalid Subscription Type": {
                    "$ref": "#/components/examples/Webhook_Subscription_Type_Not_Found_404"
                  },
                  "HTTP Resource Not Found": {
                    "$ref": "#/components/examples/HTTP_Resource_Not_Found"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": ["Webhook Subscriptions"],
        "summary": "Deletes a Webhook Subscription",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "WebhookType",
            "schema": {
              "type": "string",
              "enum": [
                "Contact",
                "CustomField",
                "Work",
                "Note",
                "User",
                "IntegrationTask",
                "Invoice",
                "EstimateSummary"
              ]
            },
            "example": "Contact",
            "description": "The type of Karbon entity, which the Webhook Subscription must be associated with"
          }
        ],
        "description": "Use the `DELETE` method on this endpoint to delete a Webhook Subscription associated with the Karbon entity specified using the `WebhookType`.\n\n\n",
        "operationId": "delWebhookSubscriptionsByWebhookType",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Invalid Subscription Type": {
                    "$ref": "#/components/examples/Webhook_Subscription_Type_Not_Found_404"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/WebhookSubscriptions": {
      "post": {
        "tags": ["Webhook Subscriptions"],
        "summary": "Creates a new Webhook Subscription",
        "description": "\n\nUse the `POST` method on create and associate a Webhook Subscriptions with a Karbon entity.\n\nYou can create **only one** Webhook Subcription per entity.\n\nPayload delivery for a webhook subscription will be retried 10 times, with increasing delays. If unsuccessful after 10 tries (no 2xx HTTP response), the subscription ends and needs to be recreated to receive further updates.\n",
        "operationId": "createWebhookSubscription",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWebhookSubscriptions"
                }
              }
            },
            "headers": {
              "Location": {
                "description": "The endpoint URL to the newly created Webhook Subscription.",
                "schema": {
                  "type": "string",
                  "example": "https://api.karbonhq.com/v3/WebhookSubscriptions('https://example.com/webhook')"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Create_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  },
                  "Bad Model": {
                    "$ref": "#/components/examples/Bad_Model"
                  },
                  "Invalid Subscription Type": {
                    "$ref": "#/components/examples/Webhook_Subscription_Type_Not_Found_404"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "TargetUrl": {
                    "type": "string",
                    "required": true,
                    "format": "uri",
                    "description": "The URL to your server that is waiting to receive information about the `WebhookType` from Karbon",
                    "example": "https://example.com/webhook",
                    "maxLength": 2000
                  },
                  "WebhookType": {
                    "type": "string",
                    "enum": ["Contact", "Work", "Note", "User", "IntegrationTask", "Invoice", "EstimateSummary"],
                    "description": "The type of Karbon entity which the Webhook Subscription is associated with. To receive ClientGroup, Contact and Organization updates, pass WebhookType as `Contact`. To receive Custom Field value updates, pass WebhookType as `CustomField`. To receive WorkItem updates, pass WebhookType as `Work`. To receive Note and NoteComment updates, pass WebhookType as `Note`. To receive an update when a User has accepted an invite to Karbon, pass WebhookType as `User`. To receive an update when an Invoice changes status, pass WebhookType as `Invoice`. To receive an update when an EstimateSummary is updated, pass WebhookType as `EstimateSummary`. Integration partners using the Integration Task feature can use `IntegrationTask` as the webhook subscription type to receive a notification when an integration task is added to a Work Item or a new Work Item is created from a Work Template that contains one or more Integraition Tasks.",
                    "example": "Contact",
                    "required": true
                  },
                  "SigningKey": {
                    "oneOf": [
                      {
                        "type": "string",
                        "minLength": 16,
                        "pattern": "^[A-Za-z0-9-_]+$",
                        "example": "96434E14-3C96-4F07-9FC2-CCC736827309"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "An optional key that will be used to sign webhook payloads, may contain letters, numbers, dashes or underscores"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": ["Webhook Subscriptions"],
        "summary": "Deletes all Webhook Subscriptions",
        "description": "Use the `DELETE` method on this endpoint to delete all Webhook Subscriptions associated with Contact, Work, and Note.\n\n\n",
        "operationId": "delAllWebhookSubscriptions",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/WorkItems": {
      "get": {
        "tags": ["Work Items"],
        "summary": "Gets a list of Work Items",
        "parameters": [
          {
            "in": "query",
            "name": "$filter",
            "schema": {
              "type": "string"
            },
            "examples": {
              "AssigneeEmailAddress": {
                "value": "AssigneeEmailAddress eq 'karbon@example.com'",
                "summary": "Returns only the Work Items where the Assignee Email is 'karbonhq@example.com'"
              },
              "ClientKey": {
                "value": "ClientKey eq '2nvhdM1TmZk3'",
                "summary": "Returns only the Work Items where the unqiue key of the Client Group, Contact, Organization or User is '2nvhdM1TmZk3'"
              },
              "PrimaryStatus": {
                "value": "PrimaryStatus eq 'In Progress'",
                "summary": "Returns only the Work Items where the Work Primary Status is 'In Progress', a complete list of Primary Status values can be retrieved the TenantSettings endpoint"
              },
              "StartDate": {
                "value": "StartDate ge 2024-01-01",
                "summary": "Return only the Work Items where the Start Date is on or after January 1, 2024"
              },
              "Title": {
                "value": "contains(ContactType, 'Client')",
                "summary": "Return only the WorkItems which have a Title that contains the word 'Tax'"
              },
              "WorkScheduleKey": {
                "value": "WorkScheduleKey eq 'FXcWYY9xZfd'",
                "summary": "Return only the Work Items that are part of the Work Schedule with the unique key 'FXcWYY9xZfd'"
              },
              "WorkTemplateKey": {
                "value": "WorkTemplateKey eq '2vBsCfGk9hJD'",
                "summary": "Return only the Work Items that were created from the Work Template with the unique key '2vBsCfGk9hJD'"
              },
              "WorkStatus": {
                "value": "WorkStatus eq 'InProgress'",
                "summary": "Return only the Work Items with the Work Status 'In progress'"
              },
              "WorkType": {
                "value": "WorkType eq 'Payroll'",
                "summary": "Return only the Work Items with the Work Type 'Payroll'"
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will return a subset of the Work Items that satisfy the `$filter` expression.\n"
          },
          {
            "in": "query",
            "name": "$orderby",
            "schema": {
              "type": "string",
              "enum": ["StartDate", "StartDate desc", "DeadlineDate", "DeadlineDate desc"],
              "default": "WorkItemKey"
            },
            "example": "StartDate",
            "description": "When this parameter is combined with the URI, this endpoint will return a list of Work Items, sorted by the available properties. Using the `desc` variant will return items in most to least recent order.\n"
          },
          {
            "$ref": "#/components/parameters/SkipRecords"
          },
          {
            "$ref": "#/components/parameters/TopRecords"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive a paginated list of Work Items from your tenant. Using the query parameters available to this endpoint, you can also filter the list of Work Items by their AssigneeEmailAddress, ClientKey, PrimaryStatus, StartDate, Title, WorkScheduleKey, WorkStatus, WorkTemplateKey, and WorkType.\n\n**Notes**\n\n* This endpoint returns a maximum of 100 Work Items at once.\n* If the query results in more than 100 Work Items, a link to the next set of the results will be given in the `@odata.nextLink` field of the response.\n* The `$filter` query parameter supports multiple logical operators and 7 properties to help you form an expression. They are listed below with examples of usage.\n\n### $filter operators for StartDate property\n<table><thead><tr><th>Operators</th><th>Purpose</th><th>StartDate</th></tr></thead><tbody><tr><td>ge</td><td>Greater than and equals</td><td>/v3/WorkItems?$filter=StartDate ge 2021-04-27T00:00:00Z</td></tr><tr><td>le</td><td>Lesser than and equals</td><td>/v3/WorkItems?$filter=StartDate le 2021-04-27T00:00:00Z</td></tr><tr><td>and</td><td>Combines properties</td><td>/v3/WorkItems?$filter=StartDate ge 2021-04-27T00:00:00Z and PrimaryStatus eq 'Planned'</td></tr></tbody></table>### $filter operators for rest of the properties<table><thead><tr><th>Property</th><th>eq [For full-text search]</th><th>and [For combined-property search]</th><th>contains [For partial-text search]</th></tr></thead><tbody><tr><td>AssigneeEmailAddress</td><td>/v3/WorkItems?$filter=AssigneeEmailAddress eq 'joe@samplecompany.com'</td><td>/v3/WorkItems?$filter=AssigneeEmailAddress eq 'joe@samplecompany.com' and PrimaryStatus eq 'Planned'</td><td>/v3/WorkItems?$filter=(contains(AssigneeEmailAddress , 'joe'))</td></tr><tr><td>ClientKey</td><td>/v3/WorkItems?$filter=ClientKey eq '2nvhdM1TmZk3'</td><td>/v3/WorkItems?$filter=ClientKey eq '2nvhdM1TmZk3' and contains(AssigneeEmailAddress , 'joe')</td><td>N/A</td></tr><tr><td>PrimaryStatus</td><td>/v3/WorkItems?$filter=PrimaryStatus eq 'Planned'</td><td>/v3/WorkItems?$filter=AssigneeEmailAddress eq 'joe@samplecompany.com' and PrimaryStatus eq 'Planned'</td><td>N/A</td></tr><tr><td>Title</td><td>/v3/WorkItems?$filter=Title eq 'Payroll 31 Aug - 15 Sep 2022'</td><td>/v3/WorkItems?$filter=Title eq 'Payroll 31 Aug - 15 Sep 2022' and PrimaryStatus eq 'Planned'</td><td>/v3/WorkItems?$filter=(contains(Title, 'pay'))</td></tr><tr><td>WorkScheduleKey</td><td>/v3/WorkItems?$filter=WorkScheduleKey eq 'FXcWYY9xZfd'</td><td>/v3/WorkItems?$filter=WorkScheduleKey eq 'FXcWYY9xZfd' and PrimaryStatus eq 'Planned'</td><td>N/A</td></tr><tr><td>WorkStatus</td><td>/v3/WorkItems?$filter=WorkStatus eq 'Ready To Start'</td><td>/v3/WorkItems?$filter=WorkStatus eq 'Ready To Start' and (contains(Title, 'Pay'))</td><td>/v3/WorkItems?$filter=(contains(WorkStatus , 'joe'))</td></tr><tr><td>WorkType</td><td>/v3/WorkItems?$filter=WorkType eq 'Payroll'</td><td>/v3/WorkItems?$filter=WorkType eq 'Payroll' and PrimaryStatus eq 'Planned'</td><td>/v3/WorkItems?$filter=(contains(WorkType , 'pay'))</td></tr></tbody></table>",
        "operationId": "getAllWorkItems",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkItems"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Unsupported_Property_Filter"
                  },
                  "Unsupported Orderby Property": {
                    "$ref": "#/components/examples/Orderby_Unsupported_Property"
                  },
                  "$top limit exceeded": {
                    "$ref": "#/components/examples/Limit_Exceeded_Top"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": ["Work Items"],
        "summary": "Creates a new Work Item",
        "description": "Use the `POST` method on this endpoint to create a new Work Item in your tenant.\n",
        "operationId": "createWorkItem",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "@odata.context": {
                          "type": "string",
                          "description": "The information about Karbon controllers generating this response.",
                          "example": "https://api.karbonhq.com/v3/$metadata#WorkItems/KarbonService.WorkItemDTO/$entity"
                        },
                        "@odata.type": {
                          "type": "string",
                          "description": "The information about Karbon Objects generating this response.",
                          "example": "#KarbonService.WorkItemDTO"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/WorkItemWithFeeSettings"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "Description": {
                          "type": "string",
                          "description": "A free form text field to add more information about the Work Item",
                          "example": "Send to Jo for review"
                        },
                        "ClientTaskRecipient": {
                          "type": "string",
                          "description": "The details about the recipient of the Client Tasks related to this Work Item. This property will always return `null`.",
                          "example": null
                        }
                      }
                    }
                  ]
                }
              }
            },
            "headers": {
              "Location": {
                "description": "The endpoint URL to the newly created Work Item.",
                "schema": {
                  "type": "string",
                  "example": "https://api.karbonhq.com/v3/WorkItems('2VfHzHkJZPVV')/KarbonService.WorkItemDTO"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/EnhancedErrorMessages"
                    },
                    {
                      "$ref": "#/components/schemas/ErrorMessages"
                    }
                  ]
                },
                "examples": {
                  "Client Not a member of ClientGroup": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Client_Not_a_member_of_ClientGroup"
                  },
                  "Incorrect Assignee Email Address": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Incorrect_EmailAddress"
                  },
                  "Incorrect Client Key": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Incorrect_ClientKey"
                  },
                  "Incorrect Client Type": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Incorrect_ClientType"
                  },
                  "Incorrect Work Template Key": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Incorrect_WorkTemplate_Key"
                  },
                  "Incorrect Work Type": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Incorrect_WorkType"
                  },
                  "Missing Create Data": {
                    "$ref": "#/components/examples/Missing_Create_Data"
                  },
                  "Required Property is empty": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Empty_Property"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestCreateWorkItem"
              }
            }
          }
        }
      }
    },
    "/v3/WorkItems/{WorkItemKey}": {
      "get": {
        "tags": ["Work Items"],
        "summary": "Gets a Work Item using WorkItemKey",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "WorkItemKey",
            "schema": {
              "type": "string"
            },
            "example": "2LPSrkzbYrn4",
            "description": "The Karbon-generated Work Item key"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a Work Item specified using the WorkItemKey.\n",
        "operationId": "getWorkItemByID",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "@odata.context": {
                          "type": "string",
                          "description": "The information about Karbon controllers generating this response.",
                          "example": "https://api.karbonhq.com/v3/$metadata#WorkItems/KarbonService.WorkItemDTO/$entity"
                        },
                        "@odata.type": {
                          "type": "string",
                          "description": "The information about Karbon Objects generating this response.",
                          "example": "#KarbonService.WorkItemDTO"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/WorkItemWithFeeSettingsAndUserRoleAssignments"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "Description": {
                          "type": "string",
                          "description": "A free form text field to add more information about the Work Item",
                          "example": "Send to Jo for review"
                        },
                        "ClientTaskRecipient": {
                          "type": "string",
                          "description": "The details about the recipient of the Client Tasks related to this Work Item. This property will always return `null`.",
                          "example": null
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/WorkItem_Key_Not_Found_404"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Work Items"],
        "summary": "Updates a Work Item (Full)",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "WorkItemKey",
            "schema": {
              "type": "string"
            },
            "example": "2LPSrkzbYrn4",
            "description": "The Karbon-generated Work Item key"
          }
        ],
        "description": "Use the `PUT` method on this endpoint to update full details of a Work Item (specified using the WorkItemKey).\n",
        "operationId": "putWorkItemByID",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/EnhancedErrorMessages"
                    },
                    {
                      "$ref": "#/components/schemas/ErrorMessages"
                    }
                  ]
                },
                "examples": {
                  "Client Not a member of ClientGroup": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Client_Not_a_member_of_ClientGroup"
                  },
                  "Incorrect Assignee Email Address": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Incorrect_EmailAddress"
                  },
                  "Incorrect Client Key": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Incorrect_ClientKey"
                  },
                  "Incorrect Client Type": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Incorrect_ClientType"
                  },
                  "Incorrect Work Template Key": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Incorrect_WorkTemplate_Key"
                  },
                  "Incorrect Work Type": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Incorrect_WorkType"
                  },
                  "Missing Create Data": {
                    "$ref": "#/components/examples/Missing_Create_Data"
                  },
                  "Required Property is empty": {
                    "$ref": "#/components/examples/Bad_Model_WorkItem_Empty_Property"
                  },
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Update_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Work Item Key Not Found": {
                    "$ref": "#/components/examples/WorkItem_Key_Not_Found_404"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestCreateWorkItem"
              }
            }
          }
        }
      },
      "patch": {
        "tags": ["Work Items"],
        "summary": "Updates a Work Item (Partial)",
        "parameters": [
          {
            "in": "path",
            "name": "WorkItemKey",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "2LPSrkzbYrn4",
            "description": "The Karbon-generated Work Item key"
          }
        ],
        "description": "Use the `PATCH` method on this endpoint to update partial details of a Work Item (specified using the WorkItemKey).\n\nThis method supports editing the `Title`, `Description`, `StartDate`, `DueDate`, `DeadlineDate`, `AssigneeEmailAddress`, and `WorkType` properties. Sending any other property in the request body returns a `400`.",
        "operationId": "patchWorkItemByID",
        "responses": {
          "204": {
            "description": "No Content",
            "content": {}
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Update_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  },
                  "Invalid Property": {
                    "$ref": "#/components/examples/Invalid_Property"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Work Item Key Not Found": {
                    "$ref": "#/components/examples/WorkItem_Key_Not_Found_404"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWorkItem"
              }
            }
          }
        }
      }
    },
    "/v3/WorkSchedules": {
      "post": {
        "tags": ["Work Schedules"],
        "summary": "Creates a new Work Schedule",
        "description": "Use the `POST` method on this endpoint to create a new Work Schedule in your tenant.\n",
        "operationId": "createWorkSchedule",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkSchedule"
                }
              }
            },
            "headers": {
              "Location": {
                "description": "The endpoint URL to the newly created Work Schedule.",
                "schema": {
                  "type": "string",
                  "example": "https://api.karbonhq.com/v3/WorkSchedules('4yRJNlPnjgtL')"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Missing CreatedFromWorkItemKey": {
                    "$ref": "#/components/examples/Missing_CreatedFromWorkItemKey"
                  },
                  "Incorrect CustomFrequencyMultiple": {
                    "$ref": "#/components/examples/Incorrect_CustomFrequencyMultiple"
                  },
                  "Missing Create Data": {
                    "$ref": "#/components/examples/Missing_Create_Data"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkScheduleRequest"
              }
            }
          }
        }
      }
    },
    "/v3/WorkSchedules/{WorkSchedulekey}": {
      "get": {
        "tags": ["Work Schedules"],
        "summary": "Gets a Work Schedule using WorkSchedulekey",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "WorkSchedulekey",
            "schema": {
              "type": "string"
            },
            "example": "Bm6CGxrWp8W",
            "description": "The Karbon-generated Work Schedule key"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a Work Schedule specified using the WorkSchedulekey.\n",
        "operationId": "getWorkScheduleByID",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkSchedule"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/WorkSchedule_Key_Not_Found_404"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": ["Work Schedules"],
        "summary": "Updates a Work Schedule (Full)",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "WorkSchedulekey",
            "schema": {
              "type": "string"
            },
            "example": "Bm6CGxrWp8W",
            "description": "The Karbon-generated Work Schedule key"
          }
        ],
        "description": "Use the `PUT` method on this endpoint to update full details of a Work Schedule specified using the WorkSchedulekey.",
        "operationId": "putWorkScheduleByID",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Missing Create Data": {
                    "$ref": "#/components/examples/Missing_Create_Data"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/NotFound"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkSchedulePUTRequest"
              }
            }
          }
        }
      },
      "patch": {
        "tags": ["Work Schedules"],
        "summary": "Updates a Work Schedule (Partial)",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "WorkSchedulekey",
            "schema": {
              "type": "string"
            },
            "example": "Bm6CGxrWp8W",
            "description": "The Karbon-generated Work Schedule key"
          }
        ],
        "description": "Use the `PATCH` method on this endpoint to update partial details of a Work Schedule specified using the WorkSchedulekey.\n\nThis method **only supports** editing the `ScheduleEndDate` property. Pass `null` to clear an existing end date.",
        "operationId": "patchWorkScheduleByID",
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Incorrect or Missing Data": {
                    "$ref": "#/components/examples/Missing_Update_Data"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  },
                  "Invalid Property": {
                    "$ref": "#/components/examples/Invalid_Property"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Resource Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/WorkSchedule_Key_Not_Found_404"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict — the resource was modified by another request. Refetch the latest version and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Stale Object State": {
                    "$ref": "#/components/examples/Conflict_StaleObjectState"
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "description": "Refer to the table below for more information on each field in the request body.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWorkSchedule"
              }
            }
          }
        }
      }
    },
    "/v3/WorkTemplates": {
      "get": {
        "tags": ["Work Templates"],
        "summary": "Gets a list of Work Templates",
        "parameters": [
          {
            "in": "query",
            "name": "$filter",
            "schema": {
              "type": "string"
            },
            "examples": {
              "Title": {
                "value": "Title eq 'Payroll processing'",
                "summary": "Return only Work Templates with the Title 'Payroll processing'"
              },
              "WorkTypeKey": {
                "value": "WorkTypeKey eq '2Wj3ZqNzWtnQ'",
                "summary": "Return only Work Templates with the WorkType key '2Wj3ZqNzWtnQ'"
              },
              "HasScheduledClientTaskGroups": {
                "value": "HasScheduledClientTaskGroups eq false",
                "summary": "Return only Work Templates without scheduled ClientTaskGroups"
              },
              "DraftHasChanges": {
                "value": "DraftHasChanges eq false",
                "summary": "Return only Work Templates without changes"
              },
              "PublishedDate": {
                "value": "PublishedDate eq 2021-12-17T00:00:00Z",
                "summary": "Return only Work Templates published on December 17, 2021"
              },
              "NumberOfWorkItemsCreated": {
                "value": "NumberOfWorkItemsCreated eq 0",
                "summary": "Return only Work Templates which have been used to create 0 Work Items"
              },
              "DateLastWorkItemCreated": {
                "value": "DateLastWorkItemCreated eq 2022-11-07T00:00:00Z",
                "summary": "Return only Work Templates where the Last Work Item created was November 7, 2022"
              },
              "DateModified": {
                "value": "DateModified eq 2023-02-27T13:00:00Z",
                "summary": "Return only Work Templates last modified at 1pm on 2023-02-27 (UTC)"
              }
            },
            "description": "When this parameter is combined with the URI, this endpoint will return a subset of the Work Templates that satisfy the `$filter` expression.\n"
          },
          {
            "in": "query",
            "name": "$orderby",
            "schema": {
              "type": "string",
              "enum": [
                "WorkTypeKey",
                "WorkTypeKey desc",
                "PublishedDate",
                "PublishedDate desc",
                "NumberOfWorkItemsCreated",
                "NumberOfWorkItemsCreated desc",
                "DateLastWorkItemCreated",
                "DateLastWorkItemCreateddesc",
                "DateModified",
                "DateModified desc"
              ],
              "default": "WorkTypeKey"
            },
            "example": "PublishedDate",
            "description": "When this parameter is combined with the URI, this endpoint will return a list of Work Templates, sorted by the available properties.\n"
          },
          {
            "$ref": "#/components/parameters/SkipRecords"
          },
          {
            "$ref": "#/components/parameters/TopRecords"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive a paginated list of Work Templates from your tenant. Using the query parameters available to this endpoint, you can also filter the list of Work Templates by their Title, WorkTypeKey, HasScheduledClientTaskGroups, DraftHasChanges, PublishedDate, NumberOfWorkItemsCreated, DateLastWorkItemCreated, or DateModified.\n\n**Notes**\n\n* This endpoint returns a maximum of 100 Work Templates at once.\n* If the query results in more than 100 Work Templates, a link to the next set of the results will be given in the `@odata.nextLink` field of the response.\n* The `$filter` query parameter supports 3 logical operators (`eq`, `startswith` and `and`) and 8 properties to help you form an expression. Usage examples below:\n\n<table><thead><tr><th>Properties</th><th>eq\n\n[For full-text search]</th><th>startswith\n\n[For searching text that starts with specified characters]</th><th>and\n\n[For combined property search]</th></tr></thead><tbody><tr><td>Title</td><td>/v3/WorkTemplates?$filter=Title eq 'Payroll processing'</td><td>/v3/WorkTemplates?$filter=startswith(Title,'Payroll')</td><td rowspan = \"8\">/v3/WorkTemplates?$filter=startswith(Title,'Payroll') and WorkTypeKey eq '2Wj3ZqNzWtnQ'</td></tr><tr><td>WorkTypeKey</td><td>/v3/WorkTemplates?$filter=WorkTypeKey eq '2Wj3ZqNzWtnQ'</td><td>/v3/WorkTemplates?$filter=startswith(WorkTypeKey,'2W')</td></tr><tr><td>HasScheduledClientTaskGroups</td><td>/v3/WorkTemplates?$filter=HasScheduledClientTaskGroups eq false</td><td>N/A</td></tr><tr><td>DraftHasChanges</td><td>/v3/WorkTemplates?$filter=DraftHasChanges eq false</td><td>N/A</td></tr><tr><td>PublishedDate</td><td>/v3/WorkTemplates?$filter=PublishedDate eq 2021-12-17T01:02:25Z</td><td>N/A</td></tr><tr><td>NumberOfWorkItemsCreated</td><td>/v3/WorkTemplates?$filter=NumberOfWorkItemsCreated eq 24</td><td>N/A</td></tr><tr><td>DateLastWorkItemCreated</td><td>/v3/WorkTemplates?$filter=PublishedDate eq 2022-01-09T01:02:25Z</td><td>N/A</td></tr><tr><td>DateModified</td><td>/v3/WorkTemplates?$filter=PublishedDate eq 2022-01-09T01:02:25Z</td><td>N/A</td></tr></tbody></table>\n",
        "operationId": "getAllWorkTemplates",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkTemplates"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Property": {
                    "$ref": "#/components/examples/Unsupported_Property_Filter"
                  },
                  "Unsupported Orderby Property": {
                    "$ref": "#/components/examples/Orderby_Unsupported_Property"
                  },
                  "$top limit exceeded": {
                    "$ref": "#/components/examples/WorkTemplates_Limit_Exceeded_Top"
                  },
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/WorkTemplates/{WorkTemplatekey}": {
      "get": {
        "tags": ["Work Templates"],
        "summary": "Gets a Work Template using WorkTemplatekey",
        "parameters": [
          {
            "required": true,
            "in": "path",
            "name": "WorkTemplatekey",
            "schema": {
              "type": "string"
            },
            "example": "4ckcnqp5rQYW",
            "description": "The Karbon-generated Work Template key"
          }
        ],
        "description": "Use the `GET` method on this endpoint to receive the details of a Work Template specified using the WorkTemplatekey.\n",
        "operationId": "getWorkTemplateByID",
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "@odata.context": {
                          "type": "string",
                          "description": "The information about Karbon controllers generating this response.",
                          "example": "https://api.karbonhq.com/v3/$metadata#WorkTemplates/$entity"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/GetSingleWorkTemplate"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Unsupported Option": {
                    "$ref": "#/components/examples/Unsupported_option"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceNotFound"
                },
                "examples": {
                  "Unauthorized Access": {
                    "$ref": "#/components/examples/UnauthorizedAccess"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Key Not Found": {
                    "$ref": "#/components/examples/WorkTemplate_Key_Not_Found_404"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate Limit Exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorMessage"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessages"
                },
                "examples": {
                  "Undefined Error": {
                    "$ref": "#/components/examples/elongated_5001"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "externalDocs": {
    "description": "Karbon Developers - API release notes",
    "url": "https://developers.karbonhq.com/release-notes/"
  },
  "components": {
    "parameters": {
      "SkipRecords": {
        "in": "query",
        "name": "$skip",
        "schema": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "example": 50,
        "description": "Skip the first n items"
      },
      "SkipRecordsUnbounded": {
        "in": "query",
        "name": "$skip",
        "schema": {
          "type": "integer",
          "minimum": 0
        },
        "example": 1000,
        "description": "Skip the first n items. There is no upper limit on this value."
      },
      "TopRecords": {
        "in": "query",
        "name": "$top",
        "schema": {
          "type": "integer",
          "minimum": 0
        },
        "example": 10,
        "description": "Limit the number of items returned"
      },
      "TopRecordsLimitedTo1000": {
        "in": "query",
        "name": "$top",
        "schema": {
          "type": "integer",
          "minimum": 0,
          "maximum": 1000
        },
        "example": 1000,
        "description": "Limit the number of items returned. Maximum value is 1000."
      },
      "InvoiceExpandParams": {
        "in": "query",
        "name": "$expand",
        "examples": {
          "paymentsOnly": {
            "value": "Payments",
            "summary": "Include the payments made on an invoice"
          },
          "lineItemsAndData": {
            "value": "LineItems,Data",
            "summary": "Include the line items and invoice data"
          },
          "limteItemsAndPayments": {
            "value": "LineItems,Payments",
            "summary": "Include the line items and payments made on an invoice"
          }
        },
        "schema": {
          "type": "string",
          "enum": [
            "LineItems",
            "Payments",
            "Data",
            "LineItems,Data",
            "LineItems,Payments",
            "LineItems,Payments,Data",
            "Payments,Data"
          ]
        },
        "description": "Include additional invoice properties, such as lineitems, payments or invoice data"
      },
      "IntegrationTaskKey": {
        "in": "path",
        "name": "IntegrationTaskKey",
        "schema": {
          "type": "string"
        },
        "required": true,
        "example": "zmMgWgPRqCy",
        "description": "The unique key for a specific integration task"
      },
      "IntegrationTaskListFilter": {
        "in": "query",
        "name": "$filter",
        "schema": {
          "type": "string"
        },
        "examples": {
          "filterByCreatedAt": {
            "value": "CreatedAt ge 2025-05-30T00:00:00Z",
            "summary": "Return Integration tasks with a CreatedAt timestamp of 2025-05-30 00:00:00 UTC or more recent"
          },
          "filterByTaskDefinitionKey": {
            "value": "TaskDefinitionKey eq 'b50e1712-2603-4707-b0d9-915050711267'",
            "summary": "Return Integration that use a specific Task Definition"
          },
          "filterByWorkItemKey": {
            "value": "WorkItemKey eq '3lHtWNMVcTVQ'",
            "summary": "Return Integration tasks that relate to a specific Work Item"
          },
          "filterByWorkItemClientKey": {
            "value": "WorkIteClientKey eq '4f4gnvcDT2yQ'",
            "summary": "Return Integration tasks that relate to a specific client"
          }
        },
        "description": "The a filter applied to the list of integration tasks before they are returned"
      },
      "IntegrationTaskListOrderBy": {
        "in": "query",
        "name": "$orderby",
        "schema": {
          "type": "string"
        },
        "examples": {
          "orderByCreatedAtDesc": {
            "value": "CreatedAt desc",
            "summary": "Order results by CreatedAt timestamp, newest to oldest (default)"
          },
          "orderByCreatedAtAsc": {
            "value": "CreatedAt",
            "summary": "Order results by CreatedAt timestamp, oldest to newest"
          }
        },
        "description": "Order responses by invoice date"
      },
      "WebhookRequestHeader": {
        "in": "header",
        "name": "Signature",
        "schema": {
          "type": "string"
        },
        "examples": {
          "WebhookPayloadSignature": {
            "value": "Signed webhook payload",
            "summary": "8c42dd0e4779a2e8a56d3b8ef962238ca26f95ddc2d9abb0e76f04991a3442f3"
          }
        },
        "description": "The HMAC signature generated when a webhook subscription payload includes the SigningKey property"
      }
    },
    "schemas": {
      "BillingBaseInvoice": {
        "description": "A Karbon invoice",
        "type": "object",
        "required": [
          "InvoiceKey",
          "InvoiceNumber",
          "TotalAmountDue",
          "InvoiceTotal",
          "InvoiceSubTotal",
          "InvoiceTaxTotal",
          "InvoiceDate",
          "PaymentDueDate",
          "UpdatedAt",
          "CurrencyCode",
          "InvoiceStatus"
        ],
        "properties": {
          "InvoiceKey": {
            "type": "string",
            "description": "The unique key assigned to an invoice by Karbon",
            "example": "rE3qYC48lv"
          },
          "InvoiceNumber": {
            "type": "string",
            "description": "The invoice number of the invoice",
            "example": "KIN-1001"
          },
          "TotalAmountDue": {
            "type": "number",
            "description": "Remaining amount due on the invoice, including taxes minus any payments",
            "example": 22.34
          },
          "InvoiceTotal": {
            "type": "number",
            "description": "Invoice total, including taxes",
            "example": 24
          },
          "InvoiceSubTotal": {
            "type": "number",
            "description": "The sum of the line items of the invoice, excluding taxes",
            "example": 22
          },
          "InvoiceTaxTotal": {
            "type": "number",
            "description": "Total of the taxes on the invoice",
            "example": 2
          },
          "InvoiceDate": {
            "type": "string",
            "description": "The date the invoice was issued as an ISO 8601 timestamp",
            "example": "2023-08-11T00:00:00Z"
          },
          "PaymentDueDate": {
            "type": "string",
            "description": "The date the invoice is due as an ISO 8601 timestamp",
            "example": "2023-08-18T00:00:00Z"
          },
          "UpdatedAt": {
            "type": "string",
            "description": "A timestamp showing when the invoice was last updated as an ISO 8601 timestamp",
            "example": "2023-08-12T03:24:11Z"
          },
          "CurrencyCode": {
            "type": "string",
            "description": "A three letter ISO 4217 currency code denoting the currency used in the invoice, e.g. AUD, USD, CAD, NZD, EUR, GBP",
            "example": "CAD"
          },
          "PaymentInstructions": {
            "type": ["string", "null"],
            "description": "Payment instructions added to the invoice",
            "example": "Payment due 7 days from invoice date"
          },
          "InvoiceStatus": {
            "type": "string",
            "enum": ["Approved", "AwaitingPayment", "Paid", "Exported", "Voided"],
            "description": "Current status of the invoice",
            "example": "AwaitingPayment"
          }
        }
      },
      "BillingInvoice": {
        "type": "object",
        "description": "A Karbon Invoice record",
        "allOf": [
          {
            "$ref": "#/components/schemas/BillingBaseInvoice"
          },
          {
            "$ref": "#/components/schemas/BillingClient"
          },
          {
            "$ref": "#/components/schemas/BillingTaxLineItems"
          }
        ]
      },
      "BillingInvoiceWithPayment": {
        "type": "object",
        "description": "A Karbon invoice with associated payment records",
        "allOf": [
          {
            "$ref": "#/components/schemas/BillingInvoice"
          },
          {
            "$ref": "#/components/schemas/BillingInvoiceLineItems"
          },
          {
            "$ref": "#/components/schemas/BillingInvoicePayments"
          },
          {
            "$ref": "#/components/schemas/BillingInvoiceData"
          }
        ]
      },
      "BillingInvoiceData": {
        "type": "object",
        "description": "A collection of the data associated with an invoice",
        "properties": {
          "Data": {
            "type": "array",
            "description": "The collection of data that is used to create the rendered (HTML/PDF) invoice sent to the billing contact",
            "items": {
              "$ref": "#/components/schemas/BillingInvoiceDataItem"
            }
          }
        }
      },
      "BillingInvoiceDataItem": {
        "type": "object",
        "description": "A single component of the data used to create the rendered (HTML/PDF) invoice",
        "properties": {
          "EntityKey": {
            "type": "string",
            "description": "The unique key of the source of the billing",
            "example": "34jgMyYBTt4"
          },
          "EntityType": {
            "type": "string",
            "description": "The type of the source of the billing",
            "example": "Work Item"
          },
          "Billed": {
            "type": "number",
            "format": "double",
            "description": "The value of the billed amount",
            "example": 440.5
          },
          "Expenses": {
            "$ref": "#/components/schemas/BillingInvoiceDataExpense"
          },
          "Service": {
            "$ref": "#/components/schemas/BillingInvoiceDataService"
          },
          "Work": {
            "$ref": "#/components/schemas/BillingInvoiceDataWork"
          }
        }
      },
      "BillingInvoiceDataTax": {
        "description": "A breakdown of tax related to invoice, lineitems and data",
        "type": "object",
        "properties": {
          "TaxRate": {
            "type": ["number", "null"],
            "format": "double",
            "description": "The tax rated applied to the billed amount",
            "example": 15
          },
          "TaxRateName": {
            "type": ["string", "null"],
            "description": "The name of the tax rate applied to the billed amount",
            "example": "GST"
          },
          "TaxAmount": {
            "type": ["number", "null"],
            "format": "double",
            "description": "The value of tax component in the billed amount",
            "example": 44.55
          }
        }
      },
      "BillingInvoiceDataExpense": {
        "description": "A line item on a Karbon invoice",
        "type": "object",
        "properties": {
          "Billed": {
            "type": "number",
            "description": "The total billed value of expenses",
            "example": 200
          },
          "Expenses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingInvoiceDataExpenseItem"
            }
          }
        }
      },
      "BillingInvoiceDataExpenseItem": {
        "description": "An expense line item on a Karbon invoice",
        "type": "object",
        "allOf": [
          {
            "properties": {
              "ExpenseKey": {
                "type": "string",
                "example": "26cd6f1b81d14be59f1e578c5fe160b5"
              },
              "Description": {
                "type": "string",
                "description": "The description of the expense",
                "example": "Expense 1"
              },
              "Billed": {
                "type": "number",
                "description": "An the billed value of a specific expense",
                "example": 100
              }
            }
          },
          {
            "$ref": "#/components/schemas/BillingInvoiceDataTax"
          }
        ]
      },
      "BillingInvoiceDataService": {
        "description": "A service line item on a Karbon invoice",
        "type": ["object", "null"],
        "allOf": [
          {
            "properties": {
              "WorkType": {
                "type": "string",
                "description": "The work type associated with the service",
                "example": "Accounting"
              },
              "Billed": {
                "type": "number",
                "description": "The billed value of the service",
                "example": 150
              }
            }
          },
          {
            "$ref": "#/components/schemas/BillingInvoiceDataTax"
          }
        ]
      },
      "BillingInvoiceDataWork": {
        "type": ["object", "null"],
        "description": "The breakdown of the billing that stems from work",
        "allOf": [
          {
            "properties": {
              "FeeType": {
                "type": "string",
                "description": "The fee type of the billed amount",
                "example": "Fixed Fee"
              },
              "WorkType": {
                "type": "string",
                "description": "The tax rated applied to the billed amount",
                "example": "Accounting"
              },
              "InvoiceType": {
                "type": "string",
                "description": "Denotes whether the invoice is final or not",
                "example": "Final"
              },
              "Billed": {
                "type": "number",
                "format": "double",
                "description": "The value of the billed amount",
                "example": 440.5
              },
              "TimeEntries": {
                "oneOf": [
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/BillingInvoiceDataWorkTimeEntry"
                    }
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            }
          },
          {
            "$ref": "#/components/schemas/BillingInvoiceDataTax"
          }
        ]
      },
      "BillingInvoiceDataWorkTimeEntry": {
        "description": "The details of an invoiced time entry",
        "properties": {
          "TimeEntryKey": {
            "type": "string",
            "description": "The unique identifier of the time entry",
            "example": "c05db7badcc844b9a6c0d23c40928a87"
          },
          "ColleagueKey": {
            "type": "string",
            "description": "The unique ID of the user that logged the time",
            "example": "YzTNXkxxq2W"
          },
          "RoleName": {
            "type": "string",
            "description": "The role on the time entry",
            "example": "Bookkeeper"
          },
          "TaskTypeName": {
            "type": "string",
            "description": "The task ype on the time entry",
            "example": "Bookkeeping"
          },
          "Billed": {
            "type": "number",
            "description": "The billed value of the time entry",
            "example": 300
          }
        }
      },
      "BillingPayment": {
        "type": "object",
        "description": "A Karbon Payment record",
        "allOf": [
          {
            "type": "object",
            "description": "A Karbon payment",
            "required": [
              "PaymentKey",
              "PaymentReference",
              "PaymentType",
              "PaymentDate",
              "GrossAmount",
              "PaymentMethod"
            ],
            "properties": {
              "PaymentKey": {
                "type": "string",
                "description": "The unique key assigned to an payment by Karbon",
                "example": "rE3qYC48lv"
              },
              "PaymentReference": {
                "type": "string",
                "description": "The Karbon reference number of the payment",
                "example": "KPY-1001"
              },
              "PaymentType": {
                "type": "string",
                "description": "The type of payment",
                "enum": ["ManualPayment", "ManualPaymentReversed", "Payment"],
                "example": "ManualPayment"
              },
              "PaymentDate": {
                "type": "string",
                "format": "date",
                "description": "The datestamp the payment was made, for Manual Payments this will be a datestamp",
                "example": "2024-12-21"
              },
              "GrossAmount": {
                "type": "number",
                "format": "double",
                "description": "The valeu of the payment, excluding fees and taxes",
                "example": 2200
              },
              "PaymentMethod": {
                "type": "string",
                "description": "The method by which the payment was made",
                "example": "Check"
              },
              "ClientKey": {
                "type": "string",
                "description": "The unique key of the client that payment was by - could be a Person or Organization",
                "example": "vTx6YRgMk4"
              }
            }
          },
          {
            "$ref": "#/components/schemas/BillingKarbonPayment"
          },
          {
            "$ref": "#/components/schemas/BillingClient"
          }
        ]
      },
      "BillingInvoiceLineItems": {
        "type": "object",
        "required": ["LineItems"],
        "description": "A breakdown of line items from the invoice",
        "properties": {
          "LineItems": {
            "description": "An array of invoice line items",
            "type": "array",
            "items": {
              "description": "A line item on a Karbon invoice",
              "type": "object",
              "properties": {
                "LineItemKey": {
                  "type": "string",
                  "description": "A unique GUID for the line item"
                },
                "BillableItemEntityKey": {
                  "type": "string",
                  "description": "The unique key of the related entity the line item was created from, could be a Contact, WorkItem or TimeEntry"
                },
                "BillableItemType": {
                  "type": "string",
                  "enum": ["TimeEntry", "Expense", "Entity"],
                  "description": "The source type of the line item"
                },
                "Description": {
                  "type": "string",
                  "description": "The description of charge the line item covers"
                },
                "Quantity": {
                  "type": "number",
                  "description": "The quantity of units for a line item"
                },
                "UnitPrice": {
                  "type": "string",
                  "description": "The per unit price of the line item"
                },
                "Amount": {
                  "type": "number",
                  "description": "The amount of the line item calculated as UnitPrice * Quantity, excluding taxes"
                },
                "TaxRate": {
                  "type": ["number", "null"],
                  "description": "The percentage tax rate, expressed as an integer - e.g. 15% is rendered as 15.0000"
                },
                "TaxRateName": {
                  "type": ["string", "null"],
                  "description": "The user specified name of tax rate, e.g. GST, VAT, PST"
                }
              }
            }
          }
        }
      },
      "BillingInvoicePayments": {
        "type": "object",
        "required": ["Payments"],
        "description": "Details of the payments related to the invoice",
        "properties": {
          "Payments": {
            "description": "An array of invoice payments",
            "type": "array",
            "items": {
              "description": "A payment on a Karbon invoice",
              "type": "object",
              "properties": {
                "PaymentKey": {
                  "type": "string",
                  "description": "A unique ID for the payment",
                  "example": "4n3mrlQPycxn"
                },
                "PaymentReference": {
                  "type": "string",
                  "description": "The Karbon reference number for the payment",
                  "example": "KPY-001"
                },
                "PaymentType": {
                  "type": "string",
                  "enum": ["ManualPayment", "ManualPaymentReversed", "Payment"],
                  "description": "The type of payment"
                },
                "PaymentDate": {
                  "type": "string",
                  "format": "date",
                  "description": "The datestamp the payment was made, for manual payments this is the date only",
                  "example": "2025-01-07"
                },
                "Amount": {
                  "type": "number",
                  "description": "The value of the payment",
                  "example": 1100.5
                }
              }
            }
          }
        }
      },
      "BillingClient": {
        "required": ["Client"],
        "description": "The details of the invoice recipient at the point in time the invoice was drafted or payment creator at the point the payment was received",
        "properties": {
          "Client": {
            "type": ["object", "null"],
            "example": null,
            "description": "The Karbon Client Billing Contact",
            "properties": {
              "ClientKey": {
                "type": "string",
                "description": "The unique key of the billed Client",
                "example": "R2oFn56pC"
              },
              "ClientType": {
                "type": "string",
                "description": "The client type, e.g. Contact or Organization",
                "example": "Contact"
              },
              "Name": {
                "type": "string",
                "description": "The name of the client at the point the invoice was drafted",
                "example": "Georgia Davies"
              },
              "AddressLine": {
                "type": "string",
                "description": "The billing address of the cient at the point the invoice was drafted",
                "example": "11 Example Blvd"
              },
              "City": {
                "type": "string",
                "description": "The billing address city of the cient at the point the invoice was drafted",
                "example": "Los Angeles"
              },
              "StateProvinceCounty": {
                "type": "string",
                "description": "The billing address state/province/country of the cient at the point the invoice was drafted",
                "example": "CA"
              },
              "ZipCode": {
                "type": "string",
                "description": "The billing address zip/postal code of the cient at the point the invoice was drafted",
                "example": "90210"
              },
              "Country": {
                "type": "string",
                "description": "The billing address country of the cient at the point the invoice was drafted",
                "example": "USA"
              },
              "EmailAddress": {
                "type": "string",
                "description": "The billing email address of the cient at the point the invoice was drafted",
                "example": "recipient@example.com"
              }
            }
          }
        }
      },
      "BillingTaxLineItems": {
        "type": "object",
        "description": "Details of the tax components of the invoice",
        "properties": {
          "TaxLineItems": {
            "description": "An array of tax types and values from invoice line items",
            "type": "array",
            "items": {
              "description": "A tax line item detailing the tax code and amount on Karbon invoice",
              "properties": {
                "TaxName": {
                  "type": "string",
                  "description": "The name of the tax",
                  "example": "GST"
                },
                "TaxValue": {
                  "type": "number",
                  "description": "The value of the tax in the invoice currency",
                  "example": 209.63
                }
              }
            }
          }
        }
      },
      "BusinessCardRequest": {
        "description": "A business card associated with a contact or organization",
        "type": "object",
        "properties": {
          "BusinessCardKey": {
            "type": "string",
            "description": "A Karbon-generated unique identifier for the Business Card",
            "example": "",
            "required": true
          },
          "EntityType": {
            "type": "string",
            "description": "The type of entity this Business Card belongs to.",
            "example": "Contact",
            "enum": ["Contact", "Organization", "ClientGroup"]
          },
          "EntityKey": {
            "type": "string",
            "description": "A Karbon-generated key to indicate the entity (Contact, Organization, or ClientGroup) this Business Card belongs to.",
            "example": "67zlxNyJSr8e"
          },
          "IsPrimaryCard": {
            "type": "boolean",
            "description": "Set to true, if this business card is also the primary business card for this entity.",
            "example": true
          },
          "OrganizationKey": {
            "type": ["string", "null"],
            "description": "Used on the Business Card for a Contact to specify the Organization that the Contact is related to. Will always be null for an Organization business card.",
            "example": "7NN1ySxv89B"
          },
          "WebSites": {
            "description": "The websites associated with this Business card.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": ["www.website.one", "www.website.two"]
          },
          "EmailAddresses": {
            "description": "The email addresses associated with this Business card.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": ["sample@example.com", "sample.two@example.com"]
          },
          "RoleOrTitle": {
            "type": ["string", "null"],
            "description": "The business role or title of the contact this Business Cards belongs to",
            "example": "COO"
          },
          "FacebookLink": {
            "type": "string",
            "description": "The URL to the entity's Facebook profile",
            "example": "facebook.com/sampleName"
          },
          "LinkedInLink": {
            "type": "string",
            "description": "The URL to the entity's LinkedIn profile",
            "example": "linkedin.com/sampleName"
          },
          "TwitterLink": {
            "type": "string",
            "description": "The URL to the entity's Twitter profile",
            "example": "twitter.com/sampleName"
          },
          "SkypeLink": {
            "type": "string",
            "description": "The URL to the entity's Skype profile",
            "example": "skype.com/sampleName"
          },
          "Addresses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "AddressLines": {
                  "type": "string",
                  "description": "Street Address",
                  "example": "45 Sample Street",
                  "maxLength": 200
                },
                "City": {
                  "type": "string",
                  "description": "City",
                  "example": "Alexandria",
                  "maxLength": 100
                },
                "StateProvinceCounty": {
                  "type": "string",
                  "description": "State / Province / County",
                  "example": "NSW",
                  "maxLength": 100
                },
                "ZipCode": {
                  "type": "string",
                  "description": "ZipCode / PostCode",
                  "example": "2015",
                  "maxLength": 20
                },
                "CountryCode": {
                  "type": "string",
                  "format": "ISO 3166-1 alpha-2",
                  "description": "Two letter Country Code",
                  "example": "AU"
                },
                "Label": {
                  "type": "string",
                  "description": "The tag to indicate the type of Address",
                  "example": "Physical",
                  "enum": ["Physical", "Mailing", "Legal", "Home"]
                }
              }
            }
          },
          "PhoneNumbers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Number": {
                  "type": "string",
                  "description": "The phone number of the entity",
                  "example": "1234567890",
                  "maxLength": 20
                },
                "CountryCode": {
                  "type": "string",
                  "description": "The phone number country code",
                  "example": "AU"
                },
                "Label": {
                  "type": "string",
                  "description": "The tag to indicate the type of phone number",
                  "example": "Work",
                  "enum": ["Work", "Mobile", "Office", "Fax", "Home", "Other"]
                }
              }
            }
          }
        }
      },
      "BusinessCard": {
        "description": "A business card associated with a contact or organization",
        "type": "object",
        "properties": {
          "BusinessCardKey": {
            "type": "string",
            "description": "A Karbon-generated unique identifier for the Business Card",
            "example": "2tBHyXtJBxBy"
          },
          "EntityType": {
            "type": "string",
            "description": "The type of entity this Business Card belongs to.",
            "example": "Contact",
            "enum": ["Contact", "Organization", "ClientGroup"]
          },
          "EntityKey": {
            "type": "string",
            "description": "A Karbon-generated key to indicate the entity (Contact, Organization, or ClientGroup) this Business Card belongs to.",
            "example": "67zlxNyJSr8e"
          },
          "IsPrimaryCard": {
            "type": "boolean",
            "description": "Set to true, if this business card is also the primary business card for this entity.",
            "example": true
          },
          "WebSites": {
            "description": "The websites associated with this Business card.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": ["www.website.one", "www.website.two"]
          },
          "EmailAddresses": {
            "description": "The email addresses associated with this Business card.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": ["sample@example.com", "sample.two@example.com"]
          },
          "OrganizationKey": {
            "type": "string",
            "description": "A Karbon-generated key to indicate the organization this Business Card belongs to",
            "example": "ZGNmtYyLm4z"
          },
          "RoleOrTitle": {
            "type": "string",
            "description": "The business role or title of the contact this Business Cards belongs to",
            "example": "COO"
          },
          "FacebookLink": {
            "type": "string",
            "description": "The URL to the entity's Facebook profile",
            "example": "facebook.com/sampleName"
          },
          "LinkedInLink": {
            "type": "string",
            "description": "The URL to the entity's LinkedIn profile",
            "example": "linkedin.com/sampleName"
          },
          "TwitterLink": {
            "type": "string",
            "description": "The URL to the entity's Twitter profile",
            "example": "twitter.com/sampleName"
          },
          "SkypeLink": {
            "type": "string",
            "description": "The URL to the entity's Skype profile",
            "example": "skype.com/sampleName"
          },
          "Addresses": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "AddressKey": {
                  "type": "string",
                  "description": "A randomly generated GUID to indicate the address details",
                  "example": "e150a05a-2dea-4292-8bc8-03398c9384e4"
                },
                "AddressLines": {
                  "type": "string",
                  "description": "Street Address",
                  "example": "45 Sample Street",
                  "maxLength": 200
                },
                "City": {
                  "type": "string",
                  "description": "City",
                  "example": "Alexandria",
                  "maxLength": 100
                },
                "StateProvinceCounty": {
                  "type": "string",
                  "description": "State / Province / County",
                  "example": "NSW",
                  "maxLength": 100
                },
                "ZipCode": {
                  "type": "string",
                  "description": "ZipCode / PostCode",
                  "example": "2015",
                  "maxLength": 20
                },
                "CountryCode": {
                  "type": "string",
                  "format": "ISO 3166-1 alpha-2",
                  "description": "Two letter Country Code",
                  "example": "AU"
                },
                "Label": {
                  "type": "string",
                  "description": "The tag to indicate the type of Address",
                  "example": "Physical",
                  "enum": ["Physical", "Mailing", "Legal", "Home"]
                }
              }
            }
          },
          "PhoneNumbers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "PhoneNumberKey": {
                  "type": "string",
                  "description": "A randomly generated GUID to indicate the phone details",
                  "example": "6e0b9ace-24b1-4328-a922-3b8be5ef5052"
                },
                "Number": {
                  "type": "string",
                  "description": "The phone number of the entity",
                  "example": "1234567890",
                  "maxLength": 20
                },
                "CountryCode": {
                  "type": "string",
                  "description": "The phone number country code",
                  "example": "AU"
                },
                "Label": {
                  "type": "string",
                  "description": "The tag to indicate the type of phone number",
                  "example": "Work",
                  "enum": ["Work", "Mobile", "Office", "Fax", "Home", "Other"]
                }
              }
            }
          }
        }
      },
      "BusinessCardsRequestAsArray": {
        "description": "A collection of business cards",
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/BusinessCardRequest"
        }
      },
      "ClientTeam": {
        "description": "The Client Team associated with a contact or organization",
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "MemberKey": {
              "type": "string",
              "example": "JTphCpQqQYg",
              "description": "The unique key of the user or team assigned to the client team role"
            },
            "MemberType": {
              "type": "string",
              "example": "User",
              "description": "The type of member assigned to the client team, can be either User or Team",
              "enum": ["User", "Team"]
            },
            "RoleType": {
              "type": ["string", "null"],
              "example": "ClientOwner",
              "description": "The specific role the user or team is assigned to, can be null if a member of the client team without a specific role",
              "enum": ["ClientOwner", "ClientManager", "UserDefinedRole1", "UserDefinedRole2", null]
            }
          }
        }
      },
      "ClientAccess": {
        "description": "A list of Organizations and People that the contact has been granted access to view in Karbon for Clients",
        "readOnly": true,
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "ClientKey": {
              "type": "string",
              "example": "JTphCpQqQYg",
              "description": "The unique key of the Client"
            },
            "ClientType": {
              "type": "string",
              "example": "Contact",
              "description": "Whether the Client is an Organization or a Person",
              "enum": ["Contact", "Organization"]
            },
            "AccessLevel": {
              "type": ["string", "null"],
              "example": "Limited",
              "description": "The level of access this contact has when viewing the specified client in Karbon for Clients",
              "enum": ["Limited", "FullAccess", null]
            }
          }
        }
      },
      "CustomFieldDefinitions": {
        "type": "object",
        "description": "A list of the available custom fields in Karbon",
        "properties": {
          "@odata.context": {
            "type": "string",
            "example": "https://api.karbonhq.com/v3/$metadata#CustomFields"
          },
          "@odata.count": {
            "type": "number",
            "format": "int32",
            "example": 3
          },
          "value": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "type": "object",
                  "properties": {
                    "Key": {
                      "type": "string",
                      "example": "ZGNmtYyLm4z",
                      "required": true
                    }
                  }
                },
                {
                  "$ref": "#/components/schemas/CustomFieldDefinition"
                }
              ]
            }
          }
        }
      },
      "CustomFieldDefinition": {
        "type": "object",
        "description": "The structure that defines a Custom Field in Karbon",
        "properties": {
          "Name": {
            "type": "string",
            "example": "Industry Type",
            "maxLength": 100
          },
          "Type": {
            "type": "string",
            "example": "ListSingleSelect",
            "enum": ["Text", "Number", "Date", "Boolean", "Colleague", "ListSingleSelect", "ListMultipleSelect"]
          },
          "IsVisibleToContacts": {
            "type": "boolean",
            "example": true
          },
          "IsVisibleToOrganizations": {
            "type": "boolean",
            "example": false
          },
          "ListOptions": {
            "descriptions": "A value or values assigned to the Custom Field, note that all values for all types are strings - this includes `number` and `boolean` types",
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 256,
              "examples": ["Agriculture", "Manufacturing", "Professional, Scientific and Technical Services"]
            }
          }
        }
      },
      "CustomFieldValue": {
        "type": "object",
        "description": "A collection of Custom Fields",
        "properties": {
          "Key": {
            "type": "string",
            "example": "ZGNGtYyLm4z"
          },
          "Name": {
            "type": "string",
            "example": "Industry Type",
            "maxLength": 100
          },
          "Type": {
            "type": "string",
            "example": "ListSingleSelect",
            "enum": ["Text", "Number", "Date", "Boolean", "Colleague", "ListSingleSelect", "ListMultipleSelect"]
          },
          "Value": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 256,
              "example": "Professional Services"
            }
          }
        }
      },
      "CustomFieldValues": {
        "type": "object",
        "description": "The set custom fields for a contact or organization and the associated values and options",
        "properties": {
          "EntityKey": {
            "type": "string",
            "example": "Lm4zGNmtYyZ"
          },
          "CustomFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldValue"
            }
          }
        }
      },
      "DetailsOfAccounting": {
        "type": "object",
        "description": "The details specific to the Accounting firm related to this entity",
        "properties": {
          "ContactPermaKey": {
            "type": ["string", "null"],
            "description": "A Karbon-generated key that is used to identify the Contact (if a person)."
          },
          "OrganizationPermaKey": {
            "type": ["string", "null"],
            "description": "A Karbon-generated key that is used to identify the Contact (if a business or an organization)."
          },
          "BirthDate": {
            "type": ["string", "null"],
            "format": "date-time",
            "description": "The day at which the contact (if a person) was born."
          },
          "DeathDate": {
            "type": ["string", "null"],
            "format": "date-time",
            "description": "The day at which the contact (if a person) died."
          },
          "Salutation": {
            "type": ["string", "null"],
            "description": "The title of the contact (if a person)",
            "enum": ["Mr", "Mrs", "Ms", "Miss", "Dr", "Prof", "Rev", null]
          },
          "Sex": {
            "type": ["string", "null"],
            "description": "The gender of the contact (if a person)",
            "enum": ["M", "F", null]
          },
          "FinancialYearEndDay": {
            "type": ["integer", "null"],
            "format": "int32",
            "description": "The day of month in which the fiscal year ends for the contact"
          },
          "FinancialYearEndMonth": {
            "type": ["integer", "null"],
            "format": "int32",
            "description": "The month in which the fiscal year ends for the contact. Note that this is a 0 index value, so January is 0 and December is 11"
          },
          "IncorporationDate": {
            "type": ["string", "null"],
            "format": "date-time",
            "description": "The date at which the contact (if a business or an organization) was incorporated."
          },
          "IncorporationState": {
            "type": ["string", "null"],
            "description": "The state in which the contact (if a business or an organization) was incorporated."
          },
          "LegalName": {
            "type": ["string", "null"],
            "description": "The legal name of the contact"
          },
          "LineOfBusiness": {
            "type": ["string", "null"],
            "description": "The industry this contact is associated with."
          },
          "EntityType": {
            "type": ["string", "null"],
            "description": "The entity type of the contact (if a business or an organization)",
            "enum": [
              "Corporation",
              "Club or Society",
              "Estate or Trust",
              "Exempt Organization",
              "Partnership",
              "Private Foundation",
              "S Corporation",
              "Person",
              "Sole Proprietor",
              "Limited Liability",
              "Charitable Incorporated Organisation",
              "Company Limited by Guarantee",
              "Community Interest Company",
              "Limited Liability Partnership",
              "Local Authority",
              "Non Departmental Public Body",
              "Pension Scheme",
              "Royal Charter",
              "Unincorporated Association",
              "Other/None",
              null
            ]
          },
          "TaxCountryCode": {
            "type": ["string", "null"],
            "description": "The code of the country where the contact pays their tax.",
            "enum": [
              "US",
              "AU",
              "UK",
              "NZ",
              "CA",
              "ZA",
              "HK",
              "FR",
              "SG",
              "IE",
              "SE",
              "FI",
              "DK",
              "NO",
              "IN",
              "CH",
              null
            ]
          },
          "TradingName": {
            "type": ["string", "null"],
            "description": "The trading name of the contact (if a business or an organization)"
          },
          "AnnualRevenue": {
            "type": ["number", "null"],
            "format": "decimal",
            "description": "The total annual revenue generated by the contact"
          },
          "BaseCurrency": {
            "type": ["string", "null"],
            "description": "The 3-letter code, denoting the currency of annual revenue"
          },
          "GstBasis": {
            "type": ["string", "null"],
            "description": "The method of accounting for GST/BAS",
            "enum": ["Cash", "Accruals", "None", "Close", null]
          },
          "GstPeriod": {
            "type": ["string", "null"],
            "description": "The GST period"
          },
          "IncomeTaxInstallmentPeriod": {
            "type": ["string", "null"],
            "description": "The income tax installment period",
            "enum": ["Monthly", "Quarterly", "Yearly", null]
          },
          "IsVATRegistered": {
            "type": ["boolean", "null"],
            "description": "Set to true if the business or organization is registered for VAT"
          },
          "OrganizationValuation": {
            "type": ["number", "null"],
            "format": "decimal",
            "description": "The present value of the company"
          },
          "PaysTax": {
            "type": ["boolean", "null"],
            "description": "Set to true, if the contact has to pay tax"
          },
          "PrepareGST": {
            "type": ["boolean", "null"],
            "description": "<>"
          },
          "ProvisionalTaxBasic": {
            "type": ["string", "null"],
            "description": "<>"
          },
          "ProvisionalTaxRatio": {
            "type": ["string", "null"],
            "description": "<>"
          },
          "RevenueModel": {
            "type": ["string", "null"],
            "description": "The revenue model of the business or organization",
            "enum": [
              "Advertising",
              "Commission",
              "E-Commerce",
              "Fee for Service",
              "Licensing",
              "Markup",
              "Production",
              "Subscription",
              null
            ]
          },
          "SalesTaxBasis": {
            "type": ["string", "null"],
            "description": "The tax method",
            "enum": ["Cash", "Accruals", "None", "Close", null]
          },
          "SalesTaxPeriod": {
            "type": ["string", "null"],
            "description": "The tax period"
          },
          "Sells": {
            "type": ["string", "null"],
            "description": "The item that is primarily supplied by the company",
            "enum": ["Services", "Products", "Products and Services", "Other", null]
          },
          "DateSignedEngagement": {
            "type": ["string", "null"],
            "format": "date-time",
            "description": ""
          },
          "Bank": {
            "type": "array",
            "description": "A user definable list of banks the client uses",
            "items": {
              "type": "string",
              "example": "Commonwealth Bank"
            }
          },
          "Payroll": {
            "type": "array",
            "description": "A user definable list of payroll services the client uses",
            "items": {
              "type": "string",
              "example": ""
            }
          },
          "BillPay": {
            "type": "array",
            "description": "A user definable list of bill payment services the client uses",
            "items": {
              "type": "string",
              "example": ""
            }
          },
          "Benefits": {
            "type": "array",
            "description": "A user definable list of benefits services the client uses",
            "items": {
              "type": "string",
              "example": ""
            }
          },
          "Revenue": {
            "type": "array",
            "description": "A user definable list of revenue management services the client uses",
            "items": {
              "type": "string",
              "example": ""
            }
          },
          "Expenses": {
            "type": "array",
            "description": "A user definable list of expense management services the client uses",
            "items": {
              "type": "string",
              "example": ""
            }
          },
          "FileManagement": {
            "type": "array",
            "description": "A user definable list of file management services the client uses",
            "items": {
              "type": "string",
              "example": "SharePoint"
            }
          },
          "Accounting": {
            "type": "array",
            "description": "A user definable list of accounting tools and services the client uses",
            "items": {
              "type": "string",
              "example": "QuickBooks Online"
            }
          },
          "RegistrationNumbers": {
            "type": "array",
            "description": "The registration numbers associated with the contact.",
            "items": {
              "required": ["RegistrationNumber", "Type"],
              "type": "object",
              "properties": {
                "RegistrationNumber": {
                  "type": "string",
                  "description": "The registration number",
                  "maxLength": 50
                },
                "Type": {
                  "type": "string",
                  "description": "The type of registration",
                  "enum": [
                    "Australian Business Number (ABN)",
                    "Australian Company Number (ACN)",
                    "Tax File Number (TFN)",
                    "Social Security Number (SSN)",
                    "Tax ID",
                    "VAT Number",
                    "Company Registration Number",
                    "PAYE Reference Number",
                    "PAYE Accounts Office Reference",
                    "CT Reference",
                    "Unique Taxpayer Reference (UTR)",
                    "NZ Business Number",
                    "GST Number",
                    "IRD Number",
                    "Business Number",
                    "Social Insurance Number (SIN)",
                    "Registration Number",
                    "Income Tax Number",
                    "PAYE Number",
                    "DOL UIF Number",
                    "SDL Number",
                    "DOL Workman Compensation",
                    "Company Number",
                    "Business Registration Number",
                    "Charity Number",
                    "MPF provider",
                    "RCS",
                    "SIRET",
                    "UEN",
                    "RCT Reference",
                    "Companies Office Number",
                    "KUND ID",
                    "Organisation Number",
                    "Finnish Business ID",
                    "CVR Number",
                    "GST Identification Number (GSTIN)",
                    "Permanent Account Number (PAN)"
                  ]
                }
              }
            }
          },
          "LegalFirm": {
            "description": "The legal firm(s) that represent the client, these can be strings or references to Karbon organizations",
            "type": ["object", "null"],
            "properties": {
              "Name": {
                "type": "string",
                "example": "Polygon Legal",
                "description": "The name of the legal firm that represents the client"
              },
              "OrganizationKey": {
                "type": ["string", "null"],
                "description": "The Organization key of the Karbon organization client record",
                "example": "4cYDk82rZDRn"
              }
            }
          },
          "TaxProvider": {
            "description": "The provider of tax services to the client, these can be strings or references to Karbon organizations",
            "type": ["object", "null"],
            "properties": {
              "Name": {
                "type": "string",
                "example": "Orbit Tax",
                "description": "The name of the tax provider"
              },
              "OrganizationKey": {
                "type": ["string", "null"],
                "description": "The optional Organization key of the Tax Provider client record in Karbon",
                "example": null
              }
            }
          },
          "Notes": {
            "type": "array",
            "items": {
              "required": ["Body", "Type"],
              "type": "object",
              "properties": {
                "Body": {
                  "type": "string",
                  "description": "The free-form text in the note"
                },
                "Type": {
                  "type": "string",
                  "description": "The section (within the accounting details) where the note resides",
                  "enum": ["Basic", "Tax", "System", "Owner", "Officer"]
                }
              }
            }
          }
        }
      },
      "GetComment": {
        "description": "A comment on a Work Item, Note or Contact",
        "required": ["CommentBody", "AuthorKey", "CreatedDate"],
        "properties": {
          "@odata.context": {
            "type": "string",
            "example": "https://api.karbonhq.com/v3/$metadata#Comments/$entity",
            "description": "The information about Karbon controllers generating this response."
          },
          "CommentKey": {
            "type": "string",
            "example": "Xn2r5u7xZe",
            "description": "A Karbon-generated unique identifier for the comment\n"
          },
          "CommentTypeKey": {
            "type": "string",
            "example": "wF8D81TVZPu",
            "description": "A Karbon-generated value that is used to identify the Karbon entity (e.g., Work Item, Notes, Contacts) associated with the comment.\n"
          },
          "CommentBody": {
            "type": "string",
            "example": "Looks good! Lets go ahead with this.",
            "description": "The comment left behind by a Karbon user.\n"
          },
          "CreatedDate": {
            "type": "string",
            "example": "2022-06-21T05:38:10.0608412+00:00",
            "description": "The date and time at which the comment was created in Karbon. This value is automatically generated by Karbon.\n\nThe datetime format is UTC.\n"
          },
          "AuthorKey": {
            "type": "string",
            "example": "OgCjeo4gwu",
            "description": "A random value that indicates the email address of the Karbon user who created the comment."
          }
        }
      },
      "GetClientGroup": {
        "description": "A list of Client Groups",
        "required": ["value", "@odata.context", "@odata.count"],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#ClientGroups/KarbonService.ClientGroupSummaryDTO"
          },
          "@odata.count": {
            "type": "integer",
            "format": "int64",
            "example": 323,
            "description": "The total number of Client Groups that satisfy the query criteria."
          },
          "value": {
            "type": "array",
            "items": {
              "required": ["FullName", "LastModifiedDateTime", "ClientGroupKey", "@odata.type"],
              "type": "object",
              "properties": {
                "@odata.type": {
                  "type": "string",
                  "example": "#KarbonService.ClientGroupSummaryDTO",
                  "description": "The information about Karbon Objects generating this response."
                },
                "FullName": {
                  "type": "string",
                  "example": "Sample Management Team",
                  "description": "The full name of the Client Group"
                },
                "PhoneNumber": {
                  "type": ["string", "null"],
                  "example": "0987888686",
                  "description": "The phone number associated with the Client Group"
                },
                "Website": {
                  "type": ["string", "null"],
                  "example": "www.samplemanagement.com",
                  "description": "The website associated with the Client Group"
                },
                "LastModifiedDateTime": {
                  "type": "string",
                  "format": "date-time",
                  "description": "The date and time at which the Client Group was most recently modified.",
                  "example": "2021-12-29T07:01:53Z"
                },
                "ClientGroupKey": {
                  "type": "string",
                  "description": "A Karbon-generated unique identifier for the Client Group",
                  "example": "4DHFn8T3J7N5"
                }
              }
            }
          },
          "@odata.nextLink": {
            "type": "string",
            "example": "https://api.karbonhq.com/v3/ClientGroups?$skip=100",
            "description": "The link to next set of Client Groups. @odata.nextLink field will only appear if you have more than 100 Client Groups."
          }
        }
      },
      "GetContacts": {
        "description": "A list of Contacts",
        "required": ["value", "@odata.context", "@odata.count"],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#Contacts/KarbonService.ContactSummaryDTO"
          },
          "@odata.count": {
            "type": "integer",
            "format": "int64",
            "example": 323,
            "description": "The total number of Contacts that satisfy the query criteria."
          },
          "value": {
            "type": "array",
            "items": {
              "required": ["FullName", "LastModifiedDateTime", "ContactKey", "@odata.type"],
              "type": "object",
              "properties": {
                "@odata.type": {
                  "type": "string",
                  "example": "#KarbonService.ContactSummaryDTO",
                  "description": "The information about Karbon Objects generating this response."
                },
                "ContactKey": {
                  "type": "string",
                  "example": "29YXnqWcqCf3",
                  "description": "A Karbon-generated unique identifier for the Contact"
                },
                "FullName": {
                  "type": "string",
                  "example": "William John Connor",
                  "description": "The full name of the Contact"
                },
                "PreferredName": {
                  "type": "string",
                  "example": "Bill",
                  "description": "The preferred name of the Contact"
                },
                "Salutation": {
                  "type": "string",
                  "example": "Mr",
                  "description": "The title to address the Contact"
                },
                "ClientOwner": {
                  "type": "string",
                  "example": "rodney.muller@samplecompany.com",
                  "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the clients in this Client Group. You can only use the UserKey or the email address of an existing team member."
                },
                "ClientManager": {
                  "type": "string",
                  "example": "jessica.tse@samplecompany.com",
                  "description": "The team member in your firm who manages the work for the clients in this Client Group. You can only use the UserKey or the email address of an existing team member"
                },
                "Address": {
                  "type": ["string", "null"],
                  "example": "42 Galaxy Way, London",
                  "description": "The Address of the Contact"
                },
                "EmailAddress": {
                  "type": "string",
                  "example": "william.connor@samplecompany.com",
                  "description": "The Email Address of the Contact"
                },
                "PhoneNumber": {
                  "type": ["string", "null"],
                  "example": "0987888686",
                  "description": "The phone number associated with the Contact"
                },
                "RoleOrTitle": {
                  "type": "string",
                  "example": "COO",
                  "description": "The business role or title of the Contact"
                },
                "ContactType": {
                  "type": "string",
                  "example": "Client",
                  "description": "The Contact Type for this Contact. You can only use existing Contact Types, these are available from the TenantSettings endpoint."
                },
                "UserDefinedIdentifier": {
                  "type": "string",
                  "example": "73YEnqFcqCf3",
                  "description": "A unique key that you can use to identify this Contact."
                },
                "LastModifiedDateTime": {
                  "type": "string",
                  "format": "date-time",
                  "description": "The date and time at which the Contact was most recently modified.",
                  "example": "2021-12-29T07:01:53Z"
                }
              }
            }
          },
          "@odata.nextLink": {
            "type": "string",
            "example": "https://api.karbonhq.com/v3/Contacts?$skip=100",
            "description": "The link to next set of Contacts. @odata.nextLink field will only appear if you have more than 100 Contacts."
          }
        }
      },
      "GetTenantSettings": {
        "description": "A collection of customer specific Contact and Work settings",
        "type": "object",
        "properties": {
          "ContactTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SettingContactType"
            }
          },
          "TenantKey": {
            "type": "string",
            "description": "The unique key specific to the customer's Karbon account",
            "example": "2BzmMRkhbwBT"
          },
          "ClientAccessActivated": {
            "type": "boolean",
            "description": "Indicates whether the tenant has activated Karbon for Clients (K4C)",
            "example": true
          },
          "WorkStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SettingWorkStatus"
            }
          },
          "WorkTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SettingWorkType"
            }
          }
        }
      },
      "GetOrganizations": {
        "description": "A list of Organizations",
        "required": ["value", "@odata.context", "@odata.count"],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#Organizations/KarbonService.OrganizationSummaryDTO"
          },
          "@odata.count": {
            "type": "integer",
            "format": "int64",
            "example": 323,
            "description": "The total number of Organizations that satisfy the query criteria."
          },
          "value": {
            "type": "array",
            "items": {
              "required": ["FullName", "LastModifiedDateTime", "OrganizationKey", "@odata.type"],
              "type": "object",
              "properties": {
                "@odata.type": {
                  "type": "string",
                  "example": "#KarbonService.OrganizationSummaryDTO",
                  "description": "The information about Karbon Objects generating this response."
                },
                "OrganizationKey": {
                  "type": "string",
                  "example": "29YXnqWcqCf3",
                  "description": "A Karbon-generated unique identifier for the Organization"
                },
                "FullName": {
                  "type": "string",
                  "example": "Sample Company",
                  "description": "The full name of the Organization"
                },
                "PhoneNumber": {
                  "type": ["string", "null"],
                  "example": "0987888686",
                  "description": "The phone number associated with the Organization"
                },
                "EmailAddress": {
                  "type": "string",
                  "example": "info@samplecompany.com",
                  "description": "The Email Address of the Organization"
                },
                "Website": {
                  "type": "string",
                  "example": "www.samplecompany.com",
                  "description": "The website of the Organization"
                },
                "ContactType": {
                  "type": "string",
                  "example": "Client",
                  "description": "The Contact Type for this Organization. You can only use existing Contact Types, these are available from the TenantSettings endpoint."
                },
                "LastModifiedDateTime": {
                  "type": "string",
                  "format": "date-time",
                  "description": "The date and time at which the Organization was most recently modified.",
                  "example": "2021-12-29T07:01:53Z"
                },
                "UserDefinedIdentifier": {
                  "type": ["string", "null"],
                  "example": "ACME-001",
                  "description": "Your own identifier for the Organization, if one has been set. This matches the behaviour already available on /v3/Contacts."
                }
              }
            }
          },
          "@odata.nextLink": {
            "type": "string",
            "example": "https://api.karbonhq.com/v3/Organizations?$skip=100",
            "description": "The link to next set of Organizations. @odata.nextLink field will only appear if you have more than 100 Organizations."
          }
        }
      },
      "BillingKarbonPayment": {
        "type": "object",
        "description": "The Karbon Payment object",
        "properties": {
          "KarbonPayment": {
            "description": "Data specific to Karbon Payments",
            "type": "object",
            "properties": {
              "CardType": {
                "type": "string",
                "example": "",
                "description": "The type of the paying card"
              },
              "CardCountry": {
                "type": ["string", "null"],
                "example": null,
                "description": "The country the paying card was issued in"
              },
              "CardFunding": {
                "type": "string",
                "example": "",
                "description": ""
              },
              "PayoutStatus": {
                "type": "string",
                "example": "",
                "description": "A status indicating whether the payment has been payed out"
              },
              "SurchargeAmount": {
                "type": "number",
                "format": "double",
                "example": 0,
                "description": "The amount of anr surcharge(s)"
              },
              "SurchargeTaxAmount": {
                "type": "number",
                "format": "double",
                "example": 0,
                "description": "The tax on any surcharge(s)"
              },
              "KarbonFeeAmount": {
                "type": "number",
                "format": "double",
                "example": 0,
                "description": "The amount of the Karbon fee"
              },
              "KarbonFeeTaxAmount": {
                "type": "number",
                "format": "double",
                "example": 0,
                "description": "The tax on the Karbon fee"
              },
              "NetAmount": {
                "type": "number",
                "format": "double",
                "example": 0,
                "description": "The gross amount less surcharges, fees and taxes"
              }
            }
          }
        }
      },
      "WorkItem": {
        "description": "The base data for a Work Item",
        "required": ["ClientKey", "StartDate", "Title", "WorkItemKey"],
        "type": "object",
        "properties": {
          "WorkItemKey": {
            "type": "string",
            "example": "2LPSrkzbYrn4",
            "description": "A Karbon-generated unique identifier for the Work Item"
          },
          "AssigneeEmailAddress": {
            "type": "string",
            "example": "joe@samplecompany.com",
            "description": "The email address of the user to whom the Work Item has been assigned"
          },
          "AssigneeKey": {
            "type": "string",
            "example": "4gHCvnbFFqsq",
            "description": "A Karbon-generated value used to identify the user to whom the Work Item has been assigned"
          },
          "AssigneeName": {
            "type": "string",
            "example": "Joe Min",
            "description": "The name of the user to whom the Work Item has been assigned"
          },
          "Title": {
            "type": "string",
            "example": "Payroll 31 Aug - 15 Sep 2022",
            "description": "The title of the Work Item"
          },
          "ClientKey": {
            "type": "string",
            "example": "4ncPZ7q96SGc",
            "description": "A Karbon-generated value used to identify the Client for whom the Work Item is prepared"
          },
          "ClientName": {
            "type": "string",
            "example": "Acme Corporation",
            "description": "The name of the Client for whom the Work Item is prepared"
          },
          "ClientType": {
            "type": "string",
            "enum": ["Contact", "Organization", "ClientGroup"],
            "example": "Organization",
            "description": "The type of the Client"
          },
          "ClientUserDefinedIdentifier": {
            "type": "string",
            "example": "ACMECORP",
            "description": "A unique identifier that you had created to identify the Client. This parameter is not case sensitive."
          },
          "RelatedClientGroupKey": {
            "type": "string",
            "example": "3LCPr987gNrc",
            "description": "A Karbon-generated value used to identify the Client Group of the Client"
          },
          "ClientGroupKey": {
            "type": "string",
            "example": "3LCPr987gNrc",
            "description": "A Karbon-generated value used to identify the Client Group of the Client"
          },
          "RelatedClientGroupName": {
            "type": "string",
            "example": "Smith Family Group",
            "description": "The name of the related Client Group"
          },
          "StartDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time at which the Work Item should start",
            "example": "2021-12-29T00:00:00Z"
          },
          "DueDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time by which the Work Item should be complete",
            "example": "2022-01-30T00:00:00Z"
          },
          "DeadlineDate": {
            "type": ["string", "null"],
            "format": "date-time",
            "description": "The date and time by which the Work Item should be complete according to a party outside of your firm. e.g. A tax filing date or payroll processing cut-off date.",
            "example": "2022-01-31T00:00:00Z"
          },
          "CompletedDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time at which the Work Item was completed",
            "example": "2022-02-01T00:00:00Z"
          },
          "ToDoPeriod": {
            "type": "string",
            "format": "date-time",
            "description": "The period, in which the Work Item should start.",
            "example": "2021-12-29T00:00:00Z"
          },
          "WorkType": {
            "type": "string",
            "description": "The type of work related to the Work Item",
            "example": "Payroll"
          },
          "WorkStatus": {
            "type": "string",
            "description": "The current status of the Work Item",
            "example": "Ready To Start - Send client requests"
          },
          "PrimaryStatus": {
            "type": "string",
            "enum": ["Planned", "ReadyToStart", "InProgress", "Waiting", "Completed"],
            "description": "The current parent-level Status of the Work Item. If `WorkStatus` and `PrimaryStatus` have different values, `PrimaryStatus` will be the source of truth for Work Item status.\n",
            "example": "ReadyToStart"
          },
          "SecondaryStatus": {
            "type": "string",
            "description": "The current child-level Status of the Work Item",
            "example": "Send client requests"
          },
          "WorkTemplateKey": {
            "type": "string",
            "description": "A Karbon-generated value used to identify the Template that generated this Work Item",
            "example": "p56mtcBhwb9"
          },
          "WorkTemplateTile": {
            "type": "string",
            "description": "The title of the Work Template",
            "example": "Payroll processing"
          },
          "WorkScheduleKey": {
            "type": "string",
            "description": "A Karbon-generated value used to identify the Work Schedule for this Work Item",
            "example": "4f3gHnLC323"
          },
          "EstimatedBudget": {
            "deprecated": true,
            "type": "number",
            "format": "decimal",
            "description": "Deprecated! - previously used as the estimated budget for the Work Item",
            "example": 1200.05
          }
        }
      },
      "WorkItemWithFeeSettings": {
        "description": "A Work Item with Fee Settings",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorkItem"
          },
          {
            "$ref": "#/components/schemas/WorkFeeSettings"
          }
        ]
      },
      "WorkItemWithFeeSettingsAndUserRoleAssignments": {
        "description": "A Work Item with Fee Settings and User Role assignments",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorkItem"
          },
          {
            "$ref": "#/components/schemas/WorkFeeSettings"
          },
          {
            "$ref": "#/components/schemas/WorkItemUserRoleAssignments"
          }
        ]
      },
      "WorkItemUpdate": {
        "type": "object",
        "description": "The core parameters when updating a Work Item",
        "required": ["AssigneeEmailAddress", "Title", "ClientKey", "ClientType", "StartDate"],
        "properties": {
          "AssigneeEmailAddress": {
            "type": "string",
            "example": "joe@samplecompany.com",
            "description": "The email address of the user to whom the Work Item has been assigned"
          },
          "Title": {
            "type": "string",
            "example": "Payroll 31 Aug - 15 Sep 2022",
            "description": "The title of the Work Item"
          },
          "ClientKey": {
            "type": "string",
            "example": "4ncPZ7q96SGc",
            "description": "A Karbon-generated value used to identify the Client for whom the Work Item is prepared"
          },
          "ClientType": {
            "type": "string",
            "enum": ["Contact", "Organization", "ClientGroup"],
            "example": "Organization",
            "description": "The type of the Client"
          },
          "RelatedClientGroupKey": {
            "type": "string",
            "example": "3LCPr987gNrc",
            "description": "A Karbon-generated value used to identify the Client Group of the Client"
          },
          "StartDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time at which the Work Item should start",
            "example": "2021-12-29T00:00:00Z"
          },
          "DueDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time by which the Work Item should be complete",
            "example": "2022-01-30T00:00:00Z"
          },
          "DeadlineDate": {
            "type": ["string", "null"],
            "format": "date-time",
            "description": "The date and time by which an external party has specified that the Work Item should be complete",
            "example": "2022-01-31T00:00:00Z"
          },
          "WorkType": {
            "type": "string",
            "description": "The type of work related to the Work Item. Enter an existing Work Type.",
            "example": "Payroll"
          },
          "WorkStatus": {
            "type": "string",
            "description": "The current status of the Work Item",
            "example": "Ready To Start - Send client requests"
          },
          "PrimaryStatus": {
            "type": "string",
            "enum": ["Planned", "ReadyToStart", "InProgress", "Waiting", "Completed"],
            "description": "The current parent-level Status of the Work Item. If `WorkStatus` and `PrimaryStatus` have different values, `PrimaryStatus` will be the source of truth for Work Item status.\n",
            "example": "ReadyToStart"
          },
          "SecondaryStatus": {
            "type": "string",
            "description": "The current child-level Status of the Work Item",
            "example": "Send client requests"
          },
          "WorkTemplateKey": {
            "type": "string",
            "description": "A Karbon-generated value used to identify the Template that will be used to generate this Work Item",
            "example": "p56mtcBhwb9"
          },
          "WorkScheduleKey": {
            "type": "string",
            "description": "A Karbon-generated value used to identify the Work Schedule for this Work Item",
            "example": "4f3gHnLC323"
          },
          "EstimatedBudget": {
            "deprecated": true,
            "type": "number",
            "format": "decimal",
            "description": "The estimated budget for the Work Item",
            "example": 1200.05
          },
          "Description": {
            "type": "string",
            "description": "A free form text field to add more information about the Work Item",
            "example": "Send to Jo for review"
          },
          "ClientTaskRecipient": {
            "type": "object",
            "required": ["RecipientKey", "LinkType"],
            "description": "The details about the recipient of the Client Tasks related to this Work Item.",
            "properties": {
              "RecipientKey": {
                "type": "string",
                "description": "A Karbon-generated value used to identify the Client",
                "example": "4ncPZ7q96SGc"
              },
              "LinkType": {
                "type": "string",
                "enum": ["Contact", "Organization"],
                "description": "The Karbon entity, from which to pull the email address in case the email address of the Client Task recipient is empty.",
                "example": "Organization"
              },
              "EmailAddress": {
                "type": "string",
                "description": "The email address of the recipient.",
                "example": "acme@corp.com"
              }
            }
          }
        }
      },
      "WorkFeeSettings": {
        "description": "The Fee Settings for a Work Item",
        "properties": {
          "FeeSettings": {
            "description": "The Fee Settings describe how the work will be billed, for FixedFee work the Fee Settings can include the value to be billed",
            "type": "object",
            "properties": {
              "FeeType": {
                "type": "string",
                "description": "The way the fee is calculated for the Work Item",
                "enum": ["FixedFee", "TimeAndMaterials", "NonBillable"],
                "example": "FixedFee"
              },
              "FeeValue": {
                "type": ["number", "null"],
                "description": "The value of the fee in the currency of the Karbon account, this value must be null if FeeType is not FixedFee",
                "example": 5150.2
              }
            }
          }
        }
      },
      "WorkItemUserRoleAssignments": {
        "description": "The User assignments for specific Roles on a Work Item",
        "properties": {
          "UserRoleAssignments": {
            "type": "array",
            "description": "The array that describes the roles of the users associated with this Work Item.",
            "items": {
              "type": "object",
              "required": ["RoleKey", "UserProfileKey"],
              "properties": {
                "RoleKey": {
                  "type": "string",
                  "description": "A Karbon-generated value used to identify the role of the user",
                  "example": "2mYzTtly89Lq"
                },
                "UserProfileKey": {
                  "type": "string",
                  "description": "A Karbon-generated value used to identify the user",
                  "example": "2Qy48WVCRBcP"
                }
              }
            }
          }
        }
      },
      "GetWorkItems": {
        "description": "A collection of work items",
        "required": ["value", "@odata.context", "@odata.count"],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#WorkItems/KarbonService.WorkItemSummaryDTO"
          },
          "@odata.count": {
            "type": "integer",
            "format": "int64",
            "example": 323,
            "description": "The total number of Work Items that satisfy the query criteria."
          },
          "value": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "type": "object",
                  "properties": {
                    "@odata.type": {
                      "type": "string",
                      "example": "#KarbonService.WorkItemSummaryDTO",
                      "description": "The information about Karbon Objects generating this response."
                    }
                  }
                },
                {
                  "$ref": "#/components/schemas/WorkItem"
                }
              ]
            }
          },
          "@odata.nextLink": {
            "type": "string",
            "example": "https://api.karbonhq.com/v3/WorkItems?$skip=100",
            "description": "The link to next set of Work Items. @odata.nextLink field will only appear if you have more than 100 Work Items."
          }
        }
      },
      "UpdateWorkItem": {
        "description": "The properties that can be updated on a Work Item with the PATCH method",
        "type": "object",
        "anyOf": [
          {
            "properties": {
              "Title": {
                "type": "string",
                "maxLength": 200,
                "description": "The title of the Work Item. Must be non-empty and no longer than 200 characters when included.",
                "example": "Q2 review prep"
              }
            }
          },
          {
            "properties": {
              "Description": {
                "type": "string",
                "description": "A free form text field to add more information about the Work Item",
                "example": "Reviewed and approved by Jo."
              }
            }
          },
          {
            "properties": {
              "StartDate": {
                "oneOf": [
                  {
                    "type": "string",
                    "example": "2024-02-01T00:00:00Z",
                    "format": "date-time"
                  },
                  {
                    "type": "string",
                    "example": "2024-02-01",
                    "format": "date"
                  }
                ],
                "description": "The start date of the Work Item as an ISO 8601 date or date-time. Must be non-null when included."
              }
            }
          },
          {
            "properties": {
              "DueDate": {
                "oneOf": [
                  {
                    "type": ["string", "null"],
                    "example": "2024-02-01T00:00:00Z",
                    "format": "date-time"
                  },
                  {
                    "type": ["string", "null"],
                    "example": "2024-02-01",
                    "format": "date"
                  }
                ],
                "description": "The due date of the Work Item as an ISO 8601 date or date-time. Pass `null` to clear the existing due date."
              }
            }
          },
          {
            "properties": {
              "DeadlineDate": {
                "oneOf": [
                  {
                    "type": ["string", "null"],
                    "example": "2024-02-01T00:00:00Z",
                    "format": "date-time"
                  },
                  {
                    "type": ["string", "null"],
                    "example": "2024-02-01",
                    "format": "date"
                  }
                ],
                "description": "The deadline of the workitem as ISO8601 formated datestamp or timestamp"
              }
            }
          },
          {
            "properties": {
              "AssigneeEmailAddress": {
                "type": "string",
                "format": "email",
                "description": "The email address of the Karbon user the Work Item should be assigned to. Validated against existing users; unknown values return a `400`.",
                "example": "alex@example.com"
              }
            }
          },
          {
            "properties": {
              "WorkType": {
                "type": "string",
                "description": "The work type label, validated against work types configured on the account. Unknown values return a `400`.",
                "example": "Tax Return"
              }
            }
          }
        ]
      },
      "RequestCreateWorkItem": {
        "description": "A single work item",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorkItemUpdate"
          },
          {
            "$ref": "#/components/schemas/WorkFeeSettings"
          },
          {
            "$ref": "#/components/schemas/WorkItemUserRoleAssignments"
          }
        ]
      },
      "ResponseCreateClientGroup": {
        "description": "A single Client Group",
        "required": ["ClientGroupKey", "FullName", "RestrictionLevel", "UserDefinedIdentifier"],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#ClientGroups/$entity"
          },
          "@odata.type": {
            "type": "string",
            "description": "The information about Karbon Objects generating this response.",
            "example": "#KarbonService.ClientGroupDTO"
          },
          "ClientGroupKey": {
            "type": "string",
            "description": "A Karbon-generated value that is used to identify the Client Group",
            "example": "38zlxNyJSr8y"
          },
          "FullName": {
            "type": "string",
            "description": "The full name of the Client Group",
            "example": "Abigail Silvers"
          },
          "ClientOwner": {
            "type": "string",
            "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the clients in this Client Group. You can only use the UserKey or the email address of an existing team member.",
            "example": "rodney.muller@samplecompany.com"
          },
          "ClientManager": {
            "type": "string",
            "description": "The team member in your firm who manages the work for the clients in this Client Group. You can only use the UserKey or the email address of an existing team member.",
            "example": "jessica.tse@samplecompany.com"
          },
          "ContactType": {
            "type": "string",
            "description": "The Contact Type for this Client Group. You can only use existing Contact Type.",
            "example": "Client"
          },
          "UserDefinedIdentifier": {
            "type": "string",
            "description": "A unique key that you can use to identify this Client Group.",
            "example": "SILVERS"
          },
          "RestrictionLevel": {
            "type": "string",
            "description": "The privacy level for this Client Group.\n\n<ul><li>Public Client Groups can be managed by anyone in the firm</li> <li>Private Client Groups can only be managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team). Basic details (name of the Contacts and the Work Items) related to such Client Groups are visible to anyone in the firm.</li> <li>Hidden Client Groups are only be visible to and managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team).</li>\n",
            "example": "Public",
            "default": "Public",
            "enum": ["Public", "Private", "Hidden"]
          },
          "PrimaryContact": {
            "type": "string",
            "description": "The main contact for a client with multiple contact details.",
            "example": "Duncan Moore"
          },
          "LastModifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time at which this Client Group was last modified.",
            "example": "2022-07-05T07:30:13.7188114Z"
          },
          "Members": {
            "description": "The members of the Client Group",
            "type": "array",
            "items": {
              "type": ["object", "null"],
              "properties": {
                "ContactKey": {
                  "type": ["string", "null"],
                  "description": "A Karbon-generated value that is used to identify the Contact",
                  "example": "34yxkY51knn7"
                },
                "OrganizationKey": {
                  "type": ["string", "null"],
                  "description": "A Karbon-generated value that is used to identify the Organization",
                  "example": "4ncPZ7q96SGc"
                }
              }
            }
          },
          "EntityDescription": {
            "type": "object",
            "properties": {
              "Text": {
                "type": "string",
                "description": "Free-form text that can be used to add more information about the Client Group",
                "example": "Bicycle rental service in the New jersey area."
              }
            }
          }
        }
      },
      "CreateClientGroup": {
        "description": "A single Client Group",
        "required": ["FullName"],
        "type": "object",
        "properties": {
          "FullName": {
            "type": "string",
            "description": "The full name of the Client Group",
            "example": "Abigail Silvers"
          },
          "ClientOwner": {
            "type": "string",
            "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the clients in this Client Group. You can only use the UserKey or the email address of an existing team member.",
            "example": "rodney.muller@samplecompany.com"
          },
          "ClientManager": {
            "type": "string",
            "description": "The team member in your firm who manages the work for the clients in this Client Group. You can only use the UserKey or the email address of an existing team member.",
            "example": "jessica.tse@samplecompany.com"
          },
          "ContactType": {
            "type": "string",
            "description": "The Contact Type for this Client Group. You can only use existing Contact Type.",
            "example": "Client"
          },
          "UserDefinedIdentifier": {
            "type": "string",
            "description": "A unique key that you can use to identify this Client Group.",
            "example": "SILV112"
          },
          "RestrictionLevel": {
            "type": "string",
            "description": "The privacy level for this Client Group.\n\n<ul><li>Public Client Groups can be managed by anyone in the firm</li> <li>Private Client Groups can only be managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team). Basic details (name of the Contacts and the Work Items) related to such Client Groups are visible to anyone in the firm.</li> <li>Hidden Client Groups are only be visible to and managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team).</li>\n",
            "example": "Public",
            "default": "Public",
            "enum": ["Public", "Private", "Hidden"]
          },
          "PrimaryContact": {
            "type": "string",
            "description": "The main contact for a client with multiple contact details.",
            "example": "Duncan Moore"
          },
          "EntityDescription": {
            "type": "object",
            "properties": {
              "Text": {
                "type": "string",
                "description": "Free-form text that can be used to add more information about the Client Group",
                "example": "Bicycle rental service in the New jersey area."
              }
            }
          },
          "Members": {
            "description": "The members of the Client Group",
            "type": "array",
            "items": {
              "type": ["object", "null"],
              "properties": {
                "ContactKey": {
                  "type": ["string", "null"],
                  "description": "A Karbon-generated value that is used to identify the Contact",
                  "example": "34yxkY51knn7"
                },
                "OrganizationKey": {
                  "type": ["string", "null"],
                  "description": "A Karbon-generated value that is used to identify the Organization",
                  "example": "4ncPZ7q96SGc"
                }
              }
            }
          }
        }
      },
      "ResponseCreateContact": {
        "description": "A single Contact",
        "required": [
          "@odata.context",
          "@odata.type",
          "ContactKey",
          "FirstName",
          "LastName",
          "RestrictionLevel",
          "UserDefinedIdentifier"
        ],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response."
          },
          "@odata.type": {
            "type": "string",
            "description": "The information about Karbon Objects generating this response."
          },
          "ContactKey": {
            "type": "string",
            "description": "A Karbon-generated value that is used to identify the Contact",
            "example": "4t8LbR1QcbGS"
          },
          "FirstName": {
            "type": "string",
            "description": "The first name of the Contact",
            "example": "William"
          },
          "MiddleName": {
            "type": "string",
            "example": "John",
            "description": "The middle name of the Contact"
          },
          "LastName": {
            "type": "string",
            "example": "Connor",
            "description": "The last name of the Contact"
          },
          "PreferredName": {
            "type": "string",
            "example": "Bill",
            "description": "The preferred name of the Contact"
          },
          "Salutation": {
            "type": "string",
            "example": "Mr",
            "description": "The title to address the Contact"
          },
          "Suffix": {
            "type": "string",
            "example": "Jr.",
            "description": "The suffix of the Contact"
          },
          "ClientOwner": {
            "type": "string",
            "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the Contact. You can only use the UserKey or the email address of an existing team member.",
            "example": "rodney.muller@samplecompany.com"
          },
          "ClientManager": {
            "type": "string",
            "description": "The team member in your firm who manages the work for Contact. You can only use the UserKey or the email address of an existing team member.",
            "example": "jessica.tse@samplecompany.com"
          },
          "ContactType": {
            "type": "string",
            "description": "The Contact Type for this Contact. You can only use existing Contact Types, these are available from the TenantSettings endpoint.",
            "example": "Client"
          },
          "UserDefinedIdentifier": {
            "type": "string",
            "description": "A unique key that you can use to identify this Contact.",
            "example": "BILLJR"
          },
          "RestrictionLevel": {
            "type": "string",
            "description": "The privacy level for this Client Group.\n\n<ul><li>Public Client Groups can be managed by anyone in the firm</li> <li>Private Client Groups can only be managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team). Basic details (name of the Contacts and the Work Items) related to such Client Groups are visible to anyone in the firm.</li> <li>Hidden Client Groups are only be visible to and managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team).</li>\n",
            "example": "Public",
            "default": "Public",
            "enum": ["Public", "Private", "Hidden"]
          },
          "AvatarUrl": {
            "type": "string",
            "description": "The URL to the Contact's avatar",
            "example": "https://az.karbonemail.com/images/e4ae96c1-8d17-4c6e-af8a-8040482176fc"
          },
          "LastModifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time at which this Contact was last modified.",
            "example": "2022-07-05T07:30:13.7188114Z"
          },
          "EntityDescription": {
            "type": "object",
            "properties": {
              "Text": {
                "type": "string",
                "description": "Free-form text that can be used to add more information about the Client Group",
                "example": "Birthday on June 23."
              }
            }
          },
          "AccountingDetail": {
            "$ref": "#/components/schemas/DetailsOfAccounting"
          },
          "BusinessCards": {
            "$ref": "#/components/schemas/BusinessCardsRequestAsArray"
          },
          "ClientTeam": {
            "$ref": "#/components/schemas/ClientTeam"
          },
          "ClientAccess": {
            "$ref": "#/components/schemas/ClientAccess"
          }
        }
      },
      "ContactsCardList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ContactsCardOrganization"
        },
        "Description": "A list of contacts related to an Organization via their Business Cards"
      },
      "ContactsCardOrganization": {
        "description": "A contact related to an Organization",
        "type": "object",
        "properties": {
          "ContactKey": {
            "type": "string",
            "example": "m29BvD0lyT",
            "description": "A Karbon-generated value that is used to identify the Contact"
          },
          "FullName": {
            "type": "string",
            "example": "Jane River",
            "description": "The full name of the Contact"
          },
          "PreferredName": {
            "type": "string",
            "example": "Jane",
            "description": "The preferred name of the Contact"
          },
          "Salutation": {
            "type": "string",
            "example": "Ms",
            "description": "The title to address the Contact"
          },
          "ClientOwner": {
            "type": ["string", "null"],
            "example": "jessica.tse@samplecompany.com",
            "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the Contact. You can only use the UserKey or the email address of an existing team member."
          },
          "ClientManager": {
            "type": ["string", "null"],
            "example": "rodney.muller@samplecompany.com",
            "description": "The team member in your firm who manages the work for Contact. You can only use the UserKey or the email address of an existing team member."
          },
          "Address": {
            "type": ["string", "null"],
            "example": "",
            "description": "The Address of the Contact"
          },
          "EmailAddress": {
            "type": "string",
            "description": "The Email Address of the Contact"
          },
          "PhoneNumber": {
            "oneOf": [
              {
                "type": "string",
                "maxLength": 20,
                "example": "555-1234"
              },
              {
                "type": "null"
              }
            ],
            "description": "The phone number associated with the Contact"
          },
          "RoleOrTitle": {
            "type": "string",
            "example": "COO",
            "description": "The business role or title of the Contact"
          },
          "UserDefinedIdentifier": {
            "type": "string",
            "example": "JR_1001_2022",
            "description": "A unique key that you can use to identify this Contact."
          },
          "LastModifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "example": "2023-06-12T14:00:00Z",
            "description": "The date and time at which this Contact was last modified."
          }
        }
      },
      "CreateContact": {
        "description": "A single Contact",
        "required": ["FirstName", "LastName"],
        "type": "object",
        "properties": {
          "FirstName": {
            "type": "string",
            "example": "William",
            "description": "The first name of the Contact"
          },
          "MiddleName": {
            "type": "string",
            "example": "John",
            "description": "The middle name of the Contact"
          },
          "LastName": {
            "type": "string",
            "example": "Connor",
            "description": "The last name of the Contact"
          },
          "PreferredName": {
            "type": "string",
            "example": "Bill",
            "description": "The preferred name of the Contact"
          },
          "Salutation": {
            "type": "string",
            "example": "Mr",
            "description": "The title to address the Contact"
          },
          "Suffix": {
            "type": "string",
            "example": "Jr.",
            "description": "The suffix of the Contact"
          },
          "RestrictionLevel": {
            "type": "string",
            "description": "The privacy level for this Contact.\n\n<ul><li>Public Contacts can be managed by anyone in the firm</li> <li>Private Contacts can only be managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team). Basic details (name of the Contacts and the Work Items) related to such Contacts are visible to anyone in the firm.</li> <li>Hidden Contacts are only be visible to and managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team).</li>\n",
            "example": "Public",
            "default": "Public",
            "enum": ["Public", "Private", "Hidden"]
          },
          "ClientOwner": {
            "type": "string",
            "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the Contact. You can only use the UserKey or the email address of an existing team member.",
            "example": "rodney.muller@samplecompany.com"
          },
          "ClientManager": {
            "type": "string",
            "description": "The team member in your firm who manages the work for Contact. You can only use the UserKey or the email address of an existing team member.",
            "example": "jessica.tse@samplecompany.com"
          },
          "ContactType": {
            "type": "string",
            "description": "The Contact Type for this Contact. You can only use existing Contact Types, these are available from the TenantSettings endpoint.",
            "example": "Client"
          },
          "UserDefinedIdentifier": {
            "type": "string",
            "description": "A unique key that you can use to identify this Contact.",
            "example": "BILLJR-001"
          },
          "BusinessCards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BusinessCardRequest"
            }
          },
          "EntityDescription": {
            "type": "object",
            "properties": {
              "Text": {
                "type": "string",
                "description": "Free-form text that can be used to add more information about the Client Group",
                "example": "Birthday on June 23."
              }
            }
          },
          "AccountingDetail": {
            "$ref": "#/components/schemas/DetailsOfAccounting"
          },
          "ClientTeam": {
            "$ref": "#/components/schemas/ClientTeam"
          }
        }
      },
      "NoteRequest": {
        "description": "A single Note",
        "required": ["AuthorEmailAddress", "Subject", "Body"],
        "type": "object",
        "properties": {
          "Subject": {
            "type": "string",
            "example": "Note from Client",
            "description": "The subject line of the Note"
          },
          "Body": {
            "type": "string",
            "example": "<strong>To do:</strong> return customer call",
            "description": "The body of the Note. This property supports HTML."
          },
          "AuthorEmailAddress": {
            "type": "string",
            "example": "author@example.com",
            "description": "The email address of the Note's author"
          },
          "AssigneeEmailAddress": {
            "type": "string",
            "example": "assignee@example.com",
            "description": "The email address of the the Karbon user that the Note should be assigned to"
          },
          "DueDate": {
            "type": "string",
            "format": "date-time",
            "example": "2022-10-11T00:00:00Z",
            "description": "The date by which the actions on the note must be complete"
          },
          "TodoDate": {
            "type": "string",
            "format": "date-time",
            "example": "2022-10-10T00:00:00Z",
            "description": "The date for which the actions will be executed"
          },
          "Timelines": {
            "type": "array",
            "description": "The Timelines to which this note will be associated. If Notes are linked to a Work Item, the Timeline of the Client (associated with the Work Item) will show the Notes.",
            "items": {
              "type": "object",
              "properties": {
                "EntityType": {
                  "type": "string",
                  "description": "The type of entity this note will be linked to",
                  "enum": ["WorkItem", "Contact", "Organization", "ClientGroup"]
                },
                "EntityKey": {
                  "type": "string",
                  "description": "A Karbon-generated value to indicate the entity"
                }
              }
            }
          }
        }
      },
      "NoteResponse": {
        "description": "A single Contact",
        "required": ["AssigneeEmailAddress", "AuthorEmailAddress", "Subject", "Body"],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response"
          },
          "Id": {
            "type": "string",
            "example": "pkX234GlP",
            "description": "A Karbon-generated value that is used to identify the Note"
          },
          "Subject": {
            "type": "string",
            "example": "Note from Client",
            "description": "The subject line of the Note"
          },
          "Body": {
            "type": "string",
            "example": "<strong>To do:</strong> return customer call",
            "description": "The body of the Note. This property supports HTML."
          },
          "AuthorEmailAddress": {
            "type": "string",
            "example": "author@example.com",
            "description": "The email address of the Note's author"
          },
          "AssigneeEmailAddress": {
            "type": "string",
            "example": "assignee@example.com",
            "description": "The email address of the Note's reader"
          },
          "DueDate": {
            "type": "string",
            "format": "date-time",
            "example": "2022-10-11T00:00:00Z",
            "description": "The date by which the actions on the note must be complete"
          },
          "TodoDate": {
            "type": "string",
            "format": "date-time",
            "example": "2022-10-10T00:00:00Z",
            "description": "The date for which the actions will be executed"
          },
          "Timelines": {
            "type": "array",
            "description": "The Timelines to which this note will be associated. If Notes are linked to a Work Item, the Timeline of the Client (associated with the Work Item) will show the Notes.",
            "items": {
              "type": "object",
              "properties": {
                "EntityType": {
                  "type": "string",
                  "example": "Contact",
                  "description": "The type of entity this note will be linked to",
                  "enum": ["WorkItem", "Contact", "Organization", "ClientGroup"]
                },
                "EntityKey": {
                  "type": "string",
                  "example": "4tYpP2F1w",
                  "description": "A Karbon-generated value to indicate the entity"
                }
              }
            }
          },
          "Comments": {
            "type": "array",
            "description": "The comments for this note",
            "items": {
              "type": "object",
              "properties": {
                "CommentKey": {
                  "type": "string",
                  "example": "4lQn23Y6b",
                  "description": "A Karbon-generated value that is used to identify the Comment"
                },
                "CommentBody": {
                  "type": "string",
                  "example": "A long string with the body of the comment.\nMay include line breaks or other formatting.",
                  "description": "A Karbon-generated value that is used to identify the Comment"
                },
                "CreatedDate": {
                  "type": "string",
                  "format": "date-time",
                  "example": "2022-11-12T15:34:11Z",
                  "description": "The date at which the Comment was created"
                },
                "AuthorEmailAddress": {
                  "type": "string",
                  "example": "author@example.com",
                  "description": "The email address of the Comment's author"
                }
              }
            }
          }
        }
      },
      "CreateOrganizationResponse": {
        "description": "A single Organization",
        "required": [
          "@odata.context",
          "@odata.type",
          "OrganizationKey",
          "FullName",
          "RestrictionLevel",
          "UserDefinedIdentifier"
        ],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response."
          },
          "@odata.type": {
            "type": "string",
            "description": "The information about Karbon Objects generating this response."
          },
          "OrganizationKey": {
            "type": "string",
            "description": "A Karbon-generated value that is used to identify the Organization",
            "example": "mC82l11VBk"
          },
          "FullName": {
            "type": "string",
            "description": "The full name of the Organization",
            "example": "Example Business"
          },
          "ClientOwner": {
            "type": "string",
            "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the clients in this Organization. You can only use the UserKey or the email address of an existing team member.",
            "example": "client.owner@example.com"
          },
          "ClientManager": {
            "type": "string",
            "description": "The team member in your firm who manages the work for the clients in this Organization. You can only use the UserKey or the email address of an existing team member.",
            "example": "client.manager@example.com"
          },
          "ContactType": {
            "type": "string",
            "description": "The Contact Type for this Organization. You can only use existing Contact Type.",
            "example": "Client"
          },
          "UserDefinedIdentifier": {
            "type": "string",
            "description": "A unique key that you can use to identify this Organization.",
            "example": "Example Business"
          },
          "RestrictionLevel": {
            "type": "string",
            "description": "The privacy level for this Organization.\n\n<ul><li>Public Organization can be managed by anyone in the firm</li> <li>Private Organization can only be managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team). Basic details (name of the Organization and the Work Items) related to such Organization are visible to anyone in the firm.</li> <li>Hidden Organization are only be visible to and managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team).</li>\n",
            "default": "Public",
            "enum": ["Public", "Private", "Hidden"]
          },
          "LastModifiedDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time at which this Contact was last modified.",
            "example": "2022-07-05T07:30:13.7188114Z"
          },
          "EntityDescription": {
            "type": "object",
            "properties": {
              "Text": {
                "type": "string",
                "description": "Free-form text that can be used to add more information about the Organization",
                "example": "Birthday on June 23."
              }
            }
          },
          "AccountingDetail": {
            "$ref": "#/components/schemas/DetailsOfAccounting"
          }
        }
      },
      "CreateOrganization": {
        "description": "A single Organization",
        "required": ["FullName"],
        "type": "object",
        "properties": {
          "FullName": {
            "type": "string",
            "description": "The full name of the Organization",
            "example": "Example Business"
          },
          "ClientOwner": {
            "type": "string",
            "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the clients in this Organization. You can only use the UserKey or the email address of an existing team member.",
            "example": "client.owner@example.com"
          },
          "ClientManager": {
            "type": "string",
            "description": "The team member in your firm who manages the work for the clients in this Organization. You can only use the UserKey or the email address of an existing team member.",
            "example": "client.manager@example.com"
          },
          "ContactType": {
            "type": "string",
            "description": "The Contact Type for this Organization. You can only use existing Contact Type.",
            "example": "Client"
          },
          "UserDefinedIdentifier": {
            "type": "string",
            "description": "A unique key that you can use to identify this Organization.",
            "example": "EXAMPLEB_001"
          },
          "RestrictionLevel": {
            "type": "string",
            "description": "The privacy level for this Organization.\n\n<ul><li>Public Organization can be managed by anyone in the firm</li> <li>Private Organization can only be managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team). Basic details (name of the Organization and the Work Items) related to such Organization are visible to anyone in the firm.</li> <li>Hidden Organization are only be visible to and managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team).</li>\n",
            "default": "Public",
            "enum": ["Public", "Private", "Hidden"],
            "example": "Public"
          },
          "BusinessCards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BusinessCardRequest"
            }
          },
          "EntityDescription": {
            "type": "object",
            "properties": {
              "Text": {
                "type": "string",
                "description": "Free-form text that can be used to add more information about the Organization",
                "example": "This organization has a sibling Organization called Example Trust"
              }
            }
          },
          "AccountingDetail": {
            "$ref": "#/components/schemas/DetailsOfAccounting"
          },
          "ClientTeam": {
            "$ref": "#/components/schemas/ClientTeam"
          }
        }
      },
      "UpdateOrganization": {
        "description": "A single Organization",
        "required": ["FullName"],
        "type": "object",
        "properties": {
          "FullName": {
            "type": "string",
            "description": "The full name of the Organization"
          },
          "ClientOwner": {
            "type": "string",
            "description": "The team member in your firm who looks after client relationship or is responsible for the vast majority of the work of the clients in this Organization. You can only use the UserKey or the email address of an existing team member."
          },
          "ClientManager": {
            "type": "string",
            "description": "The team member in your firm who manages the work for the clients in this Organization. You can only use the UserKey or the email address of an existing team member."
          },
          "ContactType": {
            "type": "string",
            "description": "The Contact Type for this Organization. You can only use existing Contact Type."
          },
          "UserDefinedIdentifier": {
            "type": "string",
            "description": "A unique key that you can use to identify this Organization."
          },
          "RestrictionLevel": {
            "type": "string",
            "description": "The privacy level for this Organization.\n\n<ul><li>Public Organization can be managed by anyone in the firm</li> <li>Private Organization can only be managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team). Basic details (name of the Organization and the Work Items) related to such Organization are visible to anyone in the firm.</li> <li>Hidden Organization are only be visible to and managed by the [Client Team](https://help.karbonhq.com/en/articles/1524707-create-a-client-team).</li>\n",
            "default": "Public",
            "enum": ["Public", "Private", "Hidden"]
          },
          "AccountingDetail": {
            "$ref": "#/components/schemas/DetailsOfAccounting"
          },
          "BusinessCards": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BusinessCardRequest"
            }
          },
          "EntityDescription": {
            "type": "object",
            "properties": {
              "Text": {
                "type": "string",
                "description": "Free-form text that can be used to add more information about the Organization"
              }
            }
          },
          "ClientTeam": {
            "$ref": "#/components/schemas/ClientTeam"
          }
        }
      },
      "WithBusinessCardsCreateOrganizationResponse": {
        "description": "The response returned when a business card is created and $expand=BusinessCards is specified in the URL",
        "allOf": [
          {
            "$ref": "#/components/schemas/CreateOrganizationResponse"
          },
          {
            "type": "object",
            "properties": {
              "BusinessCards": {
                "$ref": "#/components/schemas/BusinessCardsRequestAsArray"
              }
            }
          }
        ]
      },
      "FileList": {
        "description": "A collection of files associated with an entity in Karbon",
        "type": "object",
        "properties": {
          "EntityKey": {
            "type": "string",
            "example": "3bXVhdMHgc9P",
            "description": "The unique key of the entity the list of files is associated with"
          },
          "EntityType": {
            "type": "string",
            "example": "WorkItem",
            "enum": ["WorkItem", "Contact", "Organization"],
            "description": "The type of entity the file list is associated with"
          },
          "Attachments": {
            "type": "array",
            "description": "An array of Files including a name, mimetype, size, creation timestamp and download url",
            "items": {
              "$ref": "#/components/schemas/FileListItem"
            }
          }
        }
      },
      "FileListItem": {
        "description": "A single File",
        "type": "object",
        "properties": {
          "FileContextKey": {
            "type": "string",
            "example": "S8bsBjvCRJ3",
            "description": "The unique key of the file"
          },
          "FileName": {
            "type": "string",
            "example": "image.jpeg",
            "description": "The name of the file"
          },
          "FileSize": {
            "type": "integer",
            "example": 7316,
            "description": "The size of the file in bytes"
          },
          "MimeType": {
            "type": "string",
            "example": "image/jpeg",
            "description": "The mimetype of the uploaded file"
          },
          "DownloadUrl": {
            "type": "string",
            "example": "/V3/Files?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJGaWxlQ29udGV4dFBlcm1hS2V5IjoiUzhic0JqdkNSSjMiLCJpYXQiOjE3MjE1NTIzNTQuMCwiZXhwIjoxNzIxNTUzMjU0LjB9.AW9WBmAfLu9jKVZ8odZY1uR1Jvsi-7KB3Zvv8Fbka5k",
            "description": "The API path than can be called to download the file"
          },
          "DateCreated": {
            "type": "string",
            "format": "date-time",
            "example": "2024-07-18T23:44:26Z",
            "description": "The timestamp of when the file was created"
          }
        }
      },
      "GetSingleTimeSheet": {
        "description": "A single TimeSheet with TimeEntries",
        "type": "object",
        "required": ["TimesheetKey", "StartDate", "EndDate", "UserKey", "Status"],
        "properties": {
          "TimesheetKey": {
            "type": "string",
            "example": "3MslJsCcnnkm",
            "description": "A Karbon-generated unique identifier for the Timesheet"
          },
          "StartDate": {
            "type": "string",
            "format": "date-time",
            "example": "2022-07-04T00:00:00Z",
            "description": "The start date for the TimeSheet"
          },
          "EndDate": {
            "type": "string",
            "format": "date-time",
            "example": "2022-07-10T00:00:00Z",
            "description": "The end date for the TimeSheet"
          },
          "UserKey": {
            "type": "string",
            "example": "2mYzTtly89Lq",
            "description": "A Karbon-generated key used to identify the user, this Timesheet belongs to"
          },
          "Status": {
            "type": "string",
            "example": "Draft",
            "enum": ["Approved", "Declined", "Draft", "Submitted"],
            "description": "The approval status of the Timesheet"
          },
          "WorkItemKeys": {
            "type": "array",
            "description": "An array of WorkItem keys",
            "items": {
              "type": "string"
            },
            "example": ["2m6pSFxRzcF2"]
          },
          "TimeEntries": {
            "type": "array",
            "description": "An array of Time entries",
            "items": {
              "type": "object",
              "properties": {
                "TimeEntryKey": {
                  "type": "string",
                  "description": "A Karbon-generated key used to identify the Time Entry",
                  "example": "WYscpLQXR4J-2m6pSFxRzcF2-2mYzTtly89Lq-3j5ZpPT4RDbT-4kbT4BYLMLhv-QbQFGnqPDDs"
                },
                "EntityKey": {
                  "type": "string",
                  "description": "A Karbon-generated key used to identify the entity this Time Entry is related to",
                  "example": "2m6pSFxRzcF2"
                },
                "WorkItemKey": {
                  "type": "string",
                  "description": "A Karbon-generated key used to identify the Work Item this Time Entry is related to",
                  "example": "2m6pSFxRzcF2"
                },
                "ClientKey": {
                  "type": "string",
                  "description": "A Karbon-generated key used to identify the Client this Time Entry is related to",
                  "example": "2mYzTtly89Lq"
                },
                "ClientType": {
                  "type": "string",
                  "description": "The type of Client",
                  "example": "Organization"
                },
                "RoleName": {
                  "type": "string",
                  "description": "The role of the user for whom the Time Entry was created",
                  "example": "Accountant"
                },
                "TaskTypeName": {
                  "type": "string",
                  "description": "The type of task performed by the user",
                  "example": "Auditing"
                },
                "Minutes": {
                  "type": "integer",
                  "description": "The total time (in minutes) spent on the task",
                  "example": 360
                },
                "HourlyRate": {
                  "type": "number",
                  "format": "decimal",
                  "description": "The hourly rate of the user who worked on the task",
                  "example": 80
                },
                "Descriptions": {
                  "type": "array",
                  "description": "Free-form text that has more information about the Time Entry",
                  "items": {
                    "type": ["string", "null"],
                    "example": "Continued working on the end-year accounting"
                  },
                  "example": ["Continued working on the end-year accounting"]
                },
                "BilledStatus": {
                  "type": "string",
                  "description": "An indicator that represents whether the time entry has been or is in the process of being billed",
                  "example": "Draft",
                  "enum": ["Unbilled", "Draft", "InterimBilled", "Billed"]
                }
              }
            }
          }
        }
      },
      "GetTimeSheets": {
        "description": "A collection of TimeSheets",
        "required": ["value", "@odata.context", "@odata.count"],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#Timesheets"
          },
          "@odata.count": {
            "type": "integer",
            "format": "int64",
            "example": 4,
            "description": "The total number of Timesheets that satisfy the query criteria."
          },
          "value": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSingleTimeSheet"
            }
          },
          "@odata.nextLink": {
            "type": "string",
            "example": "https://api.karbonhq.com/v3/Timesheets?$skip=100",
            "description": "The link to next set of Timesheets. @odata.nextLink field will only appear if you have more than 100 Timesheets."
          }
        }
      },
      "GetIndividualTimeEntry": {
        "description": "A single individual (non-aggregated) time entry",
        "type": "object",
        "required": ["IndividualTimeEntryKey", "TimesheetKey", "EntityKey", "UserKey", "Date", "Minutes"],
        "properties": {
          "IndividualTimeEntryKey": {
            "type": "string",
            "maxLength": 32,
            "example": "a1b2c3d4e5f67890abcdef1234567890",
            "description": "A Karbon-generated GUID key used to uniquely identify the individual time entry (32-character hex string, no hyphens)"
          },
          "TimesheetKey": {
            "type": "string",
            "example": "3TxlnQ4Pd8zJ",
            "description": "A Karbon-generated key used to identify the Timesheet this entry belongs to"
          },
          "EntityKey": {
            "type": "string",
            "example": "3cC1vkWmhGb1",
            "description": "A Karbon-generated key used to identify the entity this time entry is related to"
          },
          "WorkItemKey": {
            "type": "string",
            "example": "3cC1vkWmhGb1",
            "description": "A Karbon-generated key used to identify the Work Item this time entry is related to"
          },
          "ClientKey": {
            "type": "string",
            "example": "ZGNmtYyLm4z",
            "description": "A Karbon-generated key used to identify the Client this time entry is related to"
          },
          "ClientType": {
            "type": "string",
            "example": "Organization",
            "enum": ["Contact", "Organization", "ClientGroup"],
            "description": "The type of Client"
          },
          "UserKey": {
            "type": "string",
            "example": "2xfLMq5PFqb7",
            "description": "A Karbon-generated key used to identify the user who logged this time entry"
          },
          "RoleName": {
            "type": "string",
            "example": "Director",
            "description": "The role of the user for whom the time entry was created"
          },
          "TaskTypeName": {
            "type": "string",
            "example": "Tax Return",
            "description": "The type of task performed by the user"
          },
          "TaskTypeIsBillable": {
            "type": "boolean",
            "example": true,
            "description": "Indicates whether the task type is configured as billable. A value of false means the time entry will not be billed regardless of the entity's billing type or the entry's BilledStatus."
          },
          "Date": {
            "type": "string",
            "format": "date-time",
            "example": "2024-07-04T00:00:00Z",
            "description": "The date on which the time was logged"
          },
          "Minutes": {
            "type": "integer",
            "example": 90,
            "description": "The total time (in minutes) spent on the task"
          },
          "Description": {
            "type": "string",
            "example": "Reviewed draft tax return",
            "description": "Free-form text providing more information about the time entry"
          },
          "HourlyRate": {
            "type": "number",
            "format": "decimal",
            "example": 250,
            "description": "The hourly rate of the user who worked on the task"
          },
          "TotalCost": {
            "type": "number",
            "format": "decimal",
            "example": 375,
            "description": "The total cost of this time entry (Minutes / 60 × HourlyRate)"
          },
          "BilledStatus": {
            "type": "string",
            "example": "Unbilled",
            "enum": ["Unbilled", "Draft", "InterimBilled", "Billed"],
            "description": "An indicator that represents whether the time entry has been or is in the process of being billed"
          },
          "CreatedDate": {
            "type": "string",
            "format": "date-time",
            "example": "2024-07-04T08:00:00Z",
            "description": "The date and time when this time entry was created"
          },
          "ModifiedDate": {
            "type": "string",
            "format": "date-time",
            "example": "2024-07-05T09:30:00Z",
            "description": "The date and time when this time entry was last modified"
          },
          "FeeType": {
            "type": "string",
            "example": "Time and Materials",
            "description": "The fee type associated with this time entry"
          }
        }
      },
      "GetIndividualTimeEntries": {
        "description": "A collection of individual time entries",
        "required": ["value", "@odata.context"],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#IndividualTimeEntries"
          },
          "@odata.count": {
            "type": "integer",
            "format": "int64",
            "example": 42,
            "description": "The total number of individual time entries that satisfy the query criteria. Only present when `$count=true` is specified."
          },
          "value": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetIndividualTimeEntry"
            }
          },
          "@odata.nextLink": {
            "type": "string",
            "example": "https://api.karbonhq.com/v3/IndividualTimeEntries?$count=true&$skip=1000",
            "description": "The link to the next set of individual time entries. @odata.nextLink field will only appear if you have more than 1000 individual time entries."
          }
        }
      },
      "GetSingleUser": {
        "description": "The unique id, name and email address for a single User",
        "required": ["Id", "Name", "EmailAddress"],
        "type": "object",
        "properties": {
          "Id": {
            "type": "string",
            "description": "A Karbon-generated key used to identify the User",
            "example": "4LR9qmR5NQ6T"
          },
          "Name": {
            "type": "string",
            "example": "Joe Min",
            "description": "The name of the User"
          },
          "EmailAddress": {
            "type": "string",
            "example": "joe@samplecompany.com",
            "description": "The email address of the User"
          }
        }
      },
      "GetUserById": {
        "description": "The details for a single User",
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#Users/KarbonService.UserProfileDTO/$entity"
          },
          "@odata.type": {
            "type": "string",
            "description": "The information about Karbon data type in this response.",
            "example": "#KarbonService.UserProfileDTO"
          },
          "Id": {
            "type": "string",
            "description": "The unique Id of the User, this should match the key used in the URL",
            "example": "2bYxtn94ZSdY"
          },
          "Name": {
            "type": "string",
            "description": "The name of the User",
            "example": "Janet Smith"
          },
          "EmailAddress": {
            "type": "string",
            "description": "The email address of the User",
            "example": "janet@example.com"
          },
          "BillableRate": {
            "format": "double",
            "description": "The default hourly rate in at which the user's work is billed at. The currency for `BillableRate` is based on the firm's currency and region found in Karbon under Settings > Account Settings.",
            "minimum": 0,
            "type": "number"
          },
          "CapacityMinutesPerWeek": {
            "type": "integer",
            "description": "The number of billable minutes allocated to the user per week",
            "example": 2400
          },
          "Permissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of the permissions allocated to the User",
            "example": ["User"]
          },
          "Roles": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Name": {
                  "type": "string",
                  "example": "Accountant",
                  "description": "The name of the role"
                },
                "Key": {
                  "type": "string",
                  "example": "4vMnYgz2nx8w",
                  "description": "The unique identifier of the role"
                }
              }
            }
          },
          "Teams": {
            "type": "array",
            "description": "A list of the teams the User is member of",
            "items": {
              "type": "object",
              "properties": {
                "Key": {
                  "type": "string",
                  "example": "2GnB2t83kzjj",
                  "description": "The unique key of the team"
                },
                "Name": {
                  "type": "string",
                  "example": "Accountants",
                  "description": "The name of the team"
                },
                "ParentTeamKey": {
                  "type": ["string", "null"],
                  "example": null,
                  "description": "The unique key of the parent team, if applicable"
                }
              }
            }
          }
        }
      },
      "GetUsers": {
        "description": "A collection of Users",
        "required": ["value", "@odata.context", "@odata.count"],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#Users"
          },
          "@odata.count": {
            "type": "integer",
            "format": "int64",
            "example": 1,
            "description": "The total number of Users that satisfy the query criteria."
          },
          "value": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSingleUser"
            }
          },
          "@odata.nextLink": {
            "type": "string",
            "example": "https://api.karbonhq.com/v3/Users?$skip=100",
            "description": "The link to next set of Users. @odata.nextLink field will only appear if you have more than 100 Users."
          }
        }
      },
      "GetWebhookSubscriptions": {
        "description": "The details of a specific Webhook Subscription",
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response",
            "example": "https://api.karbonhq.com/v3/$metadata#WebhookSubscriptions/$entity"
          },
          "TargetUrl": {
            "type": "string",
            "description": "The URL to your server that is waiting to receive information about the `WebhookType` from Karbon",
            "example": "https://example.com/webhook",
            "maxLength": 2000
          },
          "WebhookType": {
            "type": "string",
            "description": "The type of Karbon entity, which the Webhook Subscription is associated with",
            "example": "Contact",
            "enum": ["Contact", "CustomField", "Work", "Note", "User", "IntegrationTask", "Invoice", "EstimateSummary"]
          }
        }
      },
      "WorkSchedulePUTRequest": {
        "description": "A single Work Schedule",
        "allOf": [
          {
            "type": "object",
            "required": ["WorkScheduleKey"],
            "properties": {
              "WorkScheduleKey": {
                "type": "string",
                "description": "The key of the WorkSchedule, this should match the key used in the URL",
                "example": "Bm6CGxrWp8W"
              }
            }
          },
          {
            "$ref": "#/components/schemas/WorkScheduleRequest"
          }
        ]
      },
      "UpdateWorkSchedule": {
        "description": "The properties that can be updated on a Work Schedule with the PATCH method",
        "type": "object",
        "properties": {
          "ScheduleEndDate": {
            "oneOf": [
              {
                "type": ["string", "null"],
                "example": "2026-12-31T00:00:00Z",
                "format": "date-time"
              },
              {
                "type": ["string", "null"],
                "example": "2026-12-31",
                "format": "date"
              }
            ],
            "description": "The date the Work Schedule should stop producing new Work Items, as an ISO8601 formatted datestamp or timestamp. Pass `null` to clear an existing end date."
          },
          "AssigneeUserKey": {
            "type": ["string", "null"],
            "example": "3VQ8Qrq944NW",
            "description": "The key of an existing Karbon user to assign the Work Schedule's generated Work Items to. Changing this reassigns every incomplete Work Item in the series; completed Work Items are unchanged. Once set, assignee cannot be cleared."
          }
        }
      },
      "WorkScheduleRequest": {
        "description": "A single Work Schedule",
        "required": [
          "CreatedFromWorkItemKey",
          "RecurrenceFrequency",
          "CustomFrequencyMultiple",
          "ScheduleStartDate",
          "ScheduleDueDateMethod",
          "PreventStartEndOnWeekend",
          "InitializeTasksBeforeStartDateUnits",
          "InitializeTasksBeforeStartDateMultiple",
          "WorkItemTitleDefinition"
        ],
        "type": "object",
        "properties": {
          "AssigneeUserKey": {
            "type": ["string", "null"],
            "example": "3VQ8Qrq944NW",
            "description": "The key of an existing Karbon user to assign the Work Schedule's generated Work Items to. On PUT, a null or omitted value leaves the current assignee unchanged. Once set, assignee cannot be cleared. Changing the assignee reassigns every incomplete Work Item in the series; completed Work Items are unchanged."
          },
          "CreatedFromWorkItemKey": {
            "type": "string",
            "description": "The key of the Work Item, which the Work Schedule will be assigned to. This value will be `null`.",
            "example": null
          },
          "RecurrenceFrequency": {
            "type": "string",
            "description": "The unit of time at which this Work Schedule should repeat. Once set, the value of this property can not be changed.",
            "enum": ["Day", "Week", "SemiMonth", "Fortnight", "Month", "Quarter", "Year", "Custom"],
            "example": "Custom"
          },
          "CustomFrequencyUnits": {
            "type": ["string", "null"],
            "description": "The unit of time at which this Work Schedule should repeat. Once set, the value of this property can not be changed.\n\nThis property is only applicable if `RecurrenceFrequency` is set to `Custom`.\n",
            "enum": ["Days", "Weeks", "Months", "Years", null],
            "example": "Days"
          },
          "CustomFrequencyMultiple": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "description": "The multiple of time unit at which this Work Schedule should repeat.  This property is not applicable if `RecurrenceFrequency` is set to `SemiMonth`, `Fortnight`, or `Quarter`.\n",
            "example": 3
          },
          "ScheduleStartDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date at which this Work Schedule should start running",
            "example": "2021-07-01T00:00:00Z"
          },
          "ScheduleEndDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date at which this Work Schedule should stop running\n\nTo set the Work Schedule to run forever, set the value of this property to `null`.",
            "example": "2021-09-01T00:00:00Z"
          },
          "ScheduleDueDateMethod": {
            "type": "string",
            "description": "The method that should be used to count the Due Date for the Work Item",
            "enum": [
              "DaysFromStartDate",
              "DayOfMonth",
              "LastDayOfMonth",
              "DayOfNextMonth",
              "DayOfSubsequentMonth",
              "NoDueDate"
            ],
            "example": "DaysFromStartDate"
          },
          "ScheduleDueDateDays": {
            "type": "integer",
            "format": "int32",
            "description": "The value of the count for the Due Date\n\nThis property is not applicable if `ScheduleDueDateMethod` is set to `LastDayOfMonth` or `NoDueDate`.\n\nExample of usage: <table> <thead>\n<th>ScheduleDueDateMethod</th>\n<th>ScheduleDueDateDays</th>\n<th>Read Due Date as</th>\n</thead> <tbody>\n<tr>\n<td>DaysFromStartDate</td>\n<td>7</td>\n<td>7 days after start date</td>\n</tr>\n<tr>\n<td>DayOfMonth</td>\n<td>7</td>\n<td>7th day of the current month</td>\n</tr>\n<tr>\n<td>LastDayOfMonth</td>\n<td>N/A</td>\n<td>Last day of the current month</td>\n</tr>\n<tr>\n<td>DayOfNextMonth</td>\n<td>7</td>\n<td>7th day of the next month</td>\n</tr>\n<tr>\n<td>NoDueDate</td>\n<td>N/A</td>\n<td>Work has no due date</td>\n</tr>\n</tbody> </table>\n",
            "example": 7
          },
          "ScheduleDueDateMonthMultiple": {
            "type": "integer",
            "format": "int32",
            "description": "The value to denote the number of the months, if the due date is after 2 months.\n\nThis property is only applicable if `ScheduleDueDateMethod` is set to `DayOfSubsequentMonth`.\n\nExample of usage: <table> <thead>\n<th>ScheduleDueDateMethod</th>\n<th>ScheduleDueDateDays</th>\n<th>ScheduleDueDateMonthMultiple</th>\n<th>Read Due Date as</th>\n</thead> <tbody>\n<tr>\n<td>DaysFromStartDate</td>\n<td>7</td>\n<td>3</td>\n<td>7th day of the 3rd month after start date</td>\n</tr>\n</tbody> </table>\n",
            "example": 3
          },
          "PreventStartEndOnWeekend": {
            "type": "boolean",
            "description": "If the value of this property is set to `true`, the Work Item will not start on Weekends.",
            "example": true
          },
          "InitializeBeforeStartDateUnits": {
            "type": "string",
            "description": "You can automatically create a Work Item before its Start date. Use this property to set the unit of delay between Start date and Work Item creation date.\n",
            "enum": ["Days", "Weeks", "Months", "Years"],
            "example": "Days"
          },
          "InitializeBeforeStartDateMultiple": {
            "type": "integer",
            "format": "int32",
            "description": "You can automatically create a Work Item before its Start date. Use this property to set the multiple of delay unit between Start date and Work Item creation date.",
            "example": 3
          },
          "InitializeTasksBeforeStartDateUnits": {
            "type": "string",
            "description": "You can automatically create budget and tasks for a Work Item before its Start date. Use this property to set the unit of delay between Start date and task creation date.",
            "enum": ["Days", "Weeks", "Months", "Years"],
            "example": "Days"
          },
          "InitializeTasksBeforeStartDateMultiple": {
            "type": "integer",
            "format": "int32",
            "description": "You can automatically create budget and tasks for a Work Item before its Start date. Use this property to set the multiple of delay unit between Start date and task creation date.",
            "example": 3
          },
          "WorkItemTitleDefinition": {
            "type": "string",
            "description": "Use this property to define the format of the Work Item title. Karbon offers a series of object that you can use to construct Work Item Title. For more information, see Technical Guide to Work Item Title Definition.\n",
            "example": "[{\"Text\":\"Payroll\",\"Variable\":null,\"Format\":null,\"Offset\":0},{\"Text\":null,\"Variable\":\"RepeatPeriod\",\"Format\":\"DD MMM, YYYY - DD MMM, YYYY\",\"Offset\":0}]"
          }
        }
      },
      "Team": {
        "type": "object",
        "description": "A Karbon team containing a list of member Users and Teams.",
        "required": ["TeamKey", "Name"],
        "properties": {
          "TeamKey": {
            "type": "string",
            "example": "2Nw8tnxwQCVf",
            "description": "A Karbon-generated unique identifier for the Team."
          },
          "Name": { "type": "string", "example": "Audit", "description": "The name of the Team." },
          "Description": {
            "type": ["string", "null"],
            "example": "Audit and assurance team",
            "description": "An optional description of the Team."
          },
          "ParentTeamKey": {
            "type": ["string", "null"],
            "example": null,
            "description": "The key of the parent Team when this Team is a sub-team; otherwise null."
          }
        }
      },
      "TeamMember": {
        "type": "object",
        "description": "A Karbon team member details, either a User or another Team.",
        "properties": {
          "Key": {
            "type": "string",
            "example": "3VQ8Qrq944NW",
            "description": "The key of the member — a UserKey when Type is 'User', or a TeamKey when Type is 'Team'."
          },
          "Type": {
            "type": "string",
            "enum": ["User", "Team"],
            "example": "User",
            "description": "The kind of member: an individual user, or a sub-team."
          },
          "Name": { "type": "string", "example": "Alex Smith", "description": "The display name of the member." }
        }
      },
      "TeamProfile": {
        "description": "A single Team including its members.",
        "allOf": [
          { "$ref": "#/components/schemas/Team" },
          {
            "type": "object",
            "properties": {
              "Members": {
                "type": "array",
                "description": "The Team's members. Active users and sub-teams only; archived users are excluded.",
                "items": { "$ref": "#/components/schemas/TeamMember" }
              }
            }
          }
        ]
      },
      "GetTeams": {
        "type": "object",
        "description": "The API response containing a list of Teams in Karbon.",
        "properties": {
          "@odata.context": { "type": "string", "example": "https://api.karbonhq.com/v3/$metadata#Teams" },
          "@odata.count": { "type": "integer", "example": 1 },
          "@odata.nextLink": { "type": "string", "example": "https://api.karbonhq.com/v3/Teams?$skip=200&$top=200" },
          "value": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/Team" }
          }
        }
      },
      "GetWorkSchedule": {
        "description": "A single Work Schedule",
        "required": [
          "@odata.context",
          "WorkScheduleKey",
          "ClientKey",
          "ClientType",
          "CreatedFromWorkItemKey",
          "RecurrenceFrequency",
          "CustomFrequencyMultiple",
          "ScheduleStartDate",
          "ScheduleDueDateMethod",
          "AssigneeUserKey",
          "PreventStartEndOnWeekend",
          "InitializeTasksBeforeStartDateUnits",
          "InitializeTasksBeforeStartDateMultiple",
          "WorkItemTitleDefinition"
        ],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#WorkSchedules/$entity"
          },
          "WorkScheduleKey": {
            "type": "string",
            "description": "A Karbon-generated unique identifier for the Work Schedule",
            "example": "4yRJNlPnjgtL"
          },
          "ClientKey": {
            "type": "string",
            "description": "A Karbon-generated value used to identify the Client for whom the Work Item is prepared",
            "example": "3xhJX26hfsR8"
          },
          "ClientType": {
            "type": "string",
            "description": "The type of the Client",
            "enum": ["Contact", "Organization", "ClientGroup"],
            "example": "Contact"
          },
          "CreatedFromWorkItemKey": {
            "type": "string",
            "description": "The key of the Work Item, which the Work Schedule will be assigned to. This value will be `null`.",
            "example": null
          },
          "RecurrenceFrequency": {
            "type": "string",
            "description": "The denominator of time period at which this Work Schedule should repeat. Once set, the value of this property can not be changed.",
            "enum": ["Day", "Week", "SemiMonth", "Fortnight", "Month", "Quarter", "Year", "Custom"],
            "example": "Custom"
          },
          "CustomFrequencyUnits": {
            "type": ["string", "null"],
            "description": "The unit of time at which this Work Schedule should repeat. Once set, the value of this property can not be changed.\n\nThis property is only applicable if `RecurrenceFrequency` is set to `Custom`.\n",
            "enum": ["Days", "Weeks", "Months", "Years", null],
            "example": "Days"
          },
          "CustomFrequencyMultiple": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "description": "The multiple of time unit at which this Work Schedule should repeat.  This property is not applicable if `RecurrenceFrequency` is set to `SemiMonth`, `Fortnight`, or `Quarter`.\n",
            "example": 3
          },
          "FrequencyDescription": {
            "type": "string",
            "description": "A description of the Frequency",
            "example": "Every 3 Days"
          },
          "ScheduleStartDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date at which this Work Schedule should start running",
            "example": "2021-07-01T00:00:00Z"
          },
          "ScheduleEndDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date at which this Work Schedule should stop running\n\nTo set the Work Schedule to run forever, set the value of this property to `0001-01-01`.",
            "example": "2021-09-01T00:00:00Z"
          },
          "ScheduleDueDateMethod": {
            "type": "string",
            "description": "The method that should be used to count the Due Date for the Work Item",
            "enum": [
              "DaysFromStartDate",
              "DayOfMonth",
              "LastDayOfMonth",
              "DayOfNextMonth",
              "DayOfSubsequentMonth",
              "NoDueDate"
            ],
            "example": "DaysFromStartDate"
          },
          "ScheduleDueDateDays": {
            "type": "integer",
            "format": "int32",
            "description": "The value of the count for the Due Date\n\nThis property is not applicable if `ScheduleDueDateMethod` is set to `LastDayOfMonth` or `NoDueDate`.\n\nExample of usage:  <table>\n<th>ScheduleDueDateMethod</th>\n<th>ScheduleDueDateDays</th>\n<th>Read Due Date as</th>\n<tr>\n<td>DaysFromStartDate</td>\n<td>7</td>\n<td>7 days after start date</td>\n</tr>\n<tr>\n<td>DayOfMonth</td>\n<td>7</td>\n<td>7th day of the current month</td>\n</tr>\n<tr>\n<td>LastDayOfMonth</td>\n<td>N/A</td>\n<td>Last day of the current month</td>\n</tr>\n<tr>\n<td>DayOfNextMonth</td>\n<td>7</td>\n<td>7th day of the next month</td>\n</tr>\n<tr>\n<td>NoDueDate</td>\n<td>N/A</td>\n<td>Work has no due date</td>\n</tr>\n</table>\n",
            "example": 7
          },
          "ScheduleDueDateMonthMultiple": {
            "type": "integer",
            "format": "int32",
            "description": "The value to denote the number of the months, if the due date is after 2 months.\n\nThis property is only applicable if `ScheduleDueDateMethod` is set to `DayOfSubsequentMonth`.\n\nExample of usage: <table> <thead>\n<th>ScheduleDueDateMethod</th>\n<th>ScheduleDueDateDays</th>\n<th>ScheduleDueDateMonthMultiple</th>\n<th>Read Due Date as</th>\n</thead> <tbody>\n<tr>\n<td>DaysFromStartDate</td>\n<td>7</td>\n<td>3</td>\n<td>7th day of the 3rd month after start\ndate</td>\n</tr>\n</tbody> </table>\n",
            "example": 3
          },
          "AssigneeUserKey": {
            "type": "string",
            "description": "A Karbon-generated unique identifier to indicate the user, whom the Work Item has been assigned to",
            "example": "3VQ8Qrq944NW"
          },
          "WorkItemDescription": {
            "type": "string",
            "description": "A free form text field for more information about the Work Item",
            "example": "Send to Jo for review"
          },
          "PreventStartEndOnWeekend": {
            "type": "boolean",
            "description": "If the value of this property is set to `true`, the Work Item will not start on Weekends.",
            "example": true
          },
          "InitializeBeforeStartDateUnits": {
            "type": "string",
            "description": "You can automatically create a Work Item before its Start date. Use this property to set the unit of delay between Start date and Work Item creation date.\n",
            "enum": ["Days", "Weeks", "Months", "Years"],
            "example": "Days"
          },
          "InitializeBeforeStartDateMultiple": {
            "type": "integer",
            "format": "int32",
            "description": "You can automatically create a Work Item before its Start date. Use this property to set the multiple of delay unit between Start date and Work Item creation date.",
            "example": 3
          },
          "WorkItemTitleDefinition": {
            "type": "string",
            "description": "Use this property to define the format of the Work Item title. Karbon offers a series of object that you can use to construct Work Item Title. For more information, see Technical Guide to Work Item Title Definition.\n",
            "example": "[{\"Text\":\"Payroll \",\"Variable\":null,\"Format\":null,\"Offset\":0},{\"Text\":null,\"Variable\":\"RepeatPeriod\",\"Format\":\"DD MMM, YYYY - DD MMM, YYYY\",\"Offset\":0}]"
          },
          "WorkItemTitleDisplayText": {
            "type": "string",
            "description": "The title of the related Work Item",
            "example": "Payroll 31 Aug - 15 Sep"
          },
          "InitializeTasksBeforeStartDateUnits": {
            "type": "string",
            "description": "You can automatically create budget and tasks for a Work Item before its Start date. Use this property to set the unit of delay between Start date and task creation date.",
            "enum": ["Days", "Weeks", "Months", "Years"],
            "example": "Days"
          },
          "InitializeTasksBeforeStartDateMultiple": {
            "type": "integer",
            "format": "int32",
            "description": "You can automatically create budget and tasks for a Work Item before its Start date. Use this property to set the multiple of delay unit between Start date and task creation date.",
            "example": 3
          }
        }
      },
      "GetSingleWorkTemplate": {
        "description": "A single Work Template",
        "required": [
          "WorkTemplateKey",
          "WorkTypeKey",
          "HasScheduledClientTaskGroups",
          "DraftHasChanges",
          "PublishedDate",
          "NumberOfWorkItemsCreated",
          "DateLastWorkItemCreated",
          "DateModified"
        ],
        "type": "object",
        "properties": {
          "WorkTemplateKey": {
            "type": "string",
            "description": "A Karbon-generated unique identifier for the Work Template",
            "example": "2689zyQfqDzw"
          },
          "Title": {
            "type": "string",
            "description": "The title of the Work Template",
            "example": "Business tax return (Forms 1120/1120S/1065/990)"
          },
          "Description": {
            "type": "string",
            "description": "A free text field to add more information about the Work Template",
            "example": "Set the start date as the date to begin work (e.g. January 1) and the due date is the filing date (e.g. March 15 for partnerships/S Corps; or April 15 for C corps; or typically May 15 for Exempt orgs). Assign the work to the Admin initially. The work is expected to take 28 days."
          },
          "WorkTypeKey": {
            "type": "string",
            "description": "A Karbon-generated unique identifier to denote the Work Type",
            "example": "3GnmdG1vNVzm"
          },
          "HasScheduledClientTaskGroups": {
            "type": "boolean",
            "description": "This property is set to true, if the Work Template has scheduled Client Tasks",
            "example": false
          },
          "EstimatedBudget": {
            "type": ["string", "null"],
            "description": "The estimated budget for the Work Items generated using this Work Template. This property value will be `null`.",
            "example": null
          },
          "EstimatedTime": {
            "type": "string",
            "description": "The estimated time required to complete the Work Items generated using this Work Template. This property value will be `null`.",
            "example": null
          },
          "DraftHasChanges": {
            "type": "boolean",
            "description": "This property is set to true, if the Work Template has unpublished changes",
            "example": false
          },
          "PublishedDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date at which this Work Template was published",
            "example": "2022-07-21T07:14:08Z"
          },
          "NumberOfWorkItemsCreated": {
            "type": "number",
            "format": "int32",
            "description": "The number of Work Items created using this Work Template",
            "example": 2
          },
          "DateLastWorkItemCreated": {
            "type": "string",
            "format": "date-time",
            "description": "The most recent date at which a Work Item was created using this Work Template",
            "example": "2022-07-21T07:14:08Z"
          },
          "DateModified": {
            "type": "string",
            "format": "date-time",
            "description": "The most recent date at which this Work Template was modified",
            "example": "2022-07-23T03:20:54Z"
          },
          "ActorRoles": {
            "type": "array",
            "description": "The user roles who are required to action the Work Items created using this Work Template",
            "items": {
              "type": "object",
              "properties": {
                "ActorKey": {
                  "type": "string",
                  "description": "A Karbon-generated unique identifier for the user role",
                  "example": "249zS1J5Jdkf"
                },
                "ActorName": {
                  "type": "string",
                  "description": "The name of the user role",
                  "example": "Accountant"
                }
              }
            }
          }
        }
      },
      "GetWorkTemplates": {
        "description": "A collection of Work Templates",
        "required": ["value", "@odata.context", "@odata.count"],
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "description": "The information about Karbon controllers generating this response.",
            "example": "https://api.karbonhq.com/v3/$metadata#WorkTemplates"
          },
          "@odata.count": {
            "type": "integer",
            "format": "int64",
            "example": 3,
            "description": "The total number of Work Templates that satisfy the query criteria."
          },
          "value": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GetSingleWorkTemplate"
            }
          },
          "@odata.nextLink": {
            "type": "string",
            "example": "https://api.karbonhq.com/v3/WorkTemplates?$skip=10",
            "description": "The link to next set of Work Templates. @odata.nextLink field will only appear if you have more than 10 Work Templates."
          }
        }
      },
      "ErrorMessages": {
        "description": "The details of an error associated with an API request",
        "required": ["error"],
        "type": "object",
        "properties": {
          "error": {
            "required": ["code", "message"],
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "example": "4004",
                "description": "A Karbon-generated code to identify the error"
              },
              "message": {
                "type": "string",
                "example": "The record could not be found",
                "description": "The error message"
              }
            }
          }
        }
      },
      "EnhancedErrorMessages": {
        "description": "The details of an error associated with an API request",
        "required": ["error"],
        "type": "object",
        "properties": {
          "error": {
            "required": ["code", "message", "details"],
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "description": "A Karbon-generated code to identify the error"
              },
              "message": {
                "type": "string",
                "description": "The error message"
              },
              "details": {
                "type": "array",
                "description": "The details of error message",
                "items": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string",
                      "description": "Error Summary"
                    },
                    "target": {
                      "type": "string",
                      "description": "Property that has encountered issue"
                    },
                    "message": {
                      "type": "string",
                      "description": "The detailed error message"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "RateLimitErrorMessage": {
        "description": "The error message returned when the API rate limit is hit",
        "type": "object",
        "properties": {
          "statusCode": {
            "type": ["string", "null"],
            "description": "The generic HTTP Error code",
            "example": "429"
          },
          "message": {
            "type": "string",
            "description": "The error message",
            "example": "Rate limit is exceeded. Try again in 10 seconds."
          }
        }
      },
      "ManualPaymentNotFoundErrorMessage": {
        "description": "The error message returned when the API rate limit is hit",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "description": "The error object",
            "properties": {
              "code": {
                "type": "string",
                "description": "The error code",
                "example": "4004"
              },
              "message": {
                "type": "string",
                "description": "The error message",
                "example": "Manual payment not found - 2Rz483jmtvzb"
              }
            }
          }
        }
      },
      "ResourceNotFound": {
        "description": "A generic response shown when the API cannot find a requested entity",
        "type": "object",
        "properties": {
          "statusCode": {
            "type": ["string", "null"],
            "description": "The generic HTTP Error code",
            "example": "404"
          },
          "message": {
            "type": "string",
            "description": "The error message",
            "example": "Resource not found"
          }
        }
      },
      "SettingContactType": {
        "description": "The name and unique key for a Contact Type ",
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The name assigned to the Customer Type",
            "example": "Customer"
          },
          "ContactTypeKey": {
            "type": "string",
            "description": "The unique key assigned to the Customer Type",
            "example": "z9p3q3d1e3"
          }
        }
      },
      "SettingWorkStatus": {
        "description": "A Work Status, its child statuses with Name, Type and unique Key",
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The name assigned the Work Status",
            "example": "InProgress"
          },
          "Type": {
            "type": "string",
            "enum": ["Primary", "Secondary"],
            "description": "The type of status, expected to be Primary at this level",
            "example": "Primary"
          },
          "Children": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Name": {
                  "type": "string",
                  "example": "In Review",
                  "description": "The name of the Secondary Work Status"
                },
                "Type": {
                  "type": "string",
                  "enum": ["Primary", "Secondary"],
                  "example": "Secondary",
                  "description": "The type of Work Status, expected to always be Secondary at this level"
                },
                "WorkStatusKey": {
                  "type": "string",
                  "example": "2mwflHRTqsdv",
                  "description": " The unique key of the Work Status"
                }
              }
            }
          }
        }
      },
      "SettingWorkType": {
        "description": "The schema for a single Work Type entry",
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The name assigned to the Work Type",
            "example": "Tax"
          },
          "WorkTypeKey": {
            "type": "string",
            "description": "The unique key assigned to the Work Type",
            "example": "a1b2c3d4e5"
          },
          "AvailableStatuses": {
            "type": "object",
            "properties": {
              "primary": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "The name of the Primary Status",
                  "example": "Active"
                }
              },
              "secondary": {
                "type": "array",
                "items": {
                  "type": "string",
                  "description": "The unique key of the secondary Work Status that can be used with this Work Type",
                  "example": "r2t4p6m72"
                }
              }
            }
          }
        }
      },
      "IntegrationTaskDefinitions": {
        "description": "A list of Integration Task Definitions",
        "type": "object",
        "properties": {
          "@odata.context": {
            "type": "string",
            "format": "uri",
            "example": "https://api.karbonhq.com/v3/$metadata#IntegrationTaskDefinitions"
          },
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IntegrationTaskDefinition"
            }
          }
        }
      },
      "IntegrationTaskDefinition": {
        "description": "A list of Integration Task Definitions",
        "type": "object",
        "properties": {
          "TaskDefinitionKey": {
            "type": "string",
            "example": "cc8628b6-b6cd-42f3-957a-c2cdb9d371a4",
            "description": "The unique ID of the specific Integration Task Definition"
          },
          "TaskName": {
            "type": "string",
            "example": "Example Integration Task",
            "description": "The name of the specific Integration Task Definition"
          },
          "TaskPrimaryLinkUrl": {
            "oneOf": [
              {
                "type": "string",
                "format": "uri",
                "maxLength": 200,
                "example": "https://app.example.com/create"
              },
              {
                "type": "null"
              }
            ],
            "description": "The optional default primary link URL of the specific Integration Task Definition"
          },
          "TaskPrimaryLinkLabel": {
            "oneOf": [
              {
                "type": "string",
                "example": "Create",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ],
            "description": "The optional default label for the primary link URL of the specific Integration Task Definition"
          },
          "TaskSecondaryLinkUrl": {
            "oneOf": [
              {
                "type": "string",
                "format": "uri",
                "maxLength": 200,
                "example": "https://app.example.com/create"
              },
              {
                "type": "null"
              }
            ],
            "description": "The optional default primary link URL of the specific Integration Task Definition"
          },
          "TaskSecondaryLinkLabel": {
            "oneOf": [
              {
                "type": "string",
                "example": "Update",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ],
            "description": "The optional default label for the primary link URL of the specific Integration Task Definition"
          },
          "Locales": {
            "description": "The list of locales and languages the integration task definition is suitable for use with, useful when different definitions are required for different languages or locales",
            "type": "array",
            "items": {
              "type": "string",
              "example": "en-US"
            }
          },
          "AllowedTaskUrlHosts": {
            "description": "The list of allowed hostnames that the primary and secondary link URLs must match",
            "type": "array",
            "items": {
              "type": "string",
              "example": "https://www.example.com"
            }
          }
        }
      },
      "IntegrationTasks": {
        "type": "object",
        "description": "A list of Integration Tasks",
        "properties": {
          "@odata.context": {
            "type": "string",
            "format": "uri",
            "example": "https://api-dev.karbonhq.com/v3/$metadata#IntegrationTasks"
          },
          "@odata.count": {
            "type": "number",
            "format": "int32",
            "example": 3
          },
          "value": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IntegrationTask"
            }
          }
        }
      },
      "IntegrationTask": {
        "description": "A single Integration Task",
        "allOf": [
          {
            "$ref": "#/components/schemas/IntegrationTaskReadOnly"
          },
          {
            "$ref": "#/components/schemas/IntegrationTaskWriteable"
          }
        ]
      },
      "IntegrationTaskReadOnly": {
        "type": "object",
        "description": "The read-only properties of an Integration Task",
        "properties": {
          "CreatedAt": {
            "type": "string",
            "example": "2025-04-16T03:22:19Z"
          },
          "TaskDefinitionKey": {
            "type": "string",
            "example": "b50e1712-2603-4707-b0d9-915050711267",
            "description": "The unique ID of the integration task definition"
          },
          "TaskKey": {
            "type": "string",
            "example": "yqjhtSrxQ6S",
            "description": "The unique key of the specific Integration Task Definition for the associated Karbon account"
          },
          "Locale": {
            "description": "The list of locales and languages the integration task definition is suitable for use with, useful when different definitions are required for different languages or locales",
            "type": "string",
            "example": "en-US"
          },
          "WorkItemKey": {
            "type": "string",
            "example": "3lHtWNMVcTVQ"
          },
          "WorkItemClientKey": {
            "type": "string",
            "example": "4f4gnvcDT2yQ"
          },
          "WorkType": {
            "type": "string",
            "example": "Tax"
          }
        }
      },
      "IntegrationTaskWriteable": {
        "type": "object",
        "description": "The writable properties of an Integration Task",
        "properties": {
          "TaskName": {
            "type": "string",
            "maxLength": 200,
            "example": "Example Integration Task",
            "description": "The name of the specific Integration Task Definition"
          },
          "TaskPrimaryLinkUrl": {
            "oneOf": [
              {
                "type": "string",
                "format": "uri",
                "maxLength": 200,
                "example": "https://app.example.com/create"
              },
              {
                "type": "null"
              }
            ],
            "description": "The optional default primary link URL of the specific Integration Task Definition"
          },
          "TaskPrimaryLinkLabel": {
            "oneOf": [
              {
                "type": "string",
                "example": "Create",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ],
            "description": "The optional default label for the primary link URL of the specific Integration Task Definition"
          },
          "TaskSecondaryLinkUrl": {
            "oneOf": [
              {
                "type": "string",
                "format": "uri",
                "maxLength": 200,
                "example": "https://app.example.com/update"
              },
              {
                "type": "null"
              }
            ],
            "description": "The optional default label for the secondary link URL of the specific Integration Task Definition"
          },
          "TaskSecondaryLinkLabel": {
            "oneOf": [
              {
                "type": "string",
                "example": "Update",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ],
            "description": "The optional default label for the secondary link URL of the specific Integration Task Definition"
          },
          "TaskStatus": {
            "type": "string",
            "maxLength": 50,
            "example": "Viewed by Client"
          },
          "PrimaryStatus": {
            "type": "string",
            "example": "Waiting",
            "enum": ["Planned", "ReadyToStart", "InProgress", "Waiting", "Completed"]
          },
          "TaskDueDate": {
            "type": "string",
            "example": "2025-04-23T00:00:00Z"
          },
          "TaskData": {
            "type": "array",
            "description": "Key/value metadata for the task. The combined serialized content must not exceed 4000 characters.",
            "example": [
              {
                "Key": "Progress",
                "Value": "1/9 items complete"
              }
            ],
            "items": {
              "$ref": "#/components/schemas/IntegrationTaskData"
            }
          }
        }
      },
      "IntegrationTaskData": {
        "type": "object",
        "description": "Optional integration task data key/value pairs",
        "properties": {
          "Key": {
            "type": "string",
            "example": "Last updated"
          },
          "Value": {
            "type": "string",
            "example": "17 hours ago by client"
          }
        }
      },
      "contact-webhook": {
        "description": "The schema for Contact webhook payloads",
        "type": "object",
        "properties": {
          "ResourcePermaKey": {
            "type": "string",
            "description": "The key for the resource that has been created or updated",
            "example": "kCsVf7svWQw",
            "readOnly": true
          },
          "ResourceType": {
            "type": "string",
            "enum": ["Contact"],
            "description": "The type of resource that has been created or updated",
            "example": "Contact",
            "readOnly": true
          },
          "ActionType": {
            "type": "string",
            "description": "The action that triggered the webhook notification to be sent",
            "enum": ["Inserted", "Updated", "Deleted"],
            "example": "Updated",
            "readOnly": true
          },
          "TimeStamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the associated resource was last altered",
            "example": "2024-08-01T21:54:36Z",
            "readOnly": true
          }
        }
      },
      "customfield-webhook": {
        "description": "The schema for Custom Field webhook payloads",
        "type": "object",
        "properties": {
          "ResourcePermaKey": {
            "type": "string",
            "description": "The unique key of the custom field value that was created or updated",
            "example": "kCsVf7svWQw",
            "readOnly": true
          },
          "ResourceType": {
            "type": "string",
            "enum": ["CustomFieldValue"],
            "description": "The type of resource that has been created or updated",
            "example": "CustomFieldValue",
            "readOnly": true
          },
          "ActionType": {
            "type": "string",
            "description": "The action that triggered the webhook notification to be sent",
            "enum": ["Inserted", "Updated"],
            "example": "Updated",
            "readOnly": true
          },
          "TimeStamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the associated resource was last altered",
            "example": "2024-08-01T21:54:36Z",
            "readOnly": true
          },
          "ClientKey": {
            "type": "string",
            "description": "The unique key for the client related to the custom field",
            "example": "44dSBb94ZXlR",
            "readOnly": true
          },
          "ClientType": {
            "type": "string",
            "description": "Indicates whether the custom field value belongs to a Contact or an Organization",
            "enum": ["Contact", "Organization"],
            "example": "Organization",
            "readOnly": true
          }
        }
      },
      "estimate-summary-webhook": {
        "description": "The schema for EstimateSummary webhook payloads",
        "type": "object",
        "properties": {
          "ResourcePermaKey": {
            "type": "string",
            "description": "The key for the resource that has been created or updated",
            "example": "kCsVf7svWQw",
            "readOnly": true
          },
          "ResourceType": {
            "type": "string",
            "enum": ["Estimate"],
            "description": "The type of resource that has been created or updated",
            "example": "Estimate",
            "readOnly": true
          },
          "ActionType": {
            "type": "string",
            "description": "The action that triggered the webhook notification to be sent",
            "enum": ["Updated"],
            "example": "Updated",
            "readOnly": true
          },
          "TimeStamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the associated resource was last altered",
            "example": "2024-08-01T21:54:36Z",
            "readOnly": true
          }
        }
      },
      "integration-task-webhook": {
        "description": "The schema for Integration Task webhook payloads",
        "type": "object",
        "properties": {
          "ResourcePermaKey": {
            "type": "string",
            "description": "The key for the resource that has been created or updated",
            "example": "kCsVf7svWQw",
            "readOnly": true
          },
          "ResourceType": {
            "type": "string",
            "enum": ["IntegrationTask"],
            "description": "The type of resource that has been created or updated",
            "example": "IntegrationTask",
            "readOnly": true
          },
          "ActionType": {
            "type": "string",
            "description": "The action that triggered the webhook notification to be sent",
            "enum": ["Inserted"],
            "example": "Inserted",
            "readOnly": true
          },
          "TimeStamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the associated resource was last altered",
            "example": "2024-08-01T21:54:36Z",
            "readOnly": true
          },
          "ClientKey": {
            "type": "string",
            "description": "The key for the client related to the integration task",
            "example": "44dSBb94ZXlR",
            "readOnly": true
          },
          "ClientType": {
            "type": "string",
            "description": "The type of client related to the integration task ",
            "enum": ["Contact", "Organization"],
            "example": "Organization",
            "readOnly": true
          },
          "WorkItemKey": {
            "type": "string",
            "description": "The key for the Work Item that the Integration Task was added to",
            "example": "qkG7YMW541L",
            "readOnly": true
          }
        }
      },
      "invoice-webhook": {
        "description": "The schema for Invoice webhook payloads",
        "type": "object",
        "properties": {
          "ResourcePermaKey": {
            "type": "string",
            "description": "The key for the resource that has been created or updated",
            "example": "kCsVf7svWQw",
            "readOnly": true
          },
          "ResourceType": {
            "type": "string",
            "enum": ["Invoice"],
            "description": "The type of resource that has been created or updated",
            "example": "Invoice",
            "readOnly": true
          },
          "ActionType": {
            "type": "string",
            "description": "The action that triggered the webhook notification to be sent",
            "enum": ["Updated"],
            "example": "Updated",
            "readOnly": true
          },
          "TimeStamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the associated resource was last altered",
            "example": "2024-08-01T21:54:36Z",
            "readOnly": true
          }
        }
      },
      "note-webhook": {
        "description": "The schema for Note webhook payloads",
        "type": "object",
        "properties": {
          "ResourcePermaKey": {
            "type": "string",
            "description": "The key for the resource that has been created or updated",
            "example": "kCsVf7svWQw",
            "readOnly": true
          },
          "ResourceType": {
            "type": "string",
            "enum": ["Note"],
            "description": "The type of resource that has been created or updated",
            "example": "Note",
            "readOnly": true
          },
          "ActionType": {
            "type": "string",
            "description": "The action that triggered the webhook notification to be sent",
            "enum": ["Inserted", "Updated", "Deleted"],
            "example": "Updated",
            "readOnly": true
          },
          "TimeStamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the associated resource was last altered",
            "example": "2024-08-01T21:54:36Z",
            "readOnly": true
          }
        }
      },
      "note-comment-webhook": {
        "description": "The schema for Note webhook payloads",
        "type": "object",
        "properties": {
          "ResourcePermaKey": {
            "type": "string",
            "description": "The key for the resource that has been created or updated",
            "example": "kCsVf7svWQw",
            "readOnly": true
          },
          "ResourceType": {
            "type": "string",
            "enum": ["NoteComment"],
            "description": "The type of resource that has been created or updated",
            "example": "NoteComment",
            "readOnly": true
          },
          "ActionType": {
            "type": "string",
            "description": "The action that triggered the webhook notification to be sent",
            "enum": ["Inserted", "Updated", "Deleted"],
            "example": "Updated",
            "readOnly": true
          },
          "TimeStamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the associated resource was last altered",
            "example": "2024-08-01T21:54:36Z",
            "readOnly": true
          },
          "ParentEntityType": {
            "type": "string",
            "enum": ["Note"],
            "description": "The resource type of the parent entity the note comment was created on",
            "example": "Note",
            "readOnly": true
          },
          "ParentEntityKey": {
            "type": "string",
            "description": "The key for the parent of the resource that has been created or updated",
            "example": "2TTFWz8L5SSt",
            "readOnly": true
          }
        }
      },
      "user-webhook": {
        "description": "The schema for User webhook payloads",
        "type": "object",
        "properties": {
          "ResourcePermaKey": {
            "type": "string",
            "description": "The key for the resource that has been created",
            "example": "kCsVf7svWQw",
            "readOnly": true
          },
          "ResourceType": {
            "type": "string",
            "enum": ["User"],
            "description": "The type of resource that has been created",
            "example": "User",
            "readOnly": true
          },
          "ActionType": {
            "type": "string",
            "description": "The action that triggered the webhook notification to be sent",
            "enum": ["Inserted"],
            "example": "Inserted",
            "readOnly": true
          },
          "TimeStamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the associated resource was last altered",
            "example": "2024-08-01T21:54:36Z",
            "readOnly": true
          }
        }
      },
      "work-webhook": {
        "description": "The schema for Work webhook payloads",
        "type": "object",
        "properties": {
          "ResourcePermaKey": {
            "type": "string",
            "description": "The key for the resource that has been created or updated",
            "example": "kCsVf7svWQw",
            "readOnly": true
          },
          "ResourceType": {
            "type": "string",
            "enum": ["Work"],
            "description": "The type of resource that has been created or updated",
            "example": "Work",
            "readOnly": true
          },
          "ActionType": {
            "type": "string",
            "description": "The action that triggered the webhook notification to be sent",
            "enum": ["Inserted", "Updated", "Deleted"],
            "example": "Updated",
            "readOnly": true
          },
          "TimeStamp": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the associated resource was last altered",
            "example": "2024-08-01T21:54:36Z",
            "readOnly": true
          }
        }
      }
    },
    "examples": {
      "ResourceNotFound": {
        "description": "A generic response shown when the API cannot find a requested path",
        "value": {
          "statusCode": "404",
          "message": "Resource not found"
        }
      },
      "UnauthorizedAccess": {
        "description": "A generic response shown when the API cannot confirm the authentication creditials provided",
        "value": {
          "error": {
            "statusCode": "401",
            "message": "JWT not present."
          }
        }
      },
      "NotFound": {
        "description": "A generic response shown when the API cannot find a requested entity",
        "value": {
          "error": {
            "code": "4004",
            "message": "Not Found"
          }
        }
      },
      "elongated_5001": {
        "description": "A response shown when the API encounters an exception",
        "value": {
          "error": {
            "code": "5001",
            "message": "Unexpected Internal Error. Please contact Karbon HQ Technical support with API Request Id of 63792674374107265425."
          }
        }
      },
      "Shortened_5001": {
        "description": "A response shown when the API encounters an exception",
        "value": {
          "error": {
            "code": "5001",
            "message": "Internal Error."
          }
        }
      },
      "InvalidAttachmentToken": {
        "description": "The details of an error associated with an API request",
        "value": {
          "error": {
            "code": "4001",
            "message": "Attachment token could not be validated."
          }
        }
      },
      "FileEntityNotFound": {
        "description": "The error returned when a file is not found",
        "value": {
          "error": {
            "code": "4004",
            "message": "File entity is not found for permakey a3bXVhdMHgc9P"
          }
        }
      },
      "Bad_Model": {
        "description": "A response shown when a badly formed Webhook Subscription request is sent",
        "value": {
          "error": {
            "code": "4002",
            "message": "WebhookSubscription model cannot be null."
          }
        }
      },
      "Bad_Model_WorkItem_Incorrect_ClientType": {
        "description": "A response shown when an invalid Client Type is provided when creating or updating a Work Item ",
        "value": {
          "error": {
            "code": "4003",
            "message": "Invalid Model.",
            "details": {
              "code": "InvalidProperty",
              "target": "workItem.ClientType",
              "message": "ClientType must be Contact, Organization, or ClientGroup"
            }
          }
        }
      },
      "Bad_Model_WorkItem_Empty_Property": {
        "description": "A response shown when a required field is not provided when creating or updating a Work Item ",
        "value": {
          "error": {
            "code": "4003",
            "message": "Invalid Model.",
            "details": {
              "code": "InvalidProperty",
              "target": "workItem.<property_name>",
              "message": "The <property_name> field is required."
            }
          }
        }
      },
      "Bad_Model_WorkItem_Incorrect_EmailAddress": {
        "description": "A response shown when an invalid email is provided when creating or updating a Work Item ",
        "value": {
          "error": {
            "code": "4003",
            "message": "Invalid Model.",
            "details": {
              "code": "InvalidProperty",
              "target": "workItem.AssigneeEmailAddress",
              "message": "Assignee Email Address is not a valid Email Address"
            }
          }
        }
      },
      "Bad_Model_WorkItem_Incorrect_ClientKey": {
        "description": "A response shown when an invalid Contact key is provided when creating or updating a Work Item ",
        "value": {
          "error": {
            "code": "4003",
            "message": "Invalid Model.",
            "details": {
              "code": "InvalidProperty",
              "target": "workItem.ClientKey",
              "message": "ClientKey is not a valid Contact Key"
            }
          }
        }
      },
      "Bad_Model_WorkItem_Incorrect_WorkType": {
        "description": "A response shown when a Work Type is provided when creating or updating a Work Item ",
        "value": {
          "error": {
            "code": "4003",
            "message": "Invalid Model.",
            "details": {
              "code": "InvalidProperty",
              "target": "workItem.WorkType",
              "message": "Work Type is not valid"
            }
          }
        }
      },
      "Bad_Model_WorkItem_Incorrect_WorkTemplate_Key": {
        "description": "A response shown when an invalid Work Template is provided when creating a Work Item",
        "value": {
          "error": {
            "code": "4003",
            "message": "Invalid Model.",
            "details": {
              "code": "InvalidProperty",
              "target": "workItem.WorkTemplateKey",
              "message": "WorkTemplateKey is not a valid Work Template"
            }
          }
        }
      },
      "Bad_Model_WorkItem_Client_Not_a_member_of_ClientGroup": {
        "description": "A response shown when an invalid Client Group is provided when creating or updating a Work Item",
        "value": {
          "error": {
            "code": "4003",
            "message": "Invalid Model.",
            "details": {
              "code": "InvalidProperty",
              "target": "workItem.<key>",
              "message": "Cannot assign Related Client Group as Client is not a member of this Group"
            }
          }
        }
      },
      "Bad_Request_Update_Custom_Field_Values": {
        "description": "There is an issue with the data or structure of the request that must be fixed before the request can be processed",
        "value": {
          "error": {
            "code": "4002",
            "message": "Only one value allowed for type Text"
          }
        }
      },
      "Key_Not_Found": {
        "description": "The error returned when a Client Group cannot be found using the requested Client Group Key",
        "value": {
          "error": {
            "code": "4004",
            "message": "No Client Group found for provided key"
          }
        }
      },
      "CommentKey_Not_Found": {
        "description": "The error returned when a Comment cannot be found for the provided Comment Key",
        "value": {
          "error": {
            "code": "4004",
            "message": "Unable to find commentkey: <CommentKey>"
          }
        }
      },
      "Organization_Key_Not_Found_404": {
        "description": "The error returned when an Organization cannot be found for the provided Organization Key",
        "value": {
          "error": {
            "code": "4004",
            "message": "No organization exists with a key of <OrganizationKey>."
          }
        }
      },
      "WorkItem_Key_Not_Found_404": {
        "description": "The error returned when a Work Item cannot be found for the provided Work Item Key",
        "value": {
          "error": {
            "code": "4004",
            "message": "No Work Item found for provided key"
          }
        }
      },
      "WorkSchedule_Key_Not_Found_404": {
        "description": "The error returned when a Work Schedule cannot be found for the provided Work Schedule Key",
        "value": {
          "error": {
            "code": "4004",
            "message": "No Work Schedule found for provided key"
          }
        }
      },
      "WorkTemplate_Key_Not_Found_404": {
        "description": "The error returned when a Work Template cannot be found for the provided Work Template Key",
        "value": {
          "error": {
            "code": "4004",
            "message": "No Work Template found for provided key"
          }
        }
      },
      "ContactKey_Not_Found": {
        "description": "The error returned when a Contact cannot be found for the provided Contact Key",
        "value": {
          "error": {
            "code": "4004",
            "message": "No Contact found for provided key"
          }
        }
      },
      "Timesheet_Key_Not_Found_404": {
        "description": "The error returned when a Timesheet cannot be found for the provided Timesheet Key",
        "value": {
          "error": {
            "code": "4004",
            "message": "No timesheet found for provided key"
          }
        }
      },
      "IndividualTimeEntry_Invalid_Key_400": {
        "description": "The error returned when the provided IndividualTimeEntryKey is not a valid GUID",
        "value": {
          "error": {
            "code": "4002",
            "message": "Provided key must be a valid GUID."
          }
        }
      },
      "IndividualTimeEntry_Key_Not_Found_404": {
        "description": "The error returned when an individual time entry cannot be found for the provided key",
        "value": {
          "error": {
            "code": "4004",
            "message": "No time entry found for provided key"
          }
        }
      },
      "Webhook_Subscription_Key_Not_Found_404": {
        "description": "The error returned when a Webhook Subscription request cannot be fulfilled because there are no Webhook Subscriptions for the provided Webhook Type",
        "value": {
          "error": {
            "code": "4004",
            "message": "No existing webhook subscription for Contact"
          }
        }
      },
      "Webhook_Subscription_Type_Not_Found_404": {
        "description": "The error returned when a Webhook Subscription request cannot be fulfilled because the provided Webhook Type is not one of the valid types",
        "value": {
          "error": {
            "code": "4004",
            "message": "No Webhook Type found for the provided WebhookType input value : <Input type>. Valid WebhookTypes are Contact, Work, Note"
          }
        }
      },
      "BusinessCard_Not_Found": {
        "description": "The error returned when a Business Card request cannot be fulfilled because the provided Business Card Key does not exist",
        "value": {
          "error": {
            "code": "4004",
            "message": "Invalid businessCardPermaKey <BusinessCardKey>"
          }
        }
      },
      "Invoice_Not_Found": {
        "description": "The error returned when an Invoice with the provided ID does not exist",
        "value": {
          "error": {
            "code": "4004",
            "message": "Invoice with key <InvalidInvoiceId> not found."
          }
        }
      },
      "UDI_Not_Found": {
        "description": "The error returned when a Client Group request cannot be fulfilled because the provided User Defined Identifier does not exist",
        "value": {
          "error": {
            "code": "4004",
            "message": "No Client Group found for provided UserDefinedIdentifer"
          }
        }
      },
      "UDI_Not_Found_Contact": {
        "description": "The error returned when a Contact request cannot be fulfilled because the provided User Defined Identifier does not exist",
        "value": {
          "error": {
            "code": "4004",
            "message": "No Contact found for provided UserDefinedIdentifer"
          }
        }
      },
      "UDI_Not_Found_Organization": {
        "description": "The error returned when an Organization request cannot be fulfilled because the provided User Defined Identifier does not exist",
        "value": {
          "error": {
            "code": "4004",
            "message": "No Organization found for provided UserDefinedIdentifer"
          }
        }
      },
      "UDI_Is_Empty": {
        "description": "The error returned when a Client Group request cannot be fulfilled because a User Defined Identifier has not been provided",
        "value": {
          "error": {
            "code": "4002",
            "message": "UserDefinedIdentifier is missing or empty"
          }
        }
      },
      "Missing_Update_Data": {
        "description": "The error returned when the payload for an update is missing or invalid",
        "value": {
          "error": {
            "code": "4005",
            "message": "Required payload data is missing: update"
          }
        }
      },
      "Duplicate_UDI": {
        "description": "The error returned when the request payload includes a User Defined Identifier which is already in use",
        "value": {
          "error": {
            "code": "5001",
            "message": "User defined identifier already in use"
          }
        }
      },
      "Missing_Create_Data": {
        "description": "The error returned when the request payload is missing a required value",
        "value": {
          "error": {
            "code": "4005",
            "message": "Required payload data is missing: <Entity>"
          }
        }
      },
      "Update_Unsupported_Property": {
        "description": "The error returned when attempting to update a property on an Organization other than the FullName",
        "value": {
          "error": {
            "code": "4002",
            "message": "Invalid property to update. Only FullName can be patched"
          }
        }
      },
      "Orderby_Unsupported_Property": {
        "description": "The error returned when an unsupported sort order is used in a request",
        "value": {
          "error": {
            "code": "4002",
            "message": "The property '<Property Name>' cannot be used in the $orderby query option."
          }
        }
      },
      "Unsupported_Property_Filter": {
        "description": "The error returned when an unsupported filter is used in a request",
        "value": {
          "error": {
            "code": "4002",
            "message": "Could not find a property named '<Property Name>' on type 'KarbonService.<KarbonEntity>SummaryDTO'."
          }
        }
      },
      "Unsupported_Logical_Operator": {
        "description": "The error returned when an unsupported operator is used in a request",
        "value": {
          "error": {
            "code": "4002",
            "message": "Logical operator '<Operator Name>' is not allowed. To allow it, set the 'AllowedLogicalOperators' property on EnableQueryAttribute or QueryValidationSettings."
          }
        }
      },
      "Limit_Exceeded_Top": {
        "description": "The error returned when the limit is used in a request exceeds the maximum set for the API",
        "value": {
          "error": {
            "code": "4002",
            "message": "The limit of '100' for Top query has been exceeded. The value from the incoming request is '130'."
          }
        }
      },
      "WorkTemplates_Limit_Exceeded_Top": {
        "description": "The error returned when the limit is used in a request exceeds the maximum set for the API",
        "value": {
          "error": {
            "code": "4002",
            "message": "The limit of '10' for Top query has been exceeded. The value from the incoming request is '130'."
          }
        }
      },
      "Unsupported_option": {
        "description": "The error returned when the query option in a request is not allowed for by the API",
        "value": {
          "error": {
            "code": "4002",
            "message": "Query option '<Option Name>' is not allowed. To allow it, set the 'AllowedQueryOptions' property on EnableQueryAttribute or QueryValidationSettings."
          }
        }
      },
      "Invalid_Property": {
        "description": "The error returned when attempting to use PATCH to update a property that can only be updated as part of a PUT",
        "value": {
          "error": {
            "code": "4002",
            "message": "Invalid property to update. Only <Property name> can be patched."
          }
        }
      },
      "HTTP_Resource_Not_Found": {
        "description": "The error returned when the request path and request method does not match any configured API path and method",
        "value": {
          "error": {
            "code": "4002",
            "message": "No HTTP resource was found that matches the request URI 'http://api.karbonhq.com/v3/<endpoint>"
          }
        }
      },
      "Generic_Key_Not_Found": {
        "description": "The error returned when a Contact with the supplied Contact Key cannot be found",
        "value": {
          "error": {
            "code": "4004",
            "message": "No Contact found for provided key"
          }
        }
      },
      "Unsupported_File_Type": {
        "description": "The error returned when attempting to upload an unsupported File Type",
        "value": {
          "error": {
            "code": "5001",
            "message": "Unsupported file type"
          }
        }
      },
      "Note_Payload_Missing": {
        "description": "The error returned when attempting create a Note, but the request payload is missing or invalid",
        "value": {
          "error": {
            "code": "4005",
            "message": "Required payload data is missing: note"
          }
        }
      },
      "Missing_Assignee_Email_Address": {
        "description": "The error returned when assigning an entity to a user email that does not exist in Karbon",
        "value": {
          "error": {
            "code": "5001",
            "message": "Assignee email address is not an active Karbon user"
          }
        }
      },
      "Invalid_Author_Email_Address": {
        "description": "The error returned when specifying an author on an entity where the author email does not exist as a user in Karbon",
        "value": {
          "error": {
            "code": "5001",
            "message": "Author email address is not an active Karbon user"
          }
        }
      },
      "Missing_Author_Email_Address": {
        "description": "The error returned when specifying an author on an entity where the author email is blank",
        "value": {
          "error": {
            "code": "5001",
            "message": "Author email address must be provided"
          }
        }
      },
      "Missing_CreatedFromWorkItemKey": {
        "description": "The error returned when a required Work Item Key is not provided when creating a new Work Schedule",
        "value": {
          "error": {
            "code": "4002",
            "message": "CreatedFromWorkItemKey not provided."
          }
        }
      },
      "Incorrect_CustomFrequencyMultiple": {
        "description": "The error returned when creating a new Work Schedule with CustomFrequencyMultiple that is negative or not a number",
        "value": {
          "error": {
            "code": "4002",
            "message": "CustomFrequencyMultiple should be greater than 0"
          }
        }
      },
      "Name_or_Email_Is_Empty": {
        "description": "The error returned when a Name and Email Address are not provided when creating a User",
        "value": {
          "error": {
            "code": "5001",
            "message": "Name and Email Address can not be null or empty"
          }
        }
      },
      "Conflict_StaleObjectState": {
        "description": "The error returned when two requests race to update the same resource and the later commit is rejected by optimistic concurrency control.",
        "value": {
          "error": {
            "code": "4020",
            "message": "The resource was modified by another request. Refetch the latest version and retry."
          }
        }
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "description": "The Application ID for your API application, supplied by secure message when your Application is first registered",
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "ApiKeyAuth": {
        "description": "The AccessKey for your API application, found inside the Settings > Connected Apps section in Karbon",
        "type": "apiKey",
        "in": "header",
        "name": "AccessKey"
      }
    }
  }
}
