{
  "openapi": "3.1.1",
  "info": {
    "title": "SCImpExpREST | v1",
    "description": "This is the Speedycraft REST API",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://test-api.speedycraft.devinco.com/"
    }
  ],
  "paths": {
    "/api/Webhooks": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookDefinition"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookDefinition"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookDefinition"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Webhooks/subscription": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookSubscription"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookSubscription"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookSubscription"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSubscription"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSubscription"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSubscription"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscription"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscription"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscription"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSubscription"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSubscription"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookSubscription"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Webhooks/subscription/{webhookSubscriptionId}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "GetWebhookSubscriptionsById",
        "parameters": [
          {
            "name": "webhookSubscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscription"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscription"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSubscription"
                }
              }
            }
          }
        }
      }
    },
    "/api/Webhooks/Id/{webhookSubscriptionId}": {
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "name": "webhookSubscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Assignment": {
      "get": {
        "tags": [
          "Assignment"
        ],
        "summary": "Retrieves a list of assignments based on the provided filter model.",
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of assignments.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignment"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignment"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignment"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Adds a new assignment.",
        "requestBody": {
          "description": "The assignment to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignment"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignment"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The added assignment.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignment"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Assignment"
        ],
        "summary": "Edits an existing assignment.",
        "requestBody": {
          "description": "The assignment to edit.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignment"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignment"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content if successful."
          }
        }
      }
    },
    "/api/Assignment/extended/Id/{assignmentId}": {
      "get": {
        "tags": [
          "Assignment"
        ],
        "summary": "Retrieves an extended assignment with related entities by assignment ID.",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "description": "The ID of the assignment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "IncludeCustomer",
            "in": "query",
            "description": "Include Customer data. Default true",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeEmployee",
            "in": "query",
            "description": "Include Employee data. Default true",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeAssignmentProduct",
            "in": "query",
            "description": "Include Assignment Product data. Default true",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeAssignmentService",
            "in": "query",
            "description": "Include Assignment Service data. Default true",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeAssignmentQualityControl",
            "in": "query",
            "description": "Include Assignment QualityControl data. Default true",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeAttachment",
            "in": "query",
            "description": "Include Attachment data. Default true",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeAttachmentFileData",
            "in": "query",
            "description": "Include Attachment file data Only valid if IncludeAttachment=true. Default false",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeAssignmentNote",
            "in": "query",
            "description": "Include Assignment Note data. Default true",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "IncludeAssignmentObject",
            "in": "query",
            "description": "Include Assignment Object data. Default true",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "An extended assignment with related entities.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AssignmentExtended"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssignmentExtended"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssignmentExtended"
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Assignment"
        ],
        "summary": "Retrieves new or changed assignments based on the provided row version and filter model.",
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "description": "The row version to filter by.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of new or changed assignments.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignment"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignment"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignment"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/Id/{assignmentId}": {
      "get": {
        "tags": [
          "Assignment"
        ],
        "summary": "Retrieves an assignment by its ID.",
        "operationId": "GetByIdAsync",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "description": "The ID of the assignment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The assignment with the specified ID.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignment"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Assignment"
        ],
        "summary": "Deletes an assignment by its ID.",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "description": "The ID of the assignment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content if successful."
          }
        }
      }
    },
    "/api/Assignment/IdExt/{assignmentIdExt}": {
      "get": {
        "tags": [
          "Assignment"
        ],
        "summary": "Retrieves an assignment by its external ID.",
        "parameters": [
          {
            "name": "assignmentIdExt",
            "in": "path",
            "description": "The external ID of the assignment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The assignment with the specified external ID.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignment"
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/{assignmentIdExt}": {
      "delete": {
        "tags": [
          "Assignment"
        ],
        "summary": "Deletes an assignment by its external ID.",
        "parameters": [
          {
            "name": "assignmentIdExt",
            "in": "path",
            "description": "The external ID of the assignment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content if successful."
          }
        }
      }
    },
    "/api/Assignment/Id/{assignmentId}/attachment": {
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Adds a new attachment to an assignment by assignment ID.",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "description": "The ID of the assignment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Record was last updated at this timestamp",
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "AttachmentId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "AttachmentIdext": {
                    "maxLength": 50,
                    "type": "string"
                  },
                  "AttachmentIdtext": {
                    "maxLength": 50,
                    "type": "string"
                  },
                  "AttachmentType": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "Description": {
                    "maxLength": 100,
                    "type": "string"
                  },
                  "FileName": {
                    "maxLength": 250,
                    "type": "string"
                  },
                  "FileSize": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "FileData": {
                    "type": "string",
                    "format": "byte"
                  },
                  "IsOnServer": {
                    "type": "boolean"
                  },
                  "RegTime": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "RegEmployeeId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "RegEmployeeIdext": {
                    "type": "string"
                  },
                  "UpdateInfoExt": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "OwnerId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "OwnerIdext": {
                    "type": "string"
                  },
                  "OwnerUID": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "OwnerType": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "OwnerIdtag": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ShowRecord": {
                    "type": "boolean"
                  },
                  "EdokStatus": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "EdokRegTime": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "DatabaseNumber": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ParentAttachmentId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "RevisionNumber": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ScTimeStamp": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "Processed": {
                    "type": "boolean"
                  },
                  "UID": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "SysRowVersion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int64"
                  },
                  "RowVersion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int64"
                  },
                  "SysDeleted": {
                    "type": "boolean"
                  },
                  "SysCreatedBy": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SysCreatedDateUTC": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "SysUpdatedBy": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SysUpdatedDateUTC": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The added attachment.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/IdExt/{assignmentIdExt}/attachment": {
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Adds a new attachment to an assignment by external assignment ID.",
        "parameters": [
          {
            "name": "assignmentIdExt",
            "in": "path",
            "description": "The external ID of the assignment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Record was last updated at this timestamp",
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "AttachmentId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "AttachmentIdext": {
                    "maxLength": 50,
                    "type": "string"
                  },
                  "AttachmentIdtext": {
                    "maxLength": 50,
                    "type": "string"
                  },
                  "AttachmentType": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "Description": {
                    "maxLength": 100,
                    "type": "string"
                  },
                  "FileName": {
                    "maxLength": 250,
                    "type": "string"
                  },
                  "FileSize": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "FileData": {
                    "type": "string",
                    "format": "byte"
                  },
                  "IsOnServer": {
                    "type": "boolean"
                  },
                  "RegTime": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "RegEmployeeId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "RegEmployeeIdext": {
                    "type": "string"
                  },
                  "UpdateInfoExt": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "OwnerId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "OwnerIdext": {
                    "type": "string"
                  },
                  "OwnerUID": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "OwnerType": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "OwnerIdtag": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ShowRecord": {
                    "type": "boolean"
                  },
                  "EdokStatus": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "EdokRegTime": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "DatabaseNumber": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ParentAttachmentId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "RevisionNumber": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ScTimeStamp": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "Processed": {
                    "type": "boolean"
                  },
                  "UID": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "SysRowVersion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int64"
                  },
                  "RowVersion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int64"
                  },
                  "SysDeleted": {
                    "type": "boolean"
                  },
                  "SysCreatedBy": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SysCreatedDateUTC": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "SysUpdatedBy": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SysUpdatedDateUTC": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The added attachment.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/IdExt/{assignmentIdExt}/assignmentProduct": {
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Adds a new assignment product to an assignment by assignment external ID.",
        "parameters": [
          {
            "name": "assignmentIdExt",
            "in": "path",
            "description": "The external ID of the assignment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The assignment product to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The added assignment product.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/Id/{assignmentId}/assignmentProduct": {
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Add a new Assignment Product to an Assignment (by AssignmentID)",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/IdExt/{assignmentIdExt}/assignmentService": {
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Adds a new assignment service to an assignment by assignment external ID.",
        "parameters": [
          {
            "name": "assignmentIdExt",
            "in": "path",
            "description": "The external ID of the assignment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The assignment service to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The added assignment service.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/Id/{assignmentId}/assignmentService": {
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Adds a new assignment service to an assignment by assignment ID.",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "description": "The ID of the assignment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The assignment service to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The added assignment service.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/IdExt/{assignmentIdExt}/assignmentQualityControl": {
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Adds a new assignment quality control to an assignment by assignment external ID.",
        "parameters": [
          {
            "name": "assignmentIdExt",
            "in": "path",
            "description": "The external ID of the assignment.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The assignment quality control to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The added assignment quality control.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/Id/{assignmentId}/assignmentQualityControl": {
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Adds a new assignment quality control to an assignment by assignment ID.",
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "description": "The ID of the assignment.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The assignment quality control to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              }
            }
          }
        }
      }
    },
    "/api/Assignment/{assignmentId}/participant/add/{employeeId}": {
      "put": {
        "tags": [
          "Assignment"
        ],
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/Assignment/{assignmentId}/participant/remove/{employeeId}": {
      "put": {
        "tags": [
          "Assignment"
        ],
        "parameters": [
          {
            "name": "assignmentId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/AssignmentNote": {
      "get": {
        "tags": [
          "AssignmentNote"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentNote"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentNote"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentNote"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AssignmentNote"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentNote"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentNote"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentNote"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentNote"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentNote"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentNote"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AssignmentNote"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentNote"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentNote"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentNote"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentNote/Id/{assignmentNoteId}": {
      "get": {
        "tags": [
          "AssignmentNote"
        ],
        "operationId": "GetAssignmentNoteByIdAsync",
        "parameters": [
          {
            "name": "assignmentNoteId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentNote"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentNote"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentNote"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentNote/IdExt/{assignmentNoteIdExt}": {
      "get": {
        "tags": [
          "AssignmentNote"
        ],
        "parameters": [
          {
            "name": "assignmentNoteIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentNote"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentNote"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentNote"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentNote/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "AssignmentNote"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentNote"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentNote"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentNote"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentNote/{assignmentNoteIdExt}": {
      "delete": {
        "tags": [
          "AssignmentNote"
        ],
        "parameters": [
          {
            "name": "assignmentNoteIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentObject": {
      "get": {
        "tags": [
          "AssignmentObject"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentObject"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentObject"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentObject"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AssignmentObject"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentObject"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentObject"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentObject"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentObject"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentObject"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentObject"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AssignmentObject"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentObject"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentObject"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentObject"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentObject/Id/{assignmentObjectId}": {
      "get": {
        "tags": [
          "AssignmentObject"
        ],
        "operationId": "GetAssignmentObjectByIdAsync",
        "parameters": [
          {
            "name": "assignmentObjectId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentObject"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentObject"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentObject"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentObject/IdExt/{assignmentObjectIdExt}": {
      "get": {
        "tags": [
          "AssignmentObject"
        ],
        "parameters": [
          {
            "name": "assignmentObjectIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentObject"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentObject"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentObject"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentObject/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "AssignmentObject"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentObject"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentObject"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentObject"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentObject/{assignmentObjectIdExt}": {
      "delete": {
        "tags": [
          "AssignmentObject"
        ],
        "parameters": [
          {
            "name": "assignmentObjectIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentParticipant": {
      "get": {
        "tags": [
          "AssignmentParticipant"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentParticipant"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentParticipant"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentParticipant"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AssignmentParticipant"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentParticipant"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentParticipant"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentParticipant"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentParticipant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentParticipant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentParticipant"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AssignmentParticipant"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentParticipant"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentParticipant"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentParticipant"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentParticipant/Id/{assignmentParticipantId}": {
      "get": {
        "tags": [
          "AssignmentParticipant"
        ],
        "operationId": "GetAssignmentParticipantByIdAsync",
        "parameters": [
          {
            "name": "assignmentParticipantId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentParticipant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentParticipant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentParticipant"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AssignmentParticipant"
        ],
        "parameters": [
          {
            "name": "assignmentParticipantId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentParticipant/IdExt/{assignmentParticipantIdExt}": {
      "get": {
        "tags": [
          "AssignmentParticipant"
        ],
        "parameters": [
          {
            "name": "assignmentParticipantIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentParticipant"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentParticipant"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentParticipant"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentParticipant/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "AssignmentParticipant"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentParticipant"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentParticipant"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentParticipant"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentParticipant/{assignmentParticipantIdExt}": {
      "delete": {
        "tags": [
          "AssignmentParticipant"
        ],
        "parameters": [
          {
            "name": "assignmentParticipantIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentPriority": {
      "get": {
        "tags": [
          "AssignmentPriority"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentPriority"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentPriority"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentPriority"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AssignmentPriority"
        ],
        "summary": "Add a new Assignment Priority. The AssignmentPriorityID is auto-generated, so it should not be provided in the request body. \r\nThe AssignmentPriorityIDExt must be unique if provided, otherwise the request will fail. \r\nIf the request is successful, the response will include the created Assignment Priority with its generated AssignmentPriorityID and a 201 Created status code. \r\nIf there are any warnings during the creation process, they will be included in the response headers under \"Warnings\".",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentPriority"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentPriority"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentPriority"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentPriority"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentPriority"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentPriority"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AssignmentPriority"
        ],
        "summary": "Edit an existing Assignment Priority. Either AssignmentPriorityID or AssignmentPriorityIDExt must be provided to identify the record.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentPriority"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentPriority"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentPriority"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentPriority/Id/{assignmentPriorityId}": {
      "get": {
        "tags": [
          "AssignmentPriority"
        ],
        "operationId": "GetAssignmentPriorityByIdAsync",
        "parameters": [
          {
            "name": "assignmentPriorityId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentPriority"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentPriority"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentPriority"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentPriority/IdExt/{assignmentPriorityIdExt}": {
      "get": {
        "tags": [
          "AssignmentPriority"
        ],
        "parameters": [
          {
            "name": "assignmentPriorityIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentPriority"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentPriority"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentPriority"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentPriority/{assignmentPriorityIdExt}": {
      "delete": {
        "tags": [
          "AssignmentPriority"
        ],
        "summary": "Delete (soft-delete) an Assignment Priority by its IDExt. The record will be hidden from all listings but not permanently removed.",
        "parameters": [
          {
            "name": "assignmentPriorityIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentProduct": {
      "get": {
        "tags": [
          "AssignmentProduct"
        ],
        "summary": "Retrieves a list of Assignment Products based on the provided filter model.",
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of Assignment Products.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentProduct"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentProduct"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentProduct"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AssignmentProduct"
        ],
        "summary": "Edits an existing Assignment Product.",
        "requestBody": {
          "description": "The Assignment Product object with updated data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content if successful, or a bad request if an error occurs."
          }
        }
      },
      "post": {
        "tags": [
          "AssignmentProduct"
        ],
        "summary": "Adds a new Assignment Product.",
        "requestBody": {
          "description": "The Assignment Product object to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentProduct"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created Assignment Product, or a bad request if an error occurs.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentProduct/Id/{assignmentProductId}": {
      "get": {
        "tags": [
          "AssignmentProduct"
        ],
        "summary": "Retrieves an Assignment Product by its ID.",
        "operationId": "GetAssignmentProductByIdAsync",
        "parameters": [
          {
            "name": "assignmentProductId",
            "in": "path",
            "description": "The ID of the Assignment Product.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Assignment Product with the specified ID.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AssignmentProduct"
        ],
        "summary": "Deletes an Assignment Product by its ID.",
        "parameters": [
          {
            "name": "assignmentProductId",
            "in": "path",
            "description": "The ID of the Assignment Product to delete.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content if successful, or a bad request if an error occurs."
          }
        }
      }
    },
    "/api/AssignmentProduct/IdExt/{assignmentProductIdExt}": {
      "get": {
        "tags": [
          "AssignmentProduct"
        ],
        "summary": "Retrieves an Assignment Product by its external ID.",
        "operationId": "GetAssignmentProductByIdExtAsync",
        "parameters": [
          {
            "name": "assignmentProductIdExt",
            "in": "path",
            "description": "The external ID of the Assignment Product.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Assignment Product with the specified external ID.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentProduct/{assignmentProductIdExt}": {
      "delete": {
        "tags": [
          "AssignmentProduct"
        ],
        "summary": "Deletes an Assignment Product by its external ID.",
        "parameters": [
          {
            "name": "assignmentProductIdExt",
            "in": "path",
            "description": "The external ID of the Assignment Product to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content if successful, or a bad request if an error occurs."
          }
        }
      }
    },
    "/api/AssignmentProduct/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "AssignmentProduct"
        ],
        "summary": "Retrieves new or changed Assignment Products based on the provided row version.",
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "description": "The row version to filter new or changed records.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of new or changed Assignment Products.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentProduct"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentProduct"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentProduct"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentProduct/bulkUpsert": {
      "post": {
        "tags": [
          "AssignmentProduct"
        ],
        "summary": "Upserts a bulk of Assignment Products. Maximum 10,000 items are allowed per request.",
        "requestBody": {
          "description": "The list of Assignment Products to upsert.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "A list of upsert results, or a bad request if an error occurs.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssignmentProductUpsertResult"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssignmentProductUpsertResult"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssignmentProductUpsertResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentProduct/upsert": {
      "post": {
        "tags": [
          "AssignmentProduct"
        ],
        "summary": "Inserts or updates one or more Assignment Products. Partial objects are accepted.",
        "requestBody": {
          "description": "The list of Assignment Products to upsert.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblAssignmentProduct"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "A list of upsert results, or a bad request if an error occurs.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssignmentProductUpsertManyResult"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssignmentProductUpsertManyResult"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssignmentProductUpsertManyResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentQualityControl": {
      "get": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Retrieves a list of Assignment Quality Control entities based on the provided filter model.",
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of Assignment Quality Control entities.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentQualityControl"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentQualityControl"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentQualityControl"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Adds a new Assignment Quality Control entity.",
        "requestBody": {
          "description": "The Assignment Quality Control entity to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created Assignment Quality Control entity, or a bad request if an error occurs.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Edits an existing Assignment Quality Control entity.",
        "requestBody": {
          "description": "The Assignment Quality Control entity with updated data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentQualityControl"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content if successful, or a bad request if an error occurs."
          }
        }
      }
    },
    "/api/AssignmentQualityControl/Id/{assignmentQualityControlId}": {
      "get": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Retrieves an Assignment Quality Control entity by its ID.",
        "operationId": "GetAssignmentQualityControlByIdAsync",
        "parameters": [
          {
            "name": "assignmentQualityControlId",
            "in": "path",
            "description": "The ID of the Assignment Quality Control entity.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Assignment Quality Control entity with the specified ID.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Deletes an Assignment Quality Control entity by its ID.",
        "parameters": [
          {
            "name": "assignmentQualityControlId",
            "in": "path",
            "description": "The ID of the Assignment Quality Control entity to delete.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content if successful, or a bad request if an error occurs."
          }
        }
      }
    },
    "/api/AssignmentQualityControl/IdExt/{assignmentQualityControlIdExt}": {
      "get": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Retrieves an Assignment Quality Control entity by its external ID.",
        "operationId": "GetAssignmentQualityControlByIdExtAsync",
        "parameters": [
          {
            "name": "assignmentQualityControlIdExt",
            "in": "path",
            "description": "The external ID of the Assignment Quality Control entity.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Assignment Quality Control entity with the specified external ID.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentQualityControl"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentQualityControl/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Retrieves new or changed Assignment Quality Control entities based on the provided row version.",
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "description": "The row version to filter new or changed records.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of new or changed Assignment Quality Control entities.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentQualityControl"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentQualityControl"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentQualityControl"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentQualityControl/{assignmentQualityControlIdExt}": {
      "delete": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Deletes an Assignment Quality Control entity by its external ID.",
        "parameters": [
          {
            "name": "assignmentQualityControlIdExt",
            "in": "path",
            "description": "The external ID of the Assignment Quality Control entity to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content if successful, or a bad request if an error occurs."
          }
        }
      }
    },
    "/api/AssignmentQualityControl/download/IdExt/{assignmentQualityControlIdExt}": {
      "get": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Downloads the Assignment Quality Control PDF by its external ID.",
        "parameters": [
          {
            "name": "assignmentQualityControlIdExt",
            "in": "path",
            "description": "The external ID of the Assignment Quality Control entity.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The PDF file of the Assignment Quality Control entity.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/FileContentResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentQualityControl/download/Id/{assignmentQualityControlId}": {
      "get": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Downloads the Assignment Quality Control PDF by its ID.",
        "parameters": [
          {
            "name": "assignmentQualityControlId",
            "in": "path",
            "description": "The ID of the Assignment Quality Control entity.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The PDF file of the Assignment Quality Control entity.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/FileContentResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentQualityControl/IdExt/{assignmentQualityControlIdExt}/attachment": {
      "post": {
        "tags": [
          "AssignmentQualityControl"
        ],
        "summary": "Adds a new attachment to the Assignment Quality Control entity.",
        "parameters": [
          {
            "name": "assignmentQualityControlIdExt",
            "in": "path",
            "description": "The external ID of the Assignment Quality Control entity.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Record was last updated at this timestamp",
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "AttachmentId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "AttachmentIdext": {
                    "maxLength": 50,
                    "type": "string"
                  },
                  "AttachmentIdtext": {
                    "maxLength": 50,
                    "type": "string"
                  },
                  "AttachmentType": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "Description": {
                    "maxLength": 100,
                    "type": "string"
                  },
                  "FileName": {
                    "maxLength": 250,
                    "type": "string"
                  },
                  "FileSize": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "FileData": {
                    "type": "string",
                    "format": "byte"
                  },
                  "IsOnServer": {
                    "type": "boolean"
                  },
                  "RegTime": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "RegEmployeeId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "RegEmployeeIdext": {
                    "type": "string"
                  },
                  "UpdateInfoExt": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "OwnerId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "OwnerIdext": {
                    "type": "string"
                  },
                  "OwnerUID": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "OwnerType": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "OwnerIdtag": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ShowRecord": {
                    "type": "boolean"
                  },
                  "EdokStatus": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "EdokRegTime": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "DatabaseNumber": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ParentAttachmentId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "RevisionNumber": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ScTimeStamp": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "Processed": {
                    "type": "boolean"
                  },
                  "UID": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "SysRowVersion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int64"
                  },
                  "RowVersion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int64"
                  },
                  "SysDeleted": {
                    "type": "boolean"
                  },
                  "SysCreatedBy": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SysCreatedDateUTC": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "SysUpdatedBy": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SysUpdatedDateUTC": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created attachment, or a bad request if an error occurs.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentService": {
      "get": {
        "tags": [
          "AssignmentService"
        ],
        "summary": "Retrieves a list of Assignment Services based on the provided filter model.",
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of Assignment Services.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentService"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentService"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentService"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AssignmentService"
        ],
        "summary": "Adds a new Assignment Service.",
        "requestBody": {
          "description": "The Assignment Service to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created Assignment Service.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AssignmentService"
        ],
        "summary": "Edits an existing Assignment Service.",
        "requestBody": {
          "description": "The Assignment Service to edit.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentService"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No content if successful."
          }
        }
      }
    },
    "/api/AssignmentService/Id/{assignmentServiceId}": {
      "get": {
        "tags": [
          "AssignmentService"
        ],
        "summary": "Retrieves an Assignment Service by its ID.",
        "operationId": "GetAssignmentServiceByIdAsync",
        "parameters": [
          {
            "name": "assignmentServiceId",
            "in": "path",
            "description": "The ID of the Assignment Service.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Assignment Service with the specified ID.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AssignmentService"
        ],
        "summary": "Deletes an Assignment Service by its ID.",
        "parameters": [
          {
            "name": "assignmentServiceId",
            "in": "path",
            "description": "The ID of the Assignment Service to delete.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content if successful."
          }
        }
      }
    },
    "/api/AssignmentService/IdExt/{assignmentServiceIdExt}": {
      "get": {
        "tags": [
          "AssignmentService"
        ],
        "summary": "Retrieves an Assignment Service by its external ID.",
        "operationId": "GetAssignmentServiceByIdExtAsync",
        "parameters": [
          {
            "name": "assignmentServiceIdExt",
            "in": "path",
            "description": "The external ID of the Assignment Service.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Assignment Service with the specified external ID.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentService/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "AssignmentService"
        ],
        "summary": "Retrieves new or changed Assignment Services based on the provided row version.",
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "description": "The row version to filter new or changed entities.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of new or changed Assignment Services.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentService"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentService"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentService"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentService/{assignmentServiceIdExt}": {
      "delete": {
        "tags": [
          "AssignmentService"
        ],
        "summary": "Deletes an Assignment Service by its external ID.",
        "parameters": [
          {
            "name": "assignmentServiceIdExt",
            "in": "path",
            "description": "The external ID of the Assignment Service to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No content if successful."
          }
        }
      }
    },
    "/api/AssignmentService/bulkUpsert": {
      "post": {
        "tags": [
          "AssignmentService"
        ],
        "summary": "Upserts a bulk of Assignment Services.",
        "requestBody": {
          "description": "The list of Assignment Services to upsert.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblAssignmentService"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "A list of upsert results.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUpsertResult"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUpsertResult"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUpsertResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentService/tripsToAssignmentServices": {
      "post": {
        "tags": [
          "AssignmentService"
        ],
        "summary": "Converts trips to Assignment Services.",
        "requestBody": {
          "description": "The model containing trip data to convert.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TripToAssignmentServiceModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TripToAssignmentServiceModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TripToAssignmentServiceModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The suggested Assignment Services.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TripToAssignmentService"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TripToAssignmentService"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TripToAssignmentService"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentStatus": {
      "get": {
        "tags": [
          "AssignmentStatus"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentStatus"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentStatus"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentStatus"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AssignmentStatus"
        ],
        "summary": "Add a new Assignment Status. The AssignmentStatusID is auto-generated.\r\nAssignmentStatusIDExt must be unique if provided; the request will fail if it already exists.\r\nReturns the created Assignment Status with its generated AssignmentStatusID and a 201 Created status code.\r\nAny warnings during the creation process will be included in the response headers under \"Warnings\".",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentStatus"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentStatus"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentStatus"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentStatus"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentStatus"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentStatus"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AssignmentStatus"
        ],
        "summary": "Edit an existing Assignment Status. Either AssignmentStatusID or AssignmentStatusIDExt must be provided to identify the record.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentStatus"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentStatus"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentStatus"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentStatus/Id/{assignmentStatusId}": {
      "get": {
        "tags": [
          "AssignmentStatus"
        ],
        "operationId": "GetAssignmentStatusByIdAsync",
        "parameters": [
          {
            "name": "assignmentStatusId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentStatus"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentStatus"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentStatus"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentStatus/IdExt/{assignmentStatusIdExt}": {
      "get": {
        "tags": [
          "AssignmentStatus"
        ],
        "operationId": "GetAssignmentStatusByIdExtAsync",
        "parameters": [
          {
            "name": "assignmentStatusIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentStatus"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentStatus"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentStatus"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentStatus/{assignmentStatusIdExt}": {
      "delete": {
        "tags": [
          "AssignmentStatus"
        ],
        "summary": "Delete (soft-delete) an Assignment Status by its IDExt. The record will be hidden from all listings but not permanently removed.",
        "parameters": [
          {
            "name": "assignmentStatusIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentType": {
      "get": {
        "tags": [
          "AssignmentType"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentType"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentType"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAssignmentType"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AssignmentType"
        ],
        "summary": "Add a new Assignment Type. The AssignmentTypeID is auto-generated.\r\nAssignmentTypeIDExt must be unique if provided; the request will fail if it already exists.\r\nReturns the created Assignment Type with its generated AssignmentTypeID and a 201 Created status code.\r\nAny warnings during the creation process will be included in the response headers under \"Warnings\".",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentType"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentType"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentType"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentType"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentType"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentType"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AssignmentType"
        ],
        "summary": "Edit an existing Assignment Type. Either AssignmentTypeID or AssignmentTypeIDExt must be provided to identify the record.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentType"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentType"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAssignmentType"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/AssignmentType/Id/{assignmentTypeId}": {
      "get": {
        "tags": [
          "AssignmentType"
        ],
        "operationId": "GetAssignmentTypeByIdAsync",
        "parameters": [
          {
            "name": "assignmentTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentType"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentType"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentType"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentType/IdExt/{assignmentTypeIdExt}": {
      "get": {
        "tags": [
          "AssignmentType"
        ],
        "parameters": [
          {
            "name": "assignmentTypeIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentType"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentType"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAssignmentType"
                }
              }
            }
          }
        }
      }
    },
    "/api/AssignmentType/{assignmentTypeIdExt}": {
      "delete": {
        "tags": [
          "AssignmentType"
        ],
        "summary": "Delete (soft-delete) an Assignment Type by its IDExt. The record will be hidden from all listings but not permanently removed.",
        "parameters": [
          {
            "name": "assignmentTypeIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Attachment": {
      "get": {
        "tags": [
          "Attachment"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "includeFileData",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAttachment"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAttachment"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAttachment"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Attachment"
        ],
        "requestBody": {
          "description": "Record was last updated at this timestamp",
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "AttachmentId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "AttachmentIdext": {
                    "maxLength": 50,
                    "type": "string"
                  },
                  "AttachmentIdtext": {
                    "maxLength": 50,
                    "type": "string"
                  },
                  "AttachmentType": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "Description": {
                    "maxLength": 100,
                    "type": "string"
                  },
                  "FileName": {
                    "maxLength": 250,
                    "type": "string"
                  },
                  "FileSize": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "FileData": {
                    "type": "string",
                    "format": "byte"
                  },
                  "IsOnServer": {
                    "type": "boolean"
                  },
                  "RegTime": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "RegEmployeeId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "RegEmployeeIdext": {
                    "type": "string"
                  },
                  "UpdateInfoExt": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "OwnerId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "OwnerIdext": {
                    "type": "string"
                  },
                  "OwnerUID": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "OwnerType": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "OwnerIdtag": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ShowRecord": {
                    "type": "boolean"
                  },
                  "EdokStatus": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "EdokRegTime": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "DatabaseNumber": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ParentAttachmentId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "RevisionNumber": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "ScTimeStamp": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "Processed": {
                    "type": "boolean"
                  },
                  "UID": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "SysRowVersion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int64"
                  },
                  "RowVersion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int64"
                  },
                  "SysDeleted": {
                    "type": "boolean"
                  },
                  "SysCreatedBy": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SysCreatedDateUTC": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "SysUpdatedBy": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SysUpdatedDateUTC": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Attachment"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAttachment"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblAttachment"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblAttachment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Attachment/IdExt/{attachmentIdExt}": {
      "get": {
        "tags": [
          "Attachment"
        ],
        "parameters": [
          {
            "name": "attachmentIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeFileData",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              }
            }
          }
        }
      }
    },
    "/api/Attachment/Id/{attachmentId}": {
      "get": {
        "tags": [
          "Attachment"
        ],
        "operationId": "GetAttachmentByIdAsync",
        "parameters": [
          {
            "name": "attachmentId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "includeFileData",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblAttachment"
                }
              }
            }
          }
        }
      }
    },
    "/api/Attachment/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Attachment"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "includeFileData",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAttachment"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAttachment"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblAttachment"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Attachment/download/IdExt/{attachmentIdExt}": {
      "get": {
        "tags": [
          "Attachment"
        ],
        "parameters": [
          {
            "name": "attachmentIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/FileContentResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/Attachment/download/Id/{attachmentId}": {
      "get": {
        "tags": [
          "Attachment"
        ],
        "parameters": [
          {
            "name": "attachmentId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "$ref": "#/components/schemas/FileContentResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/Attachment/{attachmentIdExt}": {
      "delete": {
        "tags": [
          "Attachment"
        ],
        "parameters": [
          {
            "name": "attachmentIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Customer": {
      "get": {
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomer"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomer"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomer"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Customer"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomer"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomer"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomer"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      },
      "post": {
        "tags": [
          "Customer"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomer"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomer"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomer"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              }
            }
          }
        }
      }
    },
    "/api/Customer/Id/{customerId}": {
      "get": {
        "tags": [
          "Customer"
        ],
        "operationId": "GetCustomerByIdAsync",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Customer/IdExt/{customerIdExt}": {
      "get": {
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "customerIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              }
            }
          }
        }
      }
    },
    "/api/Customer/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomer"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomer"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomer"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Customer/{customerIdExt}": {
      "delete": {
        "tags": [
          "Customer"
        ],
        "parameters": [
          {
            "name": "customerIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Customer/bulkUpsert": {
      "post": {
        "tags": [
          "Customer"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblCustomer"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUpsertResult"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUpsertResult"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUpsertResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/CustomerSite": {
      "get": {
        "tags": [
          "CustomerSite"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomerSite"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomerSite"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomerSite"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CustomerSite"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomerSite"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomerSite"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomerSite"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CustomerSite"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomerSite"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomerSite"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblCustomerSite"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/CustomerSite/Id/{customerSiteId}": {
      "get": {
        "tags": [
          "CustomerSite"
        ],
        "operationId": "GetCustomerSiteByIdAsync",
        "parameters": [
          {
            "name": "customerSiteId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              }
            }
          }
        }
      }
    },
    "/api/CustomerSite/IdExt/{customerSiteIdExt}": {
      "get": {
        "tags": [
          "CustomerSite"
        ],
        "parameters": [
          {
            "name": "customerSiteIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              }
            }
          }
        }
      }
    },
    "/api/CustomerSite/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "CustomerSite"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomerSite"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomerSite"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblCustomerSite"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/CustomerSite/{customerSiteIdExt}": {
      "delete": {
        "tags": [
          "CustomerSite"
        ],
        "parameters": [
          {
            "name": "customerSiteIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/CustomerSite/bulkUpsert": {
      "post": {
        "tags": [
          "CustomerSite"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblCustomerSite"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUpsertResult"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUpsertResult"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUpsertResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Department": {
      "get": {
        "tags": [
          "Department"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDepartment"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDepartment"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDepartment"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Department"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDepartment"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDepartment"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblDepartment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblDepartment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDepartment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDepartment"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Department"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDepartment"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDepartment"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblDepartment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Department/Id/{departmentId}": {
      "get": {
        "tags": [
          "Department"
        ],
        "operationId": "GetDepartmentByIdAsync",
        "parameters": [
          {
            "name": "departmentId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblDepartment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDepartment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDepartment"
                }
              }
            }
          }
        }
      }
    },
    "/api/Department/IdExt/{departmentIdExt}": {
      "get": {
        "tags": [
          "Department"
        ],
        "parameters": [
          {
            "name": "departmentIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblDepartment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDepartment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDepartment"
                }
              }
            }
          }
        }
      }
    },
    "/api/Department/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Department"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDepartment"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDepartment"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDepartment"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Department/{departmentIdExt}": {
      "delete": {
        "tags": [
          "Department"
        ],
        "parameters": [
          {
            "name": "departmentIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Dimension": {
      "get": {
        "tags": [
          "Dimension"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDimension"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDimension"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDimension"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Dimension"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimension"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimension"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimension"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimension"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimension"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimension"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Dimension"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimension"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimension"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimension"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Dimension/Id/{dimensionId}": {
      "get": {
        "tags": [
          "Dimension"
        ],
        "operationId": "GetDimensionByIdAsync",
        "parameters": [
          {
            "name": "dimensionId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimension"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimension"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimension"
                }
              }
            }
          }
        }
      }
    },
    "/api/Dimension/IdExt/{dimensionIdExt}": {
      "get": {
        "tags": [
          "Dimension"
        ],
        "parameters": [
          {
            "name": "dimensionIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimension"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimension"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimension"
                }
              }
            }
          }
        }
      }
    },
    "/api/Dimension/{dimensionIdExt}": {
      "delete": {
        "tags": [
          "Dimension"
        ],
        "parameters": [
          {
            "name": "dimensionIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/DimensionLink": {
      "get": {
        "tags": [
          "DimensionLink"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDimensionLink"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDimensionLink"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDimensionLink"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "DimensionLink"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimensionLink"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimensionLink"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimensionLink"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimensionLink"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimensionLink"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimensionLink"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "DimensionLink"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimensionLink"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimensionLink"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblDimensionLink"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/DimensionLink/Id/{dimensionLinkId}": {
      "get": {
        "tags": [
          "DimensionLink"
        ],
        "operationId": "GetDimensionLinkByIdAsync",
        "parameters": [
          {
            "name": "dimensionLinkId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimensionLink"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimensionLink"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimensionLink"
                }
              }
            }
          }
        }
      }
    },
    "/api/DimensionLink/IdExt/{dimensionLinkIdExt}": {
      "get": {
        "tags": [
          "DimensionLink"
        ],
        "parameters": [
          {
            "name": "dimensionLinkIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimensionLink"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimensionLink"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblDimensionLink"
                }
              }
            }
          }
        }
      }
    },
    "/api/DimensionLink/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "DimensionLink"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDimensionLink"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDimensionLink"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblDimensionLink"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/DimensionLink/{dimensionLinkIdExt}": {
      "delete": {
        "tags": [
          "DimensionLink"
        ],
        "parameters": [
          {
            "name": "dimensionLinkIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Employee": {
      "get": {
        "tags": [
          "Employee"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblEmployee"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblEmployee"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblEmployee"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employee"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblEmployee"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblEmployee"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblEmployee"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      },
      "post": {
        "tags": [
          "Employee"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblEmployee"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblEmployee"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblEmployee"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblEmployee"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblEmployee"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblEmployee"
                }
              }
            }
          }
        }
      }
    },
    "/api/Employee/Id/{employeeId}": {
      "get": {
        "tags": [
          "Employee"
        ],
        "operationId": "GetEmpById",
        "parameters": [
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblEmployee"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblEmployee"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblEmployee"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Employee"
        ],
        "parameters": [
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Employee/IdExt/{employeeIdExt}": {
      "get": {
        "tags": [
          "Employee"
        ],
        "parameters": [
          {
            "name": "employeeIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblEmployee"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblEmployee"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblEmployee"
                }
              }
            }
          }
        }
      }
    },
    "/api/Employee/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Employee"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblEmployee"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblEmployee"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblEmployee"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Employee/{employeeIdExt}": {
      "delete": {
        "tags": [
          "Employee"
        ],
        "parameters": [
          {
            "name": "employeeIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Employee/{employeeId}/signature": {
      "delete": {
        "tags": [
          "Employee"
        ],
        "parameters": [
          {
            "name": "employeeId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/error-local-development": {
      "get": {
        "tags": [
          "Error"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/error": {
      "get": {
        "tags": [
          "Error"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/applicationstate/upsert": {
      "post": {
        "tags": [
          "General"
        ],
        "summary": "Upserts the application state.",
        "requestBody": {
          "description": "The application state key/value model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationStateModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationStateModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ApplicationStateModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns an IActionResult indicating the result of the operation."
          }
        }
      }
    },
    "/api/applicationstate/{key}": {
      "get": {
        "tags": [
          "General"
        ],
        "summary": "Retrieves the application state for a given key.",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "description": "The key of the application state to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns an IActionResult containing the application state if found, otherwise a BadRequest result.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationStateModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationStateModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationStateModel"
                }
              }
            }
          }
        }
      }
    },
    "/api/getfundamentals": {
      "post": {
        "tags": [
          "General"
        ],
        "summary": "GetFundamentals is a lightweight way to check several entities for changes in RowVersion / Max ID via the endpoint GetFundamentals.",
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiFundamentalsRequestModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiFundamentalsRequestModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ApiFundamentalsRequestModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object"
                }
              },
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/getLoggedInUserInfo": {
      "get": {
        "tags": [
          "General"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object"
                }
              },
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/Location/positionToAddress": {
      "get": {
        "tags": [
          "Location"
        ],
        "summary": "Converts latitude and longitude to an address using NorkartService.",
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "description": "The latitude of the location.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "double"
            }
          },
          {
            "name": "lon",
            "in": "query",
            "description": "The longitude of the location.",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
              "type": [
                "number",
                "string"
              ],
              "format": "double"
            }
          },
          {
            "name": "responseSize",
            "in": "query",
            "description": "The number of results to return (default is 1).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of address details for the given coordinates."
          }
        }
      }
    },
    "/api/Location/addressToPosition": {
      "get": {
        "tags": [
          "Location"
        ],
        "summary": "Converts an address to latitude and longitude using NorkartService.",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "description": "The address to convert.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "responseSize",
            "in": "query",
            "description": "The number of results to return (default is 1).",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32",
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of position details for the given address."
          }
        }
      }
    },
    "/api/Message": {
      "get": {
        "tags": [
          "Message"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "includeFileData",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblMessage"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblMessage"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblMessage"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Message"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblMessage"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblMessage"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblMessage"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblMessage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblMessage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblMessage"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Message"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblMessage"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblMessage"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblMessage"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Message/Id/{messageId}": {
      "get": {
        "tags": [
          "Message"
        ],
        "operationId": "GetMessageByIdAsync",
        "parameters": [
          {
            "name": "messageId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblMessage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblMessage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblMessage"
                }
              }
            }
          }
        }
      }
    },
    "/api/Message/IdExt/{messageIdExt}": {
      "get": {
        "tags": [
          "Message"
        ],
        "parameters": [
          {
            "name": "messageIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblMessage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblMessage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblMessage"
                }
              }
            }
          }
        }
      }
    },
    "/api/Message/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Message"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblMessage"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblMessage"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblMessage"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Message/{messageIdExt}": {
      "delete": {
        "tags": [
          "Message"
        ],
        "parameters": [
          {
            "name": "messageIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/MobileDevice": {
      "get": {
        "tags": [
          "MobileDevice"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "includeImageData",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPocketPc"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPocketPc"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPocketPc"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "MobileDevice"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblPocketPc"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblPocketPc"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblPocketPc"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblPocketPc"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPocketPc"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPocketPc"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "MobileDevice"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblPocketPc"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblPocketPc"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblPocketPc"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/MobileDevice/Id/{pocketPcId}": {
      "get": {
        "tags": [
          "MobileDevice"
        ],
        "operationId": "GetMobileDeviceByIdAsync",
        "parameters": [
          {
            "name": "pocketPcId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblPocketPc"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPocketPc"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPocketPc"
                }
              }
            }
          }
        }
      }
    },
    "/api/MobileDevice/Serial/{serialNumber}": {
      "get": {
        "tags": [
          "MobileDevice"
        ],
        "parameters": [
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblPocketPc"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPocketPc"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPocketPc"
                }
              }
            }
          }
        }
      }
    },
    "/api/MobileDevice/{serialNumber}": {
      "delete": {
        "tags": [
          "MobileDevice"
        ],
        "parameters": [
          {
            "name": "serialNumber",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Object": {
      "get": {
        "tags": [
          "Object"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblObject"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblObject"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblObject"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Object"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblObject"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblObject"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblObject"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblObject"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObject"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObject"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Object"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblObject"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblObject"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblObject"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Object/Id/{objectId}": {
      "get": {
        "tags": [
          "Object"
        ],
        "operationId": "GetObjectByIdAsync",
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblObject"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObject"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObject"
                }
              }
            }
          }
        }
      }
    },
    "/api/Object/IdExt/{objectIdExt}": {
      "get": {
        "tags": [
          "Object"
        ],
        "parameters": [
          {
            "name": "objectIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblObject"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObject"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObject"
                }
              }
            }
          }
        }
      }
    },
    "/api/Object/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Object"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblObject"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblObject"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblObject"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Object/{objectIdExt}": {
      "delete": {
        "tags": [
          "Object"
        ],
        "parameters": [
          {
            "name": "objectIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/ObjectType": {
      "get": {
        "tags": [
          "ObjectType"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblObjectType"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblObjectType"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblObjectType"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ObjectType"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblObjectType"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblObjectType"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblObjectType"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblObjectType"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObjectType"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObjectType"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ObjectType"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblObjectType"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblObjectType"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblObjectType"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/ObjectType/Id/{objectTypeId}": {
      "get": {
        "tags": [
          "ObjectType"
        ],
        "operationId": "GetObjectTypeByIdAsync",
        "parameters": [
          {
            "name": "objectTypeId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblObjectType"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObjectType"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObjectType"
                }
              }
            }
          }
        }
      }
    },
    "/api/ObjectType/IdExt/{objectTypeIdExt}": {
      "get": {
        "tags": [
          "ObjectType"
        ],
        "parameters": [
          {
            "name": "objectTypeIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblObjectType"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObjectType"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblObjectType"
                }
              }
            }
          }
        }
      }
    },
    "/api/ObjectType/{objectTypeIdExt}": {
      "delete": {
        "tags": [
          "ObjectType"
        ],
        "parameters": [
          {
            "name": "objectTypeIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/OrderAuto": {
      "get": {
        "tags": [
          "OrderAuto"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderAuto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderAuto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderAuto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "OrderAuto"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderAuto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderAuto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderAuto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderAuto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderAuto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderAuto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "OrderAuto"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderAuto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderAuto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderAuto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/OrderAuto/Id/{orderAutoId}": {
      "get": {
        "tags": [
          "OrderAuto"
        ],
        "operationId": "GetOrderAutoByIdAsync",
        "parameters": [
          {
            "name": "orderAutoId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderAuto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderAuto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderAuto"
                }
              }
            }
          }
        }
      }
    },
    "/api/OrderAuto/IdExt/{orderAutoIdExt}": {
      "get": {
        "tags": [
          "OrderAuto"
        ],
        "parameters": [
          {
            "name": "orderAutoIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderAuto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderAuto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderAuto"
                }
              }
            }
          }
        }
      }
    },
    "/api/OrderAuto/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "OrderAuto"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderAuto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderAuto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderAuto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/OrderAuto/{orderAutoIdExt}": {
      "delete": {
        "tags": [
          "OrderAuto"
        ],
        "parameters": [
          {
            "name": "orderAutoIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/OrderAuto/id/{orderAutoId}": {
      "delete": {
        "tags": [
          "OrderAuto"
        ],
        "parameters": [
          {
            "name": "orderAutoId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Order": {
      "get": {
        "tags": [
          "Order"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrder"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrder"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrder"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Order"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrder"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrder"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrder"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrder"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrder"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrder"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Order"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrder"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrder"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrder"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Order/Id/{orderId}": {
      "get": {
        "tags": [
          "Order"
        ],
        "operationId": "GetOrderByIdAsync",
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrder"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrder"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrder"
                }
              }
            }
          }
        }
      }
    },
    "/api/Order/IdExt/{orderIdExt}": {
      "get": {
        "tags": [
          "Order"
        ],
        "parameters": [
          {
            "name": "orderIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrder"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrder"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrder"
                }
              }
            }
          }
        }
      }
    },
    "/api/Order/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Order"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrder"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrder"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrder"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Order/{orderIdExt}": {
      "delete": {
        "tags": [
          "Order"
        ],
        "parameters": [
          {
            "name": "orderIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/OrderItem": {
      "get": {
        "tags": [
          "OrderItem"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderItem"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "OrderItem"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderItem"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderItem"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderItem"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderItem"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderItem"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderItem"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "OrderItem"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderItem"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderItem"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblOrderItem"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/OrderItem/Id/{orderItemId}": {
      "get": {
        "tags": [
          "OrderItem"
        ],
        "operationId": "GetOrderItemByIdAsync",
        "parameters": [
          {
            "name": "orderItemId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderItem"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderItem"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderItem"
                }
              }
            }
          }
        }
      }
    },
    "/api/OrderItem/IdExt/{orderItemIdExt}": {
      "get": {
        "tags": [
          "OrderItem"
        ],
        "parameters": [
          {
            "name": "orderItemIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderItem"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderItem"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblOrderItem"
                }
              }
            }
          }
        }
      }
    },
    "/api/OrderItem/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "OrderItem"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblOrderItem"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/OrderItem/{orderItemIdExt}": {
      "delete": {
        "tags": [
          "OrderItem"
        ],
        "parameters": [
          {
            "name": "orderItemIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Permission": {
      "get": {
        "tags": [
          "Permission"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPermission"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPermission"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPermission"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Permission/Id/{permissionId}": {
      "get": {
        "tags": [
          "Permission"
        ],
        "operationId": "GetPermissionByIdAsync",
        "parameters": [
          {
            "name": "permissionId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblPermission"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPermission"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPermission"
                }
              }
            }
          }
        }
      }
    },
    "/api/Permission/IdExt/{permissionIdExt}": {
      "get": {
        "tags": [
          "Permission"
        ],
        "parameters": [
          {
            "name": "permissionIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblPermission"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPermission"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPermission"
                }
              }
            }
          }
        }
      }
    },
    "/api/Permission/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Permission"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPermission"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPermission"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPermission"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Position": {
      "get": {
        "tags": [
          "Position"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPosition"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPosition"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPosition"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Position"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblPosition"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblPosition"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblPosition"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblPosition"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPosition"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPosition"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Position"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblPosition"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblPosition"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblPosition"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Position/Id/{positionId}": {
      "get": {
        "tags": [
          "Position"
        ],
        "operationId": "GetPositionByIdAsync",
        "parameters": [
          {
            "name": "positionId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblPosition"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPosition"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPosition"
                }
              }
            }
          }
        }
      }
    },
    "/api/Position/IdExt/{positionIdExt}": {
      "get": {
        "tags": [
          "Position"
        ],
        "parameters": [
          {
            "name": "positionIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblPosition"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPosition"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblPosition"
                }
              }
            }
          }
        }
      }
    },
    "/api/Position/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Position"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPosition"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPosition"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblPosition"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Position/{positionIdExt}": {
      "delete": {
        "tags": [
          "Position"
        ],
        "parameters": [
          {
            "name": "positionIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Position/id/{positionId}": {
      "delete": {
        "tags": [
          "Position"
        ],
        "parameters": [
          {
            "name": "positionId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Product": {
      "get": {
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblProduct"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblProduct"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblProduct"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Product"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProduct"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProduct"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblProduct"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Product"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProduct"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProduct"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblProduct"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Product/Id/{productId}": {
      "get": {
        "tags": [
          "Product"
        ],
        "operationId": "GetProductByIdAsync",
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              }
            }
          }
        }
      }
    },
    "/api/Product/IdExt/{productIdExt}": {
      "get": {
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "productIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              }
            }
          }
        }
      }
    },
    "/api/Product/bulkUpsert": {
      "post": {
        "tags": [
          "Product"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblProduct"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductUpsertResult"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductUpsertResult"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductUpsertResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Product/{productIdExt}": {
      "delete": {
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "productIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Product/{productId}/favorite/{isFavorite}": {
      "put": {
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "isFavorite",
            "in": "path",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/ProductSupplier": {
      "get": {
        "tags": [
          "ProductSupplier"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblProductSupplier"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblProductSupplier"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblProductSupplier"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ProductSupplier"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProductSupplier"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProductSupplier"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblProductSupplier"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ProductSupplier"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProductSupplier"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProductSupplier"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblProductSupplier"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/ProductSupplier/Id/{productSupplierId}": {
      "get": {
        "tags": [
          "ProductSupplier"
        ],
        "operationId": "GetProductSupplierByIdAsync",
        "parameters": [
          {
            "name": "productSupplierId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              }
            }
          }
        }
      }
    },
    "/api/ProductSupplier/IdExt/{productSupplierIdExt}": {
      "get": {
        "tags": [
          "ProductSupplier"
        ],
        "parameters": [
          {
            "name": "productSupplierIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              }
            }
          }
        }
      }
    },
    "/api/ProductSupplier/bulkUpsert": {
      "post": {
        "tags": [
          "ProductSupplier"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblProductSupplier"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductSupplierUpsertResult"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductSupplierUpsertResult"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductSupplierUpsertResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/ProductSupplier/{productSupplierIdExt}": {
      "delete": {
        "tags": [
          "ProductSupplier"
        ],
        "parameters": [
          {
            "name": "productSupplierIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Project": {
      "get": {
        "tags": [
          "Project"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblProject"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblProject"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblProject"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Project"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProject"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProject"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblProject"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      },
      "post": {
        "tags": [
          "Project"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProject"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblProject"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblProject"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblProject"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProject"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProject"
                }
              }
            }
          }
        }
      }
    },
    "/api/Project/Id/{projectId}": {
      "get": {
        "tags": [
          "Project"
        ],
        "operationId": "GetProjectByIdAsync",
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblProject"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProject"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblProject"
                }
              }
            }
          }
        }
      }
    },
    "/api/Project/{projectId}": {
      "delete": {
        "tags": [
          "Project"
        ],
        "parameters": [
          {
            "name": "projectId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/QualityControl": {
      "get": {
        "tags": [
          "QualityControl"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "includeImageData",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblQualityControl"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblQualityControl"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblQualityControl"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "QualityControl"
        ],
        "requestBody": {
          "description": "Record was last updated at this timestamp",
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "QualityControlId": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "QualityControlIdext": {
                    "maxLength": 50,
                    "type": "string"
                  },
                  "QualityControlDescription": {
                    "maxLength": 200,
                    "type": "string"
                  },
                  "QualityControlQuestion": {
                    "type": "string"
                  },
                  "LogoPicture": {
                    "type": "string",
                    "format": "byte"
                  },
                  "QualityControlWordTemplateFileName": {
                    "type": "string"
                  },
                  "QualityControlWordTemplate": {
                    "type": "string",
                    "format": "byte"
                  },
                  "QualityControlWordTemplateAutoSavePath": {
                    "type": "string"
                  },
                  "OnlyEmployeeInCharge": {
                    "type": "boolean"
                  },
                  "ShowRecord": {
                    "type": "boolean"
                  },
                  "UpdateInfoExt": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "SchemaType": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "QualityControlReport": {
                    "type": "string",
                    "format": "byte"
                  },
                  "Guid": {
                    "maxLength": 50,
                    "type": "string"
                  },
                  "Image1": {
                    "type": "string",
                    "format": "byte"
                  },
                  "Image2": {
                    "type": "string",
                    "format": "byte"
                  },
                  "Image3": {
                    "type": "string",
                    "format": "byte"
                  },
                  "FormatVersion": {
                    "maxLength": 5,
                    "type": "string"
                  },
                  "Xmlversion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
                    "type": [
                      "number",
                      "string"
                    ],
                    "format": "double"
                  },
                  "Rptversion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
                    "type": [
                      "number",
                      "string"
                    ],
                    "format": "double"
                  },
                  "QualityControlActivated": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "Activated": {
                    "type": "boolean"
                  },
                  "Personal": {
                    "type": "boolean"
                  },
                  "WriteProtection": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "ReportType": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "uint8"
                  },
                  "UID": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "RowVersion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int64"
                  },
                  "SysRowVersion": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int64"
                  },
                  "SysDeleted": {
                    "type": "boolean"
                  },
                  "SysCreatedBy": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SysCreatedDateUTC": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "SysUpdatedBy": {
                    "pattern": "^-?(?:0|[1-9]\\d*)$",
                    "type": [
                      "integer",
                      "string"
                    ],
                    "format": "int32"
                  },
                  "SysUpdatedDateUTC": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblQualityControl"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblQualityControl"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblQualityControl"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "QualityControl"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblQualityControl"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblQualityControl"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblQualityControl"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/QualityControl/Id/{qualityControlId}": {
      "get": {
        "tags": [
          "QualityControl"
        ],
        "operationId": "GetQualityControlByIdAsync",
        "parameters": [
          {
            "name": "qualityControlId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "includeImageData",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblQualityControl"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblQualityControl"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblQualityControl"
                }
              }
            }
          }
        }
      }
    },
    "/api/QualityControl/IdExt/{qualityControlIdExt}": {
      "get": {
        "tags": [
          "QualityControl"
        ],
        "parameters": [
          {
            "name": "qualityControlIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeImageData",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblQualityControl"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblQualityControl"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblQualityControl"
                }
              }
            }
          }
        }
      }
    },
    "/api/QualityControl/{qualityControlIdExt}": {
      "delete": {
        "tags": [
          "QualityControl"
        ],
        "parameters": [
          {
            "name": "qualityControlIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/QualityControl/admin/schema/downloadpreview/{schemaId}": {
      "get": {
        "tags": [
          "QualityControl"
        ],
        "parameters": [
          {
            "name": "schemaId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Appointment/GetAppointments": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "startDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "assignmentId",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetAppointmentDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetAppointmentDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetAppointmentDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetAppointmentsRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetAppointmentsRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetAppointmentsRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetAppointmentsResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetAppointmentsResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetAppointmentsResponseDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Appointment/GetAppointmentLog/{appointmentId}": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "appointmentId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerAppointmentLogDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerAppointmentLogDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerAppointmentLogDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Appointment/CheckUpdates/{lastCheckedTime}": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastCheckedTime",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Appointment/Upsert": {
      "post": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AppointmentUpsertRequestDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AppointmentUpsertRequestDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AppointmentUpsertRequestDto"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetAppointmentDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetAppointmentDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetAppointmentDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Assignment/Status": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Assignment/Type": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Assignment/GetAssignments": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "Search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "IncludeParticipants",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "AssignmentID",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetAssignmentsDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetAssignmentsDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetAssignmentsDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Employee/GetEmployees": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetEmployeesDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetEmployeesDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetEmployeesDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetEmployeesRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetEmployeesRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetEmployeesRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetEmployeesResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetEmployeesResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetEmployeesResponseDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Department/GetDepartments": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetDepartmentsDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetDepartmentsDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetDepartmentsDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Settings/GetSettings": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PlannerGetSettingsDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlannerGetSettingsDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlannerGetSettingsDto"
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Settings/Upsert": {
      "post": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            },
            "text/json": {
              "schema": {
                "type": "object"
              }
            },
            "application/*+json": {
              "schema": {
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/v1/client/{clientId}/Team/GetTeams": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetTeamsDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetTeamsDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlannerGetTeamsDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/Team/Upsert": {
      "post": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TeamUpsertRequestDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TeamUpsertRequestDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TeamUpsertRequestDto"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeamUpsertRequestDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeamUpsertRequestDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeamUpsertRequestDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/getrows": {
      "post": {
        "tags": [
          "ResourcePlanner"
        ],
        "summary": "[BETA]",
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The ag-grid IServerSideGetRowsRequest model/interface",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetRowsRequestModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetRowsRequestModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetRowsRequestModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "An object with data, lastRow and totalCount properties",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object"
                }
              },
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/{clientId}/keyvalue": {
      "post": {
        "tags": [
          "ResourcePlanner"
        ],
        "parameters": [
          {
            "name": "clientId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/client/userClients": {
      "get": {
        "tags": [
          "ResourcePlanner"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Role": {
      "get": {
        "tags": [
          "Role"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRole"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRole"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRole"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Role"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblRole"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblRole"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblRole"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblRole"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblRole"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblRole"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Role"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblRole"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblRole"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblRole"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Role/Id/{roleId}": {
      "get": {
        "tags": [
          "Role"
        ],
        "operationId": "GetRoleByIdAsync",
        "parameters": [
          {
            "name": "roleId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblRole"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblRole"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblRole"
                }
              }
            }
          }
        }
      }
    },
    "/api/Role/IdExt/{roleIdExt}": {
      "get": {
        "tags": [
          "Role"
        ],
        "parameters": [
          {
            "name": "roleIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblRole"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblRole"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblRole"
                }
              }
            }
          }
        }
      }
    },
    "/api/Role/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Role"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRole"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRole"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRole"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Role/{roleIdExt}": {
      "delete": {
        "tags": [
          "Role"
        ],
        "parameters": [
          {
            "name": "roleIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Role/id/{roleId}": {
      "delete": {
        "tags": [
          "Role"
        ],
        "parameters": [
          {
            "name": "roleId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/RolePermission": {
      "get": {
        "tags": [
          "RolePermission"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRolePermission"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRolePermission"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRolePermission"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/RolePermission/Id/{rolePermissionId}": {
      "get": {
        "tags": [
          "RolePermission"
        ],
        "operationId": "GetRolePermissionByIdAsync",
        "parameters": [
          {
            "name": "rolePermissionId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblRolePermission"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblRolePermission"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblRolePermission"
                }
              }
            }
          }
        }
      }
    },
    "/api/RolePermission/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "RolePermission"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRolePermission"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRolePermission"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblRolePermission"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Schedule": {
      "get": {
        "tags": [
          "Schedule"
        ],
        "summary": "Get Schedule entities",
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A list of schedule entities matching the specified filter criteria.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSchedule"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSchedule"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSchedule"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Schedule"
        ],
        "summary": "Adds a new schedule to the system.",
        "description": "If the schedule is added successfully and there are warnings generated during\r\n    processing, these warnings are included in the response headers under the \"Warnings\" key. The created\r\n    schedule can be retrieved using the route named \"GetScheduleByIdAsync\" with the returned schedule\r\n    ID.",
        "requestBody": {
          "description": "The schedule to add. Must not be null. The schedule details are provided in the request body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSchedule"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSchedule"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblSchedule"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "A 201 Created response containing the created schedule if the operation is successful; otherwise, a 400 Bad\r\n    Request response with error details.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblSchedule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSchedule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSchedule"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Schedule"
        ],
        "summary": "Edits an existing schedule using the provided schedule data.",
        "description": "If the update operation completes with warnings, they are included in the response\r\n    headers under \"Warnings\". The method does not return the updated schedule in the response body.",
        "requestBody": {
          "description": "The schedule entity containing updated information to apply. Must not be null.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSchedule"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSchedule"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblSchedule"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "A 204 No Content response if the schedule is successfully updated; otherwise, a 400 Bad Request response\r\n    with error details if the update fails."
          }
        }
      }
    },
    "/api/Schedule/Id/{scheduleId}": {
      "get": {
        "tags": [
          "Schedule"
        ],
        "summary": "Retrieves the schedule with the specified unique identifier.",
        "operationId": "GetScheduleByIdAsync",
        "parameters": [
          {
            "name": "scheduleId",
            "in": "path",
            "description": "The unique identifier of the schedule to retrieve. Must be a valid, existing schedule ID.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "An IActionResult containing the schedule data if found; otherwise, a result indicating that\r\n    the schedule was not found.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblSchedule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSchedule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSchedule"
                }
              }
            }
          }
        }
      }
    },
    "/api/Schedule/IdExt/{scheduleIdExt}": {
      "get": {
        "tags": [
          "Schedule"
        ],
        "summary": "Retrieves a schedule entity using the specified external schedule identifier.",
        "parameters": [
          {
            "name": "scheduleIdExt",
            "in": "path",
            "description": "The external identifier of the schedule to retrieve. Cannot be null or empty.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "An IActionResult containing the schedule entity if found; otherwise, a result indicating that\r\n    the schedule was not found.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblSchedule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSchedule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSchedule"
                }
              }
            }
          }
        }
      }
    },
    "/api/Schedule/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Schedule"
        ],
        "summary": "Retrieves a list of schedule entities that are new or have changed since the specified row version.",
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "description": "The row version used as a reference point. Only schedule entities with a row version greater than this value\r\n    are returned.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "An IActionResult containing a list of TblSchedule objects that are new or have\r\n    changed since the given row version. Returns an empty list if no entities match the criteria.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSchedule"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSchedule"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSchedule"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Schedule/{scheduleIdExt}": {
      "delete": {
        "tags": [
          "Schedule"
        ],
        "summary": "Deletes the schedule identified by the specified external schedule ID.",
        "parameters": [
          {
            "name": "scheduleIdExt",
            "in": "path",
            "description": "The external identifier of the schedule to delete. Cannot be null or empty.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "An IActionResult indicating the result of the operation. Returns BadRequestResult if the request is invalid or the deletion fails; otherwise, returns NoContentResult if the schedule is successfully deleted."
          }
        }
      }
    },
    "/api/Schedule/id/{scheduleId}": {
      "delete": {
        "tags": [
          "Schedule"
        ],
        "summary": "Deletes the schedule identified by the specified schedule ID.",
        "parameters": [
          {
            "name": "scheduleId",
            "in": "path",
            "description": "The identifier of the schedule to delete.",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "An IActionResult indicating the result of the operation. Returns BadRequestResult if the request is invalid or the deletion fails; otherwise, returns NoContentResult if the schedule is successfully deleted."
          }
        }
      }
    },
    "/api/Service": {
      "get": {
        "tags": [
          "Service"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblService"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblService"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblService"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Service"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblService"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblService"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblService"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblService"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblService"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblService"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Service"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblService"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblService"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblService"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Service/Id/{serviceId}": {
      "get": {
        "tags": [
          "Service"
        ],
        "operationId": "GetServiceByIdAsync",
        "parameters": [
          {
            "name": "serviceId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblService"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblService"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblService"
                }
              }
            }
          }
        }
      }
    },
    "/api/Service/IdExt/{serviceIdExt}": {
      "get": {
        "tags": [
          "Service"
        ],
        "parameters": [
          {
            "name": "serviceIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblService"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblService"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblService"
                }
              }
            }
          }
        }
      }
    },
    "/api/Service/{serviceIdExt}": {
      "delete": {
        "tags": [
          "Service"
        ],
        "parameters": [
          {
            "name": "serviceIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Setup": {
      "get": {
        "tags": [
          "Setup"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSetup"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSetup"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSetup"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Setup"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSetup"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSetup"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblSetup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblSetup"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSetup"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSetup"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Setup"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSetup"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSetup"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblSetup"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Setup/Key/{setupKey}": {
      "get": {
        "tags": [
          "Setup"
        ],
        "operationId": "GetSetupByKeyAsync",
        "parameters": [
          {
            "name": "setupKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblSetup"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSetup"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSetup"
                }
              }
            }
          }
        }
      }
    },
    "/api/Setup/{setupKey}": {
      "delete": {
        "tags": [
          "Setup"
        ],
        "parameters": [
          {
            "name": "setupKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Stock": {
      "get": {
        "tags": [
          "Stock"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStock"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStock"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStock"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Stock"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStock"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStock"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblStock"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblStock"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStock"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStock"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Stock"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStock"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStock"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblStock"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Stock/Id/{stockId}": {
      "get": {
        "tags": [
          "Stock"
        ],
        "operationId": "GetStockByIdAsync",
        "parameters": [
          {
            "name": "stockId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblStock"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStock"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStock"
                }
              }
            }
          }
        }
      }
    },
    "/api/Stock/IdExt/{stockIdExt}": {
      "get": {
        "tags": [
          "Stock"
        ],
        "parameters": [
          {
            "name": "stockIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblStock"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStock"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStock"
                }
              }
            }
          }
        }
      }
    },
    "/api/Stock/{stockIdExt}": {
      "delete": {
        "tags": [
          "Stock"
        ],
        "parameters": [
          {
            "name": "stockIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Stock/bulkUpsert": {
      "post": {
        "tags": [
          "Stock"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblStock"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblStock"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TblStock"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductUpsertResult"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductUpsertResult"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductUpsertResult"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Storage": {
      "get": {
        "tags": [
          "Storage"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStorage"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStorage"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStorage"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Storage"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorage"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorage"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorage"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorage"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Storage"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorage"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorage"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorage"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Storage/Id/{storageId}": {
      "get": {
        "tags": [
          "Storage"
        ],
        "operationId": "GetStorageByIdAsync",
        "parameters": [
          {
            "name": "storageId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorage"
                }
              }
            }
          }
        }
      }
    },
    "/api/Storage/IdExt/{storageIdExt}": {
      "get": {
        "tags": [
          "Storage"
        ],
        "parameters": [
          {
            "name": "storageIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorage"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorage"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorage"
                }
              }
            }
          }
        }
      }
    },
    "/api/Storage/{storageIdExt}": {
      "delete": {
        "tags": [
          "Storage"
        ],
        "parameters": [
          {
            "name": "storageIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/StorageTransfer": {
      "get": {
        "tags": [
          "StorageTransfer"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStorageTransfer"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStorageTransfer"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStorageTransfer"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "StorageTransfer"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorageTransfer"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorageTransfer"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorageTransfer"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorageTransfer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorageTransfer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorageTransfer"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "StorageTransfer"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorageTransfer"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorageTransfer"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblStorageTransfer"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/StorageTransfer/Id/{storageTransferId}": {
      "get": {
        "tags": [
          "StorageTransfer"
        ],
        "operationId": "GetStorageTransferByIdAsync",
        "parameters": [
          {
            "name": "storageTransferId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorageTransfer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorageTransfer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorageTransfer"
                }
              }
            }
          }
        }
      }
    },
    "/api/StorageTransfer/IdExt/{storageTransferIdExt}": {
      "get": {
        "tags": [
          "StorageTransfer"
        ],
        "parameters": [
          {
            "name": "storageTransferIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorageTransfer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorageTransfer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblStorageTransfer"
                }
              }
            }
          }
        }
      }
    },
    "/api/StorageTransfer/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "StorageTransfer"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStorageTransfer"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStorageTransfer"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblStorageTransfer"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/StorageTransfer/{storageTransferIdExt}": {
      "delete": {
        "tags": [
          "StorageTransfer"
        ],
        "parameters": [
          {
            "name": "storageTransferIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Supplier": {
      "get": {
        "tags": [
          "Supplier"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSupplier"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSupplier"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblSupplier"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Supplier"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSupplier"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSupplier"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblSupplier"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblSupplier"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSupplier"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSupplier"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Supplier"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSupplier"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblSupplier"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblSupplier"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Supplier/Id/{supplierId}": {
      "get": {
        "tags": [
          "Supplier"
        ],
        "operationId": "GetSupplierByIdAsync",
        "parameters": [
          {
            "name": "supplierId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblSupplier"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSupplier"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSupplier"
                }
              }
            }
          }
        }
      }
    },
    "/api/Supplier/IdExt/{supplierIdExt}": {
      "get": {
        "tags": [
          "Supplier"
        ],
        "parameters": [
          {
            "name": "supplierIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblSupplier"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSupplier"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblSupplier"
                }
              }
            }
          }
        }
      }
    },
    "/api/Supplier/{supplierIdExt}": {
      "delete": {
        "tags": [
          "Supplier"
        ],
        "parameters": [
          {
            "name": "supplierIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Team": {
      "get": {
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeam"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeam"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeam"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Team"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeam"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeam"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeam"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeam"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeam"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeam"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Team"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeam"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeam"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeam"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Team/Id/{teamId}": {
      "get": {
        "tags": [
          "Team"
        ],
        "operationId": "GetTeamByIdAsync",
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeam"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeam"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeam"
                }
              }
            }
          }
        }
      }
    },
    "/api/Team/IdExt/{teamIdExt}": {
      "get": {
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "teamIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeam"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeam"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeam"
                }
              }
            }
          }
        }
      }
    },
    "/api/Team/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeam"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeam"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeam"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/Team/{teamIdExt}": {
      "delete": {
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "teamIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/Team/id/{teamId}": {
      "delete": {
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "teamId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/TeamEmployee": {
      "get": {
        "tags": [
          "TeamEmployee"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeamEmployee"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeamEmployee"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeamEmployee"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "TeamEmployee"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeamEmployee"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeamEmployee"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeamEmployee"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeamEmployee"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeamEmployee"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeamEmployee"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "TeamEmployee"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeamEmployee"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeamEmployee"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblTeamEmployee"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/TeamEmployee/Id/{teamEmployeeId}": {
      "get": {
        "tags": [
          "TeamEmployee"
        ],
        "operationId": "GetTeamEmployeeByIdAsync",
        "parameters": [
          {
            "name": "teamEmployeeId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeamEmployee"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeamEmployee"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeamEmployee"
                }
              }
            }
          }
        }
      }
    },
    "/api/TeamEmployee/IdExt/{teamEmployeeIdExt}": {
      "get": {
        "tags": [
          "TeamEmployee"
        ],
        "parameters": [
          {
            "name": "teamEmployeeIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeamEmployee"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeamEmployee"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblTeamEmployee"
                }
              }
            }
          }
        }
      }
    },
    "/api/TeamEmployee/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "TeamEmployee"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeamEmployee"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeamEmployee"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblTeamEmployee"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/TeamEmployee/{teamEmployeeIdExt}": {
      "delete": {
        "tags": [
          "TeamEmployee"
        ],
        "parameters": [
          {
            "name": "teamEmployeeIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/TeamEmployee/id/{teamEmployeeId}": {
      "delete": {
        "tags": [
          "TeamEmployee"
        ],
        "parameters": [
          {
            "name": "teamEmployeeId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/User": {
      "get": {
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUser"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUser"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUser"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "User"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblUser"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblUser"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblUser"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblUser"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblUser"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblUser"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "User"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TblUser"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TblUser"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TblUser"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/User/Id/{userId}": {
      "get": {
        "tags": [
          "User"
        ],
        "operationId": "GetUserByIdAsync",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblUser"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblUser"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblUser"
                }
              }
            }
          }
        }
      }
    },
    "/api/User/IdExt/{userIdExt}": {
      "get": {
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "name": "userIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblUser"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblUser"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblUser"
                }
              }
            }
          }
        }
      }
    },
    "/api/User/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUser"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUser"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUser"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/User/{userIdExt}": {
      "delete": {
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "name": "userIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/User/id/{userId}": {
      "delete": {
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      }
    },
    "/api/UserRole": {
      "get": {
        "tags": [
          "UserRole"
        ],
        "parameters": [
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUserRole"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUserRole"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUserRole"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/UserRole/Id/{userRoleId}": {
      "get": {
        "tags": [
          "UserRole"
        ],
        "operationId": "GetUserRoleByIdAsync",
        "parameters": [
          {
            "name": "userRoleId",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblUserRole"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblUserRole"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblUserRole"
                }
              }
            }
          }
        }
      }
    },
    "/api/UserRole/IdExt/{userRoleIdExt}": {
      "get": {
        "tags": [
          "UserRole"
        ],
        "parameters": [
          {
            "name": "userRoleIdExt",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TblUserRole"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblUserRole"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TblUserRole"
                }
              }
            }
          }
        }
      }
    },
    "/api/UserRole/neworchanged/{rowVersion}": {
      "get": {
        "tags": [
          "UserRole"
        ],
        "parameters": [
          {
            "name": "rowVersion",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int64"
            }
          },
          {
            "name": "Filters",
            "in": "query",
            "description": "A comma-separated filter string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Sorts",
            "in": "query",
            "description": "A comma-separated sort string",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Page",
            "in": "query",
            "description": "The page number to load",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of items per page",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUserRole"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUserRole"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TblUserRole"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ApiFundamentalsRequestModel": {
        "type": "object",
        "properties": {
          "fields": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "List of fields we want in the response. Available values:\n            - \"maxRowVersion\"\n            - \"maxId\""
          },
          "entities": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "List of entities we want in the response. Only include entities you need for importing into your integration. Examples of (but not limited to) available values :\n            - \"Assignment\"\n            - \"AssignmentNote\"\n            - \"AssignmentParticipant\"\n            - \"AssignmentProduct\"\n            - \"AssignmentQualityControl\"\n            - \"AssignmentService\"\n            - \"Attachment\"\n            - \"Customer\"\n            - \"CustomerSite\"\n            - \"Schedule\"\n            - \"StorageTransfer\""
          }
        },
        "description": "GetFundamentals is a lightweight way to check several entities for changes in RowVersion / Max ID via the endpoint GetFundamentals."
      },
      "ApplicationStateModel": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The name of the state key, e.g. \"Employee\" for the employee grid"
          },
          "value": {
            "type": "string",
            "description": "The actual application state value to store"
          },
          "updated": {
            "type": "string",
            "description": "When the state was last updated",
            "format": "date-time"
          }
        },
        "description": "Retrieves the application state for a given key."
      },
      "AppointmentFilterDto": {
        "type": "object",
        "properties": {
          "assignmentStatusID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AppointmentUpsertRequestDto": {
        "type": "object",
        "properties": {
          "appointmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startDate": {
            "type": "string"
          },
          "endDate": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "comment": {
            "type": "string"
          },
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "assignmentStatusTransitionId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "removeAssignmentParticipantEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "setNewEmployeeAsJobResponsible": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "AssignmentExtended": {
        "type": "object",
        "properties": {
          "assignment": {
            "$ref": "#/components/schemas/TblAssignment"
          },
          "customer": {
            "$ref": "#/components/schemas/TblCustomer"
          },
          "employeeInCharge": {
            "$ref": "#/components/schemas/TblEmployee"
          },
          "assignmentProducts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TblAssignmentProduct"
            }
          },
          "assignmentServices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TblAssignmentService"
            }
          },
          "assignmentQualityControls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TblAssignmentQualityControl"
            }
          },
          "attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TblAttachment"
            }
          },
          "assignmentNotes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TblAssignmentNote"
            }
          },
          "assignmentObjects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TblAssignmentObject"
            }
          }
        }
      },
      "AssignmentParticipantDto": {
        "type": "object",
        "properties": {
          "assignmentParticipantId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "AssignmentProductUpsertManyResult": {
        "type": "object",
        "properties": {
          "errorMessage": {
            "type": "string"
          },
          "assignmentProductIdext": {
            "type": "string"
          },
          "assignmentProductId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "AssignmentProductUpsertResult": {
        "type": "object",
        "properties": {
          "assignmentProductIdext": {
            "type": "string"
          },
          "assignmentProductId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ColumnVO": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "null",
              "string"
            ]
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "field": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "CustomerUpsertResult": {
        "type": "object",
        "properties": {
          "customerIdext": {
            "type": "string"
          },
          "customerId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "EmployeeFilterDto": {
        "type": "object",
        "properties": {
          "departmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "teams": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "employees": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          }
        }
      },
      "EmployeeSortOrderDto": {
        "type": "object",
        "properties": {
          "isDescending": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "EntityTagHeaderValue": {
        "type": "object",
        "properties": {
          "tag": {
            "$ref": "#/components/schemas/StringSegment"
          },
          "isWeak": {
            "type": "boolean"
          }
        }
      },
      "FileContentResult": {
        "type": "object",
        "properties": {
          "fileContents": {
            "type": "string",
            "format": "byte"
          },
          "contentType": {
            "type": [
              "null",
              "string"
            ]
          },
          "fileDownloadName": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastModified": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "entityTag": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EntityTagHeaderValue"
              }
            ]
          },
          "enableRangeProcessing": {
            "type": "boolean"
          }
        }
      },
      "GetAppointmentsRequestDto": {
        "type": "object",
        "properties": {
          "startIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "batchSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "appointmentFilter": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/AppointmentFilterDto"
              }
            ]
          },
          "employees": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "appointments": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "assignments": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": [
                "integer",
                "string"
              ],
              "format": "int32"
            }
          },
          "defaultAppointmentDuration": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "GetAppointmentsResponseDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlannerGetAppointmentDto"
            }
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "GetEmployeesRequestDto": {
        "type": "object",
        "properties": {
          "startIndex": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "batchSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "quickSearchText": {
            "type": [
              "null",
              "string"
            ]
          },
          "employeeSortOrder": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EmployeeSortOrderDto"
              }
            ]
          },
          "employeeFilter": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/EmployeeFilterDto"
              }
            ]
          }
        }
      },
      "GetEmployeesResponseDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlannerGetEmployeesDto"
            }
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "GetRowsRequestModel": {
        "type": "object",
        "properties": {
          "entity": {
            "type": [
              "null",
              "string"
            ]
          },
          "table": {
            "type": [
              "null",
              "string"
            ]
          },
          "cols": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ColumnVO"
            }
          },
          "fields": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "startRow": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "endRow": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "rowGroupCols": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ColumnVO"
            }
          },
          "valueCols": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ColumnVO"
            }
          },
          "pivotCols": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/ColumnVO"
            }
          },
          "pivotMode": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "groupKeys": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "filterModel": {
            "type": [
              "null",
              "object"
            ],
            "additionalProperties": {
              "type": "object"
            }
          },
          "sortModel": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/SortModelItem"
            }
          },
          "quickFilterText": {
            "type": [
              "null",
              "string"
            ]
          },
          "quickFilterCols": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          },
          "sum": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Participant": {
        "type": "object",
        "properties": {
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PlannerAppointmentLogDto": {
        "type": "object",
        "properties": {
          "appoinmentLogId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "appointmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "startTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "endTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "regEmployeeID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "regUserID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "regApplication": {
            "type": [
              "null",
              "string"
            ]
          },
          "showRecord": {
            "type": "boolean"
          },
          "employeeIDText": {
            "type": [
              "null",
              "string"
            ]
          },
          "employeeName": {
            "type": [
              "null",
              "string"
            ]
          },
          "regEmployeeIDText": {
            "type": [
              "null",
              "string"
            ]
          },
          "regEmployeeName": {
            "type": [
              "null",
              "string"
            ]
          },
          "regUserUsername": {
            "type": [
              "null",
              "string"
            ]
          },
          "regUserName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "PlannerGetAppointmentDto": {
        "type": "object",
        "properties": {
          "appointmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "assignmentNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "address": {
            "type": [
              "null",
              "string"
            ]
          },
          "internalReference": {
            "type": [
              "null",
              "string"
            ]
          },
          "addressName": {
            "type": [
              "null",
              "string"
            ]
          },
          "latitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "longitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "jobResponsiblePerson": {
            "type": [
              "null",
              "string"
            ]
          },
          "jobResponsibleEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "estimatedHours": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "totalAppointments": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "caseHandlerEmployeeName": {
            "type": [
              "null",
              "string"
            ]
          },
          "caseHandlerEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "customerName": {
            "type": [
              "null",
              "string"
            ]
          },
          "comment": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          },
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "employeeName": {
            "type": [
              "null",
              "string"
            ]
          },
          "endDateTimeUTC": {
            "type": "string",
            "format": "date-time"
          },
          "startDateTimeUTC": {
            "type": "string",
            "format": "date-time"
          },
          "assignmentStatus": {
            "type": [
              "null",
              "string"
            ]
          },
          "durationInMinutes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "assignmentParticipants": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/AssignmentParticipantDto"
            }
          },
          "isLastAppointmentForEmployee": {
            "type": "boolean"
          }
        }
      },
      "PlannerGetAssignmentsDto": {
        "type": "object",
        "properties": {
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "assignmentNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "assignmentNumberText": {
            "type": "string"
          },
          "internalReference": {
            "type": "string"
          },
          "customerName": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "postalPlace": {
            "type": "string"
          },
          "assignmentStatusId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "assginmentStatusDescription": {
            "type": "string"
          },
          "assignmentStatusDescription": {
            "type": "string"
          },
          "assignmentComplete": {
            "type": "string"
          },
          "assignmentDepartment": {
            "type": "string"
          },
          "addressName": {
            "type": "string"
          },
          "canShowInMap": {
            "type": "boolean"
          },
          "latitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "longitude": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "jobResponsiblePerson": {
            "type": "string"
          },
          "officeClerk": {
            "type": "string"
          },
          "jobResponsibleEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "projectId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "projectName": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "assignmentType": {
            "type": "string"
          },
          "startDateTimeUTC": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "endDateTimeUTC": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "estimatedHours": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "totalHoursPlanned": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "totalAppointments": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "assignmentPriority": {
            "type": "string"
          },
          "participantsList": {
            "type": "string"
          },
          "participants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Participant"
            }
          }
        }
      },
      "PlannerGetDepartmentsDto": {
        "type": "object",
        "properties": {
          "departmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "departmentDescription": {
            "type": "string"
          }
        }
      },
      "PlannerGetEmployeesDto": {
        "type": "object",
        "properties": {
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "departmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "departmentDescription": {
            "type": "string"
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Team"
            }
          }
        }
      },
      "PlannerGetSettingsDto": {
        "type": "object",
        "properties": {
          "userSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlannerSettingsResponseDto"
            }
          },
          "defaultSettings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlannerSettingsResponseDto"
            }
          }
        }
      },
      "PlannerGetTeamsDto": {
        "type": "object",
        "properties": {
          "teamId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "teamNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "PlannerSettingsResponseDto": {
        "type": "object",
        "properties": {
          "settingsId": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "ProductSupplierUpsertResult": {
        "type": "object",
        "properties": {
          "productSupplierIdext": {
            "type": "string"
          },
          "productSupplierId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "ProductUpsertResult": {
        "type": "object",
        "properties": {
          "productIdext": {
            "type": "string"
          },
          "productId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          }
        }
      },
      "SortModelItem": {
        "type": "object",
        "properties": {
          "colId": {
            "type": [
              "null",
              "string"
            ]
          },
          "sort": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "StringSegment": {
        "type": "object",
        "properties": {
          "buffer": {
            "type": [
              "null",
              "string"
            ]
          },
          "offset": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "length": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "value": {
            "type": [
              "null",
              "string"
            ]
          },
          "hasValue": {
            "type": "boolean"
          }
        }
      },
      "TblAssignment": {
        "type": "object",
        "properties": {
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft ID of the Assignment",
            "format": "int32"
          },
          "assignmentIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the Assignment, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the Assignment, as presented to the user of mobile device"
          },
          "parentAssignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft AssignmentID of parent assignment",
            "format": "int32"
          },
          "customerId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft CustomerID of the assignment",
            "format": "int32"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the assignment. This will be presented as a header of the assignment."
          },
          "location": {
            "type": [
              "null",
              "string"
            ],
            "description": "Location of the assignment. Please also note the SiteName / SiteAddress fields."
          },
          "assignmentDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "AssignmentDate",
            "format": "date-time"
          },
          "fromDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "The proposed starting date of the assignment",
            "format": "date-time"
          },
          "toDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "The proposed end date of the assignment",
            "format": "date-time"
          },
          "invoiceStatusId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "DEPRECATED! Invoice status ID",
            "format": "uint8"
          },
          "invoiceDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "DEPRECATED! Invoice date",
            "format": "date-time"
          },
          "invoiceDateDue": {
            "type": [
              "null",
              "string"
            ],
            "description": "DEPRECATED! Invoice due date",
            "format": "date-time"
          },
          "invoiceComment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Invoice comment on the assignment. This information is typically copied to the invoice to the end customer in the external application."
          },
          "ourReferenceCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Our reference code on the assignment"
          },
          "reference": {
            "type": [
              "null",
              "string"
            ],
            "description": "Reference on the assignment"
          },
          "contact": {
            "type": [
              "null",
              "string"
            ],
            "description": "Contact name on the assignment. Please note that there is a separate Contact endpoint as well, if multiple contacts are needed."
          },
          "phone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Phone number"
          },
          "mobile": {
            "type": [
              "null",
              "string"
            ],
            "description": "Mobile phone number"
          },
          "siteAddress": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Address of assignment site"
          },
          "sitePostalNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Postal number"
          },
          "sitePostalPlace": {
            "type": [
              "null",
              "string"
            ],
            "description": "Postal place"
          },
          "jobDescription": {
            "type": [
              "null",
              "string"
            ],
            "description": "Job description. Company internal description of the assignment. \n            This information is not presented to the end customer, only the employees working on the assignment."
          },
          "discountProduct": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Discount set on products",
            "format": "double"
          },
          "discountService": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Discount set on services",
            "format": "double"
          },
          "assignmentType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "DEPRECATED! Please use AssignmentTypeID instead.",
            "format": "uint8"
          },
          "assignmentPriceType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Assignment price type.\n            \n            This property is used to be able to set if the Assignment price is fixed or according to invoice. \n            If employees should be able to change the price type and/or price, please check user profile property AssignmentChangePriceType/>.\n            Allowed values:\n            \n            - 0: According to invoice\n            - 1: Fixed price, where price is set in property Assignment.AssignmentPrice/>",
            "format": "uint8"
          },
          "assignmentPrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "AssignmentPrice. Please set AssignmentPriceType to 1 if this is to be used as fixed price.",
            "format": "double"
          },
          "officeClerkId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "OfficeClerkID. The employee on the office that manages this assignment.",
            "format": "int32"
          },
          "employeeInChargeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "EmployeeInChargeID. The field-service employee is in charge of this assignment. \n            When this employee completes the assignment, this is the trigger for further management (like invoicing) in external application.",
            "format": "int32"
          },
          "requireQualityControl": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "RequireQualityControl controls if there has to be added and signed a form before the assignment may be set completed."
          },
          "requireServiceCommentIgnore": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Ignore if service types require comment when registerring service hours."
          },
          "signatureId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If the assignment has been signed, this is the corresponding signature ID.",
            "format": "int32"
          },
          "useEmployee": {
            "type": [
              "null",
              "string"
            ],
            "description": "The list of available employees whan adding service hours on this assignment may be filtered by UseEmployee. * or empty string is considered as no filtering.    \n            Please note that UseEmployee parameter is present in multiple tables.The entries are overridden by this chain of priorities:  \n              \n            - 1. Assignment  \n            - 2. AssignmentType  \n            - 3. UserProfile"
          },
          "useService": {
            "type": [
              "null",
              "string"
            ],
            "description": "Defines what service hours types are to be shown when adding AssignmentService on Assignment. \n            \n            It is important to understand the hierarchy of how UseService is read from database on mobile devices.\n            Assignment.UseService has a higher priority than AssignmentType.UseService, so if * or empty string in\n            Assignment.UseService, it will look at AssignmentType.UseService.\n            Here is an overview on various alternatives:\n            \n            \n            Alternative 1. ”Union with UserProfile”. Assignment.UseService or AssignmentType.UseService without special text\n            - Example: 15;16;17;65\n            - gives access to ServiceIDs 15;16;17;65, but ONLY if these are included in the current UserProfile.UseService (using AND with user profile)\n            - Example: 0\n            - gives access to no ServiceIDs at all\n            \n            Alternative 2. ”In addition to UserProfile”. Using both Service Types from UserProfile and in current list from Assignment or AssignmentType.\n            - Special text UP: Using (ServiceIDs from Assignment / AssignmentType) OR (UserProfile.UseService)\n            - Example: UP;15;16;17;65\n            - gives access to ServiceIDs in current user profile plus 15;16;17;65 (using \"OR\" to UserProfile)\n            \n            Alternative 3. ”No UserProfile”. Skips the Service Types from UserProfile.UseService, and only gets them from Assignment.UseService / AssignmentType.UseService\n            - Special text NUP: Using only UseService from Assignment / AssignmentType, ignoring UserProfile completely\n            - Example: NUP;15;16;17;65\n            - gives only access to ServiceIDs 15;16;17;65\n            \n            Additional comments:\n            - Using both NUP and UP gives alternative 2.\n            - Setting Assignment.UseService = NUP  (without anything else), gives empty list of service types."
          },
          "assignmentProductSyncFilter": {
            "type": [
              "null",
              "string"
            ],
            "description": "This filter is used to limit if products on the assignment are synced to mobile devices.\n            Default value is * (no filtering - everyone gets everything). Otherwise, insert semicolon separated list of EmployeeIDs for those who will get all products on their devices."
          },
          "assignmentServiceSyncFilter": {
            "type": [
              "null",
              "string"
            ],
            "description": "This filter is used to limit if service hours on the assignment are synced to mobile devices. \n            Default value is * (no filtering - everyone gets everything). Otherwise, insert semicolon separated list of EmployeeIDs for those who will get all service hours on their devices."
          },
          "hierarchyLevel": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "HierarchyLevel is used to be able to know what level in Assignment Hierarchy this assignment is. \n            The value 0 is not used. Please note that HierarchyLevel = 1 means a top-level Assignment, and HierarchyLevel = 2 is set\n            on a sub-assignment to an HierarchyLevel 1 assignment. ParentAssignmentID will then give the parent.\n            \n            \n            A setting in UserProfile may be used to avoid the ability to create sub-assignments at a certain level \n            when creating assignments on mobile device.",
            "format": "uint8"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "RegEmployeeID. The SpeedyCraft ID of the employee that registered the assignment",
            "format": "int32"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 NOCHANGE: No change from SpeedyCraft.\n            - 1 CHANGED: Changes available in SpeedyCraft.\n            - 2 NEW: This record is new from SpeedyCraft.\n            - 3 DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "externalStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The External application may reject records that arrive from SpeedyCraft. \n            This is done by setting ExternalStatus = 1 and insert a message to user with info \n            on the record and what is wrong. Records with ExternalStatus = 1 are allowed to be \n            changed or deleted by user, even if they are synchronized.\n            \n            - 0: No change / All ok / Default value\n            - 1: Change. External application rejects the item and suggests that SpeedyCraft user changes it.\n            - 2: Item has been changed by SpeedyCraft user. Please import again.",
            "format": "uint8"
          },
          "unassignedAssignmentEnabled": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Set if it should be possible to download this as an unassignment assignment.",
            "format": "uint8"
          },
          "useAssignmentListChoice": {
            "type": [
              "null",
              "string"
            ],
            "description": "Assignment menu items to appear on this assignment. \n            \n            Please note that UseAssignmentListChoice parameter is present in multiple tables. The entries are overridden by this chain of priorities:\n            \n            - 1. Assignment\n            - 2. AssignmentType\n            - 3. UserProfile\n            \n            With * or empty string in Assignment, SpeedyCraft looks for the next.\n            Eventually UserProfile fallback value is used.\n            This string is semicolon-separated, and can have the following values:\n            \n            - \"*\" = Show all items [asterisk]\n            -  = Show none [blank]\n            - PRO = Assignment products\n            - SER = Assignment services\n            - OBJ = Assignment objects\n            - OTH = Other\n            - INV = Invoice comment\n            - JOB = Job description\n            - ANO = Assignment notes\n            - LTG = Line tag\n            - TOT = Total list\n            - ECO = Economy info\n            - CON = Contact info\n            \n            Example string: 'PRO;JOB;CON' -> Displays assignment products, job description and contact info."
          },
          "assignmentCompleteTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date when the current assignment was set to an assignmentstatus that is defined as completed. Please note that the date here is only valid if the assignment is set completed.",
            "format": "date-time"
          },
          "assignmentComplete": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Check if current AssignmentStatusID is set as AssignmentComplete"
          },
          "gpsposition": {
            "type": [
              "null",
              "string"
            ],
            "description": "DEPRECATED! Please use GPSPositionLon, GPSPositionLat, GPSPositionAlt instead."
          },
          "assignmentTypeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentTypeID",
            "format": "int32"
          },
          "assignmentStatusId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ID from tblAssignmentStatus for the current assignment",
            "format": "int32"
          },
          "assignmentPriorityId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentPriorityID",
            "format": "int32"
          },
          "timeEstimate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "The estimated number of hours this assignment will take",
            "format": "double"
          },
          "siteName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Name of assignment site location"
          },
          "gpspositionStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "GPS Position status\n            \n            - 0 = Invalid. GPS Position not set or GPS Position status ignored\n            - 1 = GPS fix (SPS)\n            - 2 = DGPS fix\n            - 3 = PPS fix\n            - 4 = Real Time Kinematic\n            - 5 = Float RTK\n            - 6 = estimated (dead reckoning) (2.3 feature)\n            - 7 = Manual input mode\n            - 8 = Simulation mode\n            - 100: Valid GPS Position, set by SpeedyCraft Live.\n            - 200: Have tried to search for GPS Position, but was unable to find a valid position. Invalid GPS Position.",
            "format": "uint8"
          },
          "gpspositionLat": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Latitude (decimal degree value)",
            "format": "double"
          },
          "gpspositionLon": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Longitude (decimal degree value)",
            "format": "double"
          },
          "gpspositionAlt": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Altitude (meters)",
            "format": "double"
          },
          "gpspositionAccuracy": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Accuracy",
            "format": "double"
          },
          "gpspositionInfo": {
            "type": [
              "null",
              "string"
            ],
            "description": "GPSPosition info. A description on how the GPS position was found."
          },
          "email": {
            "type": [
              "null",
              "string"
            ],
            "description": "Email address"
          },
          "lineTagUsage": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Use line tag on this assignment when adding products and service hours. \n            \n            - 0: No line tags\n            - 1: Line tags may be used\n            - 2: Line tags must be used",
            "format": "uint8"
          },
          "workProcess": {
            "type": [
              "null",
              "string"
            ],
            "description": "WorkProcess for the Assignment.\n            Please note that WorkProcess entries are overridden by this chain of priorities:\n            \n            - 1: AssignmentParticipant\n            - 2: Assignment\n            - 3: AssignmentType\n            - 4: UserProfile"
          },
          "externalValueInt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Could be used to anything by the external application. Not visible anywhere in the UI.",
            "format": "int32"
          },
          "customerSiteId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft CustomerSiteID of the assignment",
            "format": "int32"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "serviceApproveRequired": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if all service hours need to be approved on this assignment"
          },
          "useQualityControlRequire": {
            "type": [
              "null",
              "string"
            ],
            "description": "List of forms that need to be filled in and signed in order to complete this assignment"
          },
          "departmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The ID of the Department (in tblDepartment) to which the Assignment belongs",
            "format": "int32"
          },
          "customerIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the customer of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "customerUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "A GUID identifier for the customer of this assignment",
            "format": "uuid"
          },
          "regEmployeeIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "employeeInChargeIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee in charge of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "assignmentPriorityIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the priority of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "assignmentTypeIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the type of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "assignmentStatusIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the status of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "customerSiteIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the customer site of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "parentAssignmentIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the parent of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "signatureIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the signature of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "officeClerkIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the office clerk of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "departmentIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the department of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "projectId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The Project of this assignment, if defined",
            "format": "int32"
          },
          "projectIdExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the project of this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Assignment is the entity for work orders, where products, service hours and other documentation could be added. It should always be linked to a customer. Link to project is optional."
      },
      "TblAssignmentNote": {
        "type": "object",
        "properties": {
          "assignmentNoteId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the AssignmentNote. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the AssignmentNote.",
            "format": "int32"
          },
          "assignmentNoteIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentNote, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentNoteIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the assignmentNote, this is the assignmentNote number shown in the UI."
          },
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft AssignmentID",
            "format": "int32"
          },
          "assignmentIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the Assignment, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the linked Assignment (if AssignmentID is not known)",
            "format": "uuid"
          },
          "note": {
            "type": [
              "null",
              "string"
            ],
            "description": "The note text string"
          },
          "internal": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "When used regular note, the note may be set as an internal note, not to be shown to end customer."
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when this record was created. Also, if added on mobile device, this is the local time the user actually made the record.",
            "format": "date-time"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "regEmployeeUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the employee that added this note (if RegEmployeeID is not known)",
            "format": "uuid"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "lineTag": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set to true if the assignment note is to be used as a Tag for other records on the assignment."
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "By using SortOrder, you may control the sorting of LineTags independantly of RegTime, AssignmentNoteIDText and Note.\n            Please note that the user needs to select sorting LineTags by SortOrder in order to get this sorting.",
            "format": "int32"
          },
          "active": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set to true if the LineTag is currently active (it should be possible to add new products/service hours using this LineTag). \n            Whenever all activities marked with this LineTag are completed, set Active to false."
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "AssignmentNote is for notes on an assignment.\n            \n            Please note that this endpoint is also used for a completely different concept as well: Linetag, which is tags that could be selected when adding products and service hours on the assignment."
      },
      "TblAssignmentObject": {
        "type": "object",
        "properties": {
          "assignmentObjectId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the AssignmentObject. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the AssignmentObject.",
            "format": "int32"
          },
          "assignmentObjectIdext": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentObject, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentObjectIdtext": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the AssignmentObject, this is the AssignmentObject number shown in the UI."
          },
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Assignment ID this record refers to",
            "format": "int32"
          },
          "assignmentIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the Assignment, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the linked Assignment (if AssignmentID is not known)",
            "format": "uuid"
          },
          "objectId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Object ID this record refers to",
            "format": "int32"
          },
          "objectIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the object, as defined by the main external integration to SpeedyCraft"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the AssignmentObject"
          },
          "additionalInfo": {
            "type": [
              "null",
              "string"
            ],
            "description": "Information of the AssignmentObject"
          },
          "location": {
            "type": [
              "null",
              "string"
            ],
            "description": "Location of the AssignmentObject"
          },
          "deployTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when the object was set in use (set by user)",
            "format": "date-time"
          },
          "assignmentObjectDataDefinition": {
            "type": [
              "null",
              "string"
            ],
            "description": "QuestionList XML string as defined by SpeedyCraft XML format. Extra properties are defined here."
          },
          "assignmentObjectDataResponse": {
            "type": [
              "null",
              "string"
            ],
            "description": "AnswerList XML string as defined by SpeedyCraft XML format. Extra property values are put here."
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when this record was created. Also, if added on mobile device, this is the local time the user actually made the record.",
            "format": "date-time"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "regEmployeeUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the employee that added this note (if RegEmployeeID is not known)",
            "format": "uuid"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "externalStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The External application may reject records that arrive from SpeedyCraft. \n            This is done by setting ExternalStatus = 1 and insert a message to user with info \n            on the record and what is wrong. Records with ExternalStatus = 1 are allowed to be \n            changed or deleted by user, even if they are synchronized.\n            \n            - 0: No change / All ok / Default value\n            - 1: Change. External application rejects the item and suggests that SpeedyCraft user changes it.\n            - 2: Item has been changed by SpeedyCraft user. Please import again.",
            "format": "uint8"
          },
          "gpspositionStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "GPS Position status\n            \n            - 0: Invalid. GPS Position not set or GPS Position status ignored\n            - 1: GPS fix (SPS)\n            - 2: DGPS fix\n            - 3: PPS fix\n            - 4: Real Time Kinematic\n            - 5: Float RTK\n            - 6: estimated (dead reckoning) (2.3 feature)\n            - 7: Manual input mode\n            - 8: Simulation mode\n            - 100: Valid GPS Position, set by SpeedyCraft Live.\n            - 200: Have tried to search for GPS Position, but was unable to find a valid position. Invalid GPS Position.",
            "format": "uint8"
          },
          "gpspositionLat": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Latitude (decimal degree value)",
            "format": "double"
          },
          "gpspositionLon": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Longitude (decimal degree value)",
            "format": "double"
          },
          "gpspositionAlt": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Altitude (meters)",
            "format": "double"
          },
          "gpspositionAccuracy": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Accuracy",
            "format": "double"
          },
          "gpspositionInfo": {
            "type": [
              "null",
              "string"
            ],
            "description": "GPSPosition info. A description on how the GPS position was found."
          },
          "assignmentNoteId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentNoteID if LineTag defined.",
            "format": "int32"
          },
          "assignmentNoteIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the Assignment note"
          },
          "parentAssignmentObjectId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentObjects may also be set up in a hierarchy. \n            ParentAssignmentObjectId refers to the parent of this AssignmentObject.",
            "format": "int32"
          },
          "parentAssignmentObjectIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "AssignmentObjects may also be set up in a hierarchy. \n            ParentAssignmentObjectIdext refers to the parent of this AssignmentObject, identifier as defined by the main external integration to SpeedyCraft"
          },
          "assignmentObjectStatusId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentObjectStatus ID, defined by WorkProcess",
            "format": "int32"
          },
          "readOnly": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ReadOnly value.\n            \n            Set this to disable mobile device user from changing values/properties on the AssignmentObject.\n            - 0: The AssignmentObject is readable and writable (default)\n            - 1: ReadOnly. All properties on the AssignmentObject are readonly (disabled), nothing may be changed by mobile device user.\n            - 2: ReadOnly, except status. All properties on the AssignmentObject are readonly (disabled), except AssignmentObjectStatus. This may be changed by mobile device user",
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "AssignmentObject is a connection between an assignment and a physical object. \n            \n            AssignmentObject is used for inspection or service on objects, and this is done related to an assignment. \n            \n            Several AssignmentObjects may be added to the same Object, typically done when we need successive inspection or maintenance on the same Object."
      },
      "TblAssignmentParticipant": {
        "type": "object",
        "properties": {
          "assignmentParticipantId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the AssignmentParticipant. \n            \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the AssignmentParticipant.",
            "format": "int32"
          },
          "assignmentParticipantIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentParticipant, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentParticipantIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the AssignmentParticipant, this is the AssignmentParticipant number shown in the UI."
          },
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentID this record refers to",
            "format": "int32"
          },
          "assignmentIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the Assignment, as defined by the main external integration to SpeedyCraft."
          },
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "EmployeeID this record refers to",
            "format": "int32"
          },
          "employeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee, as defined by the main external integration to SpeedyCraft."
          },
          "autoStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "SpeedyCraft sets AutoStatus on AssignmentParticipant.\n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when this record was created. Also, if added on mobile device, this is the local time the user actually made the record.",
            "format": "date-time"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "workProcess": {
            "type": [
              "null",
              "string"
            ],
            "description": "WorkProcess for the assignment participant.\n            Please note that WorkProcess entries are overridden by this chain of priorities:\n            \n            - 1: AssignmentParticipant\n            - 2: Assignment\n            - 3: AssignmentType\n            - 4: UserProfile"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "AssignmentParticipant is the relation between employees and work orders. \n            \n            The Assignment and Employee is mandatory when adding new records here."
      },
      "TblAssignmentPriority": {
        "type": "object",
        "properties": {
          "assignmentPriorityId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the AssignmentPriority. \n            \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the AssignmentPriority.",
            "format": "int32"
          },
          "assignmentPriorityIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentPriority, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentPriorityIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the AssignmentPriority, this is the AssignmentPriority number shown in the UI."
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the priority. This will be presented as a header of the priority."
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Sort order. Priorities will be presented to users sorted by SortOrder ascending.",
            "format": "int32"
          },
          "color": {
            "type": [
              "null",
              "string"
            ],
            "description": "Color of AssignmentPriority"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "AssignmentPriority is the setup needed if you want to split Assignments into different priorities."
      },
      "TblAssignmentProduct": {
        "type": "object",
        "properties": {
          "assignmentProductId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the AssignmentProduct. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the AssignmentProduct.",
            "format": "int32"
          },
          "assignmentProductIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentProduct, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentProductIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the AssignmentProduct, this is the AssignmentProduct number shown in the UI."
          },
          "editAssignmentProductId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentProductID from which an edited assignment product was created",
            "format": "int32"
          },
          "editAssignmentProductIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "AssignmentProduct from which an edited assignment product was created, identifier as defined by the main external integration to SpeedyCraft"
          },
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft AssignmentID of connected assignment",
            "format": "int32"
          },
          "assignmentIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the Assignment, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the linked Assignment (if AssignmentID is not known)",
            "format": "uuid"
          },
          "productId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft ProductID if present",
            "format": "int32"
          },
          "productIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "The Product used, identified as defined by the main external integration to SpeedyCraft"
          },
          "supplierId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft SupplierID if present",
            "format": "int32"
          },
          "modProductName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Product name as presented to useer of mobile device. This may have been changed by user."
          },
          "modPriceOut": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Price to end customer. This may have been changed by user.",
            "format": "double"
          },
          "modDiscount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Discount. 0,1 means 10 percent discount.",
            "format": "double"
          },
          "modPriceInNet": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Net price",
            "format": "double"
          },
          "preQuantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Proposed quantity of this ProductID at the current Assignment\n            \n            When this type of product is added, the current AssignmentProductID\n            is set as ParentAssignmentProductID of the new records added (and with prequantity = 0).",
            "format": "double"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Quantity added to the assignment",
            "format": "double"
          },
          "storageId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The StorageID of the storage facility this product has been picked from",
            "format": "int32"
          },
          "regDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when this record was created. Also, if added on mobile device, this is the local time the user actually made the record.",
            "format": "date-time"
          },
          "partlyInvoiceStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Invoice status",
            "format": "uint8"
          },
          "priceModified": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Set to 1 if price modified by user.",
            "format": "uint8"
          },
          "orderItemId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "OrderItem ID if this AssignmentProduct was created from checking-in an order.",
            "format": "int32"
          },
          "externalStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The External application may reject records that arrive from SpeedyCraft. \n            This is done by setting ExternalStatus = 1 and insert a message to user with info \n            on the record and what is wrong. Records with ExternalStatus = 1 are allowed to be \n            changed or deleted by user, even if they are synchronized.\n            \n            - 0: No change / All ok / Default value\n            - 1: Change. External application rejects the para and suggests that SpeedyCraft user changes it.\n            - 2: Item has been changed by SpeedyCraft user. Please import again.",
            "format": "uint8"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "parentAssignmentProductId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentProductID of Parent",
            "format": "int32"
          },
          "parentAssignmentProductIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "If AssignmentProducts are set up as a hierarchy, typically for using budgets and picked products, this may be used. \n            ParentAssignmentProductIdext is then a reference to the parent, identified as defined by the main external integration to SpeedyCraft"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "miscData1": {
            "type": [
              "null",
              "string"
            ],
            "description": "Misc data 1"
          },
          "miscData2": {
            "type": [
              "null",
              "string"
            ],
            "description": "Misc data 2"
          },
          "miscData3": {
            "type": [
              "null",
              "string"
            ],
            "description": "Misc data 3"
          },
          "miscData4": {
            "type": [
              "null",
              "string"
            ],
            "description": "Misc data 4"
          },
          "prePlanned": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "OBSOLETE! Please use PreQuantity.",
            "format": "uint8"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Sort order of the assignment product.",
            "format": "int32"
          },
          "productIdtext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of Product, as presented to the user of mobile device"
          },
          "assignmentNoteId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentNoteID if the AssignmentProduct has a corresponding LineTag",
            "format": "int32"
          },
          "assignmentProductDataDefinition": {
            "type": [
              "null",
              "string"
            ],
            "description": "QuestionList as defined in SpeedyCraft XML format. This allows extra properties on AssignmentProduct records."
          },
          "assignmentProductDataResponse": {
            "type": [
              "null",
              "string"
            ],
            "description": "AnswerList as defined in SpeedyCraft XML format. Values of properties defined in AssignmentProductDataDefinition are given here."
          },
          "processed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "May be set to true if someone goes through the list of products and this record has been processed."
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "supplierIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "Supplier where the product was bought, identified as defined by the main external integration to SpeedyCraft"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "storageIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "Storage where the product was taken from, identified as defined by the main external integration to SpeedyCraft"
          },
          "orderItemIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "If product was checked in from a purchase order, this is the reference defined by the main external integration to SpeedyCraft"
          },
          "assignmentNoteIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentNote, as defined by the main external integration to SpeedyCraft."
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Products registered on an assignment"
      },
      "TblAssignmentQualityControl": {
        "type": "object",
        "properties": {
          "assignmentQualityControlId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the AssignmentQualityControl.\n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the AssignmentQualityControl.",
            "format": "int32"
          },
          "assignmentQualityControlIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentQualityControl, as defined by the main external integration to SpeedyCraft."
          },
          "ownerId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The internal SpeedyCraft table ID, as defined by SchemaType. For example, Assignment.AssignmentID if OwnerType is 0 or 1",
            "format": "int32"
          },
          "ownerIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An external identifier for the owner entity, as defined by the main external integration to SpeedyCraft. For example, Assignment.AssignmentIDExt if OwnerType is 0 or 1"
          },
          "ownerUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the owner entity, e.g. Assignment.UID if OwnerType is 0 or 1",
            "format": "uuid"
          },
          "qualityControlId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If form definition is defined in tblQualityControl, this is the QualityControlID",
            "format": "int32"
          },
          "qualityControlIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An external identifier for the form template, as defined by the main external integration to SpeedyCraft"
          },
          "assignmentQualityControlDescription": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Description of this form answer"
          },
          "qualityControlAnswer": {
            "type": [
              "null",
              "string"
            ],
            "description": "AnswerList XML string as defined by SpeedyCraft XML format."
          },
          "signatureEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ID of Signature from Employee",
            "format": "int32"
          },
          "signatureEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An external identifier for employee signature of the form, as defined by the main external integration to SpeedyCraft"
          },
          "signatureCustomerId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ID of Signature from Customer",
            "format": "int32"
          },
          "signatureCustomerIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An external identifier for customer signature of the form, as defined by the main external integration to SpeedyCraft"
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when this record was created. Also, if added on mobile device, this is the local time the user actually made the record.",
            "format": "date-time"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "externalStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The External application may reject records that arrive from SpeedyCraft. \n            This is done by setting ExternalStatus = 1 and insert a message to user with info \n            on the record and what is wrong. Records with ExternalStatus = 1 are allowed to be \n            changed or deleted by user, even if they are synchronized.\n            \n            - 0: No change / All ok / Default value\n            - 1: Change. External application rejects the para and suggests that SpeedyCraft user changes it.\n            - 2: Item has been changed by SpeedyCraft user. Please import again.",
            "format": "uint8"
          },
          "qualityControlQuestion": {
            "type": [
              "null",
              "string"
            ],
            "description": "QuestionList XML string as defined by SpeedyCraft XML format.\n            If set, this would override tblQualityControl.QualityControlQuestion."
          },
          "schemaType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Defines what type of owner this form has. OwnerID refers to the id of that table.\n            \n            - 0: Assignment\n            - 1: Assignment additional properties/info on assignment\n            - 2: AssignmentProduct\n            - 3: RESERVED for AssignmentService\n            - 4: RESERVED\n            - 5: AssignmentObject\n            - 10: Object",
            "format": "uint8"
          },
          "requiredStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Status showing if required fields of the form has been filled in. \n            \n            - 0: No requirements are set to the form / All requirements of the form are met\n            - 1: Suggested (but not required) questions not answered\n            - 2: Required questions not answered",
            "format": "uint8"
          },
          "edokStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "A status telling whether the schema is uploaded to EDok (Boligmappa) or not.\n            \n            - 0: Not sent\n            - 1: Sent to Edok. All ok.\n            - 2: Sent to Edok, but failed for some reason.",
            "format": "uint8"
          },
          "edokRegTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when a form was uploaded to EDok (Boligmappa).",
            "format": "date-time"
          },
          "miscData1": {
            "type": [
              "null",
              "string"
            ],
            "description": "Misc data 1"
          },
          "processed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "May be set to true if someone goes through the list of forms and this record has been processed"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Filled-in form"
      },
      "TblAssignmentService": {
        "type": "object",
        "properties": {
          "assignmentServiceId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the AssignmentService. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the AssignmentService.",
            "format": "int32"
          },
          "assignmentServiceIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentService, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentServiceIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the AssignmentService, this is the AssignmentService number shown in the UI."
          },
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft ID of the Assignment",
            "format": "int32"
          },
          "assignmentIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the Assignment, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the linked Assignment (if AssignmentID is not known)",
            "format": "uuid"
          },
          "serviceDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "The date of the AssignmentService. This is when the service was done, and the date could be visible on invoice for end customer.",
            "format": "date-time"
          },
          "serviceId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The type of service made, as found in tblService.",
            "format": "int32"
          },
          "serviceIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An external identifier for service type, as defined by the main external integration to SpeedyCraft"
          },
          "modPrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Price for end customer",
            "format": "double"
          },
          "modDiscount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Discount. 0,1 means 10 percent discount.",
            "format": "double"
          },
          "modCostPrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Net price",
            "format": "double"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Quantity",
            "format": "double"
          },
          "serviceComment": {
            "maxLength": 500,
            "type": [
              "null",
              "string"
            ],
            "description": "Comment noted on service hours.\n            Please note that SpeedyCraft has a limit of 500 characters on this field."
          },
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The employee this service record is registered on.",
            "format": "int32"
          },
          "priceModified": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Price modified by SpeedyCraft user",
            "format": "uint8"
          },
          "externalStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The External application may reject records that arrive from SpeedyCraft. \n            This is done by setting ExternalStatus = 1 and insert a message to user with info \n            on the record and what is wrong. Records with ExternalStatus = 1 are allowed to be \n            changed or deleted by user, even if they are synchronized.\n            \n            - 0: No change / All ok / Default value\n            - 1: Change. External application rejects the para and suggests that SpeedyCraft user changes it.\n            - 2: Item has been changed by SpeedyCraft user. Please import again.",
            "format": "uint8"
          },
          "signatureId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If the service hours were signed on mobile device, this is where to find the SignatureID",
            "format": "int32"
          },
          "signatureIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the signature of this service, as defined by the main external integration to SpeedyCraft"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "By using SortOrder, you may control the sorting of LineTags independantly of RegTime, AssignmentNoteIDText and Note.\n            Please note that the user needs to select sorting LineTags by SortOrder in order to get this sorting.",
            "format": "int32"
          },
          "assignmentObjectId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentObjectID if the AssignmentService is connected to an AssignmentObject",
            "format": "int32"
          },
          "assignmentNoteId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "AssignmentNoteID if the AssignmentService has a corresponding LineTag",
            "format": "int32"
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when this record was created. Also, if added on mobile device, this is the local time the user actually made the record.",
            "format": "date-time"
          },
          "serviceStartTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Start time of day for the service. Used together with ServiceDate.\n            The format is 24h, like HH:mm. \n            \n            - Example: 13:45\n            - Please note that the string value may be of maximum 5 characters, and must include \":\"\n            - If not, an empty string will be used"
          },
          "serviceEndTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "End time of day for the service. Used together with ServiceDate.\n            The format is 24h, like HH:mm. \n            \n            - Example: 13:45\n            - Please note that the string value may be of maximum 5 characters, and must include \":\"\n            - If not, an empty string will be used"
          },
          "delivered": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Service delivered for approval"
          },
          "approved": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Approval status for service hour.\n            \n            - 0: Waiting for approval / Not yet approved\n            - 1: Approved \n            - 2: Rejected  (Please also see ExternalStatus)",
            "format": "uint8"
          },
          "approvedByEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The employee that last approved or rejected the service hour.",
            "format": "int32"
          },
          "approvedTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "The time when service was last approved or rejected",
            "format": "date-time"
          },
          "regWeb": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Service is registered on web"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "processed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "May be set to true if someone goes through the list of services and this record has been processed."
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "assignmentObjectIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentObject, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentNoteIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentNote, as defined by the main external integration to SpeedyCraft."
          },
          "employeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee, as defined by the main external integration to SpeedyCraft."
          },
          "approvedByEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An external identifier for the employee that approved this service hour record, as defined by the main external integration to SpeedyCraft"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Service hours and costs added to Assignment. Must include Assignment, Employee, Service and ServiceDate"
      },
      "TblAssignmentStatus": {
        "type": "object",
        "properties": {
          "assignmentStatusId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the AssignmentStatus.\n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the AssignmentStatus.",
            "format": "int32"
          },
          "assignmentStatusIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentStatus, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentStatusIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the AssignmentStatus, this is the AssignmentStatus number shown in the UI."
          },
          "description": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the AssignmentStatus"
          },
          "sortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "SortOrder. Sorting the statuses ascending.",
            "format": "int32"
          },
          "color": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Color of the AssignmentStatus"
          },
          "predefined": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The predefined values 1 (new), 2 (open), 3 (in progress) and 4 (completed) indicate that this AssignmentStatus has a specific meaning, and have the same behaviour as the original SpeedyCraft statuses. \n            Please make sure that max 1 status is set to these predefined values at the same time. Other should be set to Predefined = 0.",
            "format": "uint8"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "assignmentComplete": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "When mobile device user sets a status defined as AssignmentComplete, the Assignment will be removed from device."
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Status for assignments. \n            \n            Some statuses are preconfigured, but it is up to the integration with external system whether these should be used or not. \n            Make sure we end up with at least one status that has set AssignmentComplete = true."
      },
      "TblAssignmentType": {
        "type": "object",
        "properties": {
          "assignmentTypeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the AssignmentType. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the AssignmentType.",
            "format": "int32"
          },
          "assignmentTypeIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentType, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentTypeIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the AssignmentType, this is the AssignmentType number shown in the UI."
          },
          "description": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the AssignmentType"
          },
          "color": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Color of the AssignmentType"
          },
          "requireQualityControlOverride": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Override Assignment.RequireQualityControl. This parameter is not in use.",
            "format": "uint8"
          },
          "useAssignmentListChoice": {
            "type": [
              "null",
              "string"
            ],
            "description": "Assignment menu items to appear on this assignment. \n            \n            Please note that UseAssignmentListChoice parameter is present in multiple tables. The entries are overridden by this chain of priorities:\n            \n            - 1. Assignment\n            - 2. AssignmentType\n            - 3. UserProfile\n            \n            With * or empty string in Assignment, SpeedyCraft looks for the next.\n            Eventually UserProfile fallback value is used.\n            This string is semicolon-separated, and can have the following values:\n            \n            - \"*\" = Show all items [asterisk]\n            -  = Show none [blank]\n            - PRO = Assignment products\n            - SER = Assignment services\n            - OBJ = Assignment objects\n            - OTH = Other\n            - INV = Invoice comment\n            - JOB = Job description\n            - ANO = Assignment notes\n            - LTG = Line tag\n            - TOT = Total list\n            - ECO = Economy info\n            - CON = Contact info\n            \n            Example string: 'PRO;JOB;CON' -> Displays assignment products, job description and contact info."
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "useEmployee": {
            "type": [
              "null",
              "string"
            ],
            "description": "The list of available employees whan adding service hours on this assignment may be filtered by UseEmployee. * or empty string is considered as no filtering.    \n            Please note that UseEmployee parameter is present in multiple tables.The entries are overridden by this chain of priorities:  \n              \n            - 1. Assignment  \n            - 2. AssignmentType  \n            - 3. UserProfile"
          },
          "useService": {
            "type": [
              "null",
              "string"
            ],
            "description": "Defines what service hours types are to be shown when adding AssignmentService on Assignment. \n            \n            It is important to understand the hierarchy of how UseService is read from database on mobile devices.\n            Assignment.UseService has a higher priority than AssignmentType.UseService, so if * or empty string in\n            Assignment.UseService, it will look at AssignmentType.UseService.\n            Here is an overview on various alternatives:\n            \n            \n            Alternative 1. ”Union with UserProfile”. Assignment.UseService or AssignmentType.UseService without special text\n            - Example: 15;16;17;65\n            - gives access to ServiceIDs 15;16;17;65, but ONLY if these are included in the current UserProfile.UseService (using AND with user profile)\n            - Example: 0\n            - gives access to no ServiceIDs at all\n            \n            Alternative 2. ”In addition to UserProfile”. Using both Service Types from UserProfile and in current list from Assignment or AssignmentType.\n            - Special text UP: Using (ServiceIDs from Assignment / AssignmentType) OR (UserProfile.UseService)\n            - Example: UP;15;16;17;65\n            - gives access to ServiceIDs in current user profile plus 15;16;17;65 (using \"OR\" to UserProfile)\n            \n            Alternative 3. ”No UserProfile”. Skips the Service Types from UserProfile.UseService, and only gets them from Assignment.UseService / AssignmentType.UseService\n            - Special text NUP: Using only UseService from Assignment / AssignmentType, ignoring UserProfile completely\n            - Example: NUP;15;16;17;65\n            - gives only access to ServiceIDs 15;16;17;65\n            \n            Additional comments:\n            - Using both NUP and UP gives alternative 2.\n            - Setting Assignment.UseService = NUP  (without anything else), gives empty list of service types."
          },
          "useAssignmentObjectQualityControl": {
            "type": [
              "null",
              "string"
            ],
            "description": "OBSOLETE!\n            Replaced by UseQualityControl."
          },
          "workProcess": {
            "type": [
              "null",
              "string"
            ],
            "description": "WorkProcess for the Assignment.\n            Please note that WorkProcess entries are overridden by this chain of priorities:\n            \n            - 1: AssignmentParticipant\n            - 2: Assignment\n            - 3: AssignmentType\n            - 4: UserProfile"
          },
          "useQualityControl": {
            "type": [
              "null",
              "string"
            ],
            "description": "If only some form types are allowed for this AssignmentType, use UseQualityControl to set up this filter. * means all forms are allowed. Otherwise, semicolon separated list of QualityControlIDs"
          },
          "useQualityControlRequire": {
            "type": [
              "null",
              "string"
            ],
            "description": "List of forms that need to be filled in and signed in order to complete this assignment"
          },
          "useQualityControlAutoAdd": {
            "type": [
              "null",
              "string"
            ],
            "description": "Forms added to this list will be automatically added to the assignment when created. * means all forms are added. Otherwise, semicolon separated list of QualityControlIDs"
          },
          "qualityControlPreRequire": {
            "type": [
              "null",
              "string"
            ],
            "description": "Contains settings for requirements, where users need to fill in forms before start working with assignment."
          },
          "serviceApproveRequired": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if all service hours need to be approved on this assignment"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Use AssignmentType to categorise Assignments into various types."
      },
      "TblAttachment": {
        "type": "object",
        "properties": {
          "attachmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Attachment. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Attachment.",
            "format": "int32"
          },
          "attachmentIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Attachment, as defined by the main external integration to SpeedyCraft."
          },
          "attachmentIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Attachment, this is the Attachment number shown in the UI."
          },
          "attachmentType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "OBSOLETE! Please use OwnerType instead",
            "format": "uint8"
          },
          "description": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the attachment"
          },
          "fileName": {
            "maxLength": 250,
            "type": [
              "null",
              "string"
            ],
            "description": "Local filename of attachment (only filename, no path)"
          },
          "fileSize": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Filesize in bytes",
            "format": "int32"
          },
          "fileData": {
            "type": [
              "null",
              "string"
            ],
            "description": "Bytearray representing the actual file data. This is present only if IsOnServer is set.",
            "format": "byte"
          },
          "isOnServer": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set to true if file is present on server. \n            If false, the actual file has not yet been uploaded by mobile device."
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when this record was created. Also, if added on mobile device, this is the local time the user actually made the record.",
            "format": "date-time"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "ownerId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal ID of the table as defined by OwnerType. For example, Assignment.AssignmentID if OwnerType is 0 or 1",
            "format": "int32"
          },
          "ownerIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An external identifier for the owner entity, as defined by the main external integration to SpeedyCraft. For example, Assignment.AssignmentIDExt if OwnerType is 0 or 1"
          },
          "ownerUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the owner entity, e.g. Assignment.UID if OwnerType is 0 or 1",
            "format": "uuid"
          },
          "ownerType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Defines what type of owner this attachment has. Use constants from enOwnerType.\n            \n            - 1: Assignment\n            - 2: Message\n            - 3: AssignmentQualityControl\n            - 4: Object\n            - 5: AssignmentObject\n            - 12: QualityControl\n            - 13: Order (Purchase order)\n            - 15: Employee Signature (Related to the SignatureAttachmentID field in tblEmployee)",
            "format": "uint8"
          },
          "ownerIdtag": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Tag on the attachment. This could be used to several different purposes, e.g.:\n            - a QuestionID inside a form (positive number), if the attachment is owned by a form/AssignmentQualityControl (OwnerType=3).\n            - an AssignmentQualityControlID (positive number) if the attachment is owned by an Assignment (OwnerType=0), but based on an AssignmentQualityControl (when generated by postprocessing and added as attachment)\n            \n            - -1: Document (floorplan)\n            - -2: Exported Document (exported floorplan)",
            "format": "int32"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "edokStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "A status telling whether the schema is uploaded to EDok (Boligmappa) or not.\n            \n            - 0: Not sent\n            - 1: Sent to Edok. All ok.\n            - 2: Sent to Edok, but failed for some reason.",
            "format": "uint8"
          },
          "edokRegTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when a form was uploaded to EDok (Boligmappa).",
            "format": "date-time"
          },
          "databaseNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "In cloud solutions of SpeedyCraft, this will automatically be set to 9999, to indicate that the file has been uploaded to storage blob.\n            On-premise, obsolete info: The database number of the current attachment (according to the convention speedycraft_client_attX, where X denotes the database number).",
            "format": "int32"
          },
          "parentAttachmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If this attachment was based on another attachment, the ParentAttachment is to be set here. Usually, RevisionNumber is also incremented on the new and changed attachment.",
            "format": "int32"
          },
          "revisionNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Revision of the attachment document. Default is 0, and if this document is changed a new attachment is created with RevisionNumber = ParentAttachment.RevisionNumber+1. Also see ParentAttachmentID.",
            "format": "int32"
          },
          "scTimeStamp": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date / time when this record was synced from mobile device (created on server)",
            "format": "date-time"
          },
          "processed": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "May be set to true if someone goes through the list of products and this record has been processed."
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Attachments are documents or other files that could be added to assignments or other entities."
      },
      "TblCustomer": {
        "type": "object",
        "properties": {
          "customerId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the customer. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the customer.",
            "format": "int32"
          },
          "customerIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the customer, as defined by the main external integration to SpeedyCraft."
          },
          "customerIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the customer, this is the customer number shown in the UI."
          },
          "organizationNumber": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "Organization number for the customer"
          },
          "companyLastname": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Company name for company customers, Lastname for private customers."
          },
          "contactFirstname": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Firstname for private customers. Using this field for contact is deprecated, please use separate Contact endpoint."
          },
          "address": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Address for the customer. Please note that there is a separate Address endpoint as well, if multiple addresses are relevant."
          },
          "address2": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Address2 for the customer. Please note that there is a separate Address endpoint as well, if multiple addresses are relevant."
          },
          "postalNumber": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "PostalNumber for the customer."
          },
          "postalPlace": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "PostalPlace for the customer."
          },
          "phone": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Phone for the customer."
          },
          "phone2": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Phone 2 for the customer."
          },
          "mobile": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Mobile for the customer."
          },
          "fax": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Fax for the customer."
          },
          "email": {
            "maxLength": 250,
            "type": [
              "null",
              "string"
            ],
            "description": "Email for the customer."
          },
          "discountProduct": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Default discount for this customer on assignment products",
            "format": "double"
          },
          "discountService": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Default discount for this customer on assignment service",
            "format": "double"
          },
          "status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The creditworthyness status of the customer.\n            \n            - 0: Creditworthy / green light\n            - 1: Medium Creditworthy / yellow light. Adding work orders using this customer should give a warning.\n            - 2: Not Creditworthy / red light. Adding work orders using this customer should not be allowed.",
            "format": "uint8"
          },
          "departmentIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "External identity of department on this customer, as defined by main integration to SpeedyCraft"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "externalStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The External application may reject records that arrive from SpeedyCraft. \n            This is done by setting ExternalStatus = 1 and insert a message to user with info \n            on the record and what is wrong. Records with ExternalStatus = 1 are allowed to be \n            changed or deleted by user, even if they are synchronized.\n            \n            - 0: No change / All ok / Default value\n            - 1: Change. External application rejects the para and suggests that SpeedyCraft user changes it.\n            - 2: Item has been changed by SpeedyCraft user. Please import again.",
            "format": "uint8"
          },
          "gpspositionStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "GPS Position status\n            \n            - 0: Invalid. GPS Position not set or GPS Position status ignored\n            - 1: GPS fix (SPS)\n            - 2: DGPS fix\n            - 3: PPS fix\n            - 4: Real Time Kinematic\n            - 5: Float RTK\n            - 6: Estimated (dead reckoning)\n            - 7: Manual input mode\n            - 8: Simulation mode\n            - 100: Valid GPS Position, set by SpeedyCraft API.\n            - 200: Have tried to search for GPS Position, but was unable to find a valid position. Invalid GPS Position.",
            "format": "uint8"
          },
          "gpspositionLat": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPositionLat for the customer, degrees",
            "format": "double"
          },
          "gpspositionLon": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPositionLon for the customer, degrees",
            "format": "double"
          },
          "gpspositionAlt": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPositionAlt for the customer, meters",
            "format": "double"
          },
          "gpspositionAccuracy": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPositionAccuracy for the customer, meters",
            "format": "double"
          },
          "gpspositionInfo": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "GPSPositionInfo for the customer."
          },
          "notes": {
            "type": [
              "null",
              "string"
            ],
            "description": "Notes on the customer"
          },
          "regEmployeeIDExt": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the employee that registered the customer"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "End Customer data. Several other entities rely on a link to customer, such as Assignment, Project, Object (optional)."
      },
      "TblCustomerSite": {
        "type": "object",
        "properties": {
          "customerSiteId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the CustomerSite. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the CustomerSite.",
            "format": "int32"
          },
          "customerSiteIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the CustomerSite, as defined by the main external integration to SpeedyCraft."
          },
          "customerSiteIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the CustomerSite, this is the CustomerSite number shown in the UI."
          },
          "customerId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Get internal SpeedyCraft Customer ID",
            "format": "int32"
          },
          "customerIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the customer of this customersite, as defined by the main external integration to SpeedyCraft"
          },
          "customerUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "A GUID identifier for the customer of this customersite",
            "format": "uuid"
          },
          "siteName": {
            "maxLength": 250,
            "type": [
              "null",
              "string"
            ],
            "description": "Get or set the name of the Customer Site"
          },
          "siteAddress": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Get or set the address of the Customer Site"
          },
          "sitePostalNumber": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Get or set the postal number of the Customer Site"
          },
          "sitePostalPlace": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Get or set the postal place of the Customer Site"
          },
          "siteCountryCode": {
            "maxLength": 10,
            "type": [
              "null",
              "string"
            ],
            "description": "Get or set the country code of the Customer Site. \n            Country codes must be according to the ISO 3166 2-letter code standard.\n            Example: Norway = NO, UK = Great Britain, Sweden = SE, Denmark = DK."
          },
          "gpspositionStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "GPS Position status\n            \n            - 0 = Invalid. GPS Position not set or GPS Position status ignored\n            - 1 = GPS fix (SPS)\n            - 2 = DGPS fix\n            - 3 = PPS fix\n            - 4 = Real Time Kinematic\n            - 5 = Float RTK\n            - 6 = estimated (dead reckoning) (2.3 feature)\n            - 7 = Manual input mode\n            - 8 = Simulation mode\n            - 100: Valid GPS Position, set by SpeedyCraft Live.\n            - 200: Have tried to search for GPS Position, but was unable to find a valid position. Invalid GPS Position.",
            "format": "uint8"
          },
          "gpspositionLat": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Latitude (decimal degree value)",
            "format": "double"
          },
          "gpspositionLon": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Longitude (decimal degree value)",
            "format": "double"
          },
          "gpspositionAlt": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Altitude (meters)",
            "format": "double"
          },
          "gpspositionAccuracy": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Accuracy (meters)",
            "format": "double"
          },
          "gpspositionInfo": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "GPSPosition info. A description on how the GPS position was found."
          },
          "contactFirstname": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Get or set Contact Firstname"
          },
          "contactLastname": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Get or set Contact Lastname"
          },
          "phone": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Get or set Phone"
          },
          "mobile": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Get or set Mobile"
          },
          "municipalityNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Get or set Municipality Number [Norwegian: Kommunenummer]",
            "format": "int32"
          },
          "cadastralUnitNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Get or set Cadastral Unit Number  [Norwegian: Gårdsnummer]",
            "format": "int32"
          },
          "propertyUnitNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Get or set Property Unit Number [Norwegian: Bruksnummer]",
            "format": "int32"
          },
          "leaseholdUnitNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Get or set Leasehold Unit Number [Norwegian: Festenummer]",
            "format": "int32"
          },
          "sectionUnitNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Get or set Section Unit Number [Norwegian: Seksjonsnummer]",
            "format": "int32"
          },
          "edokNumber": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Get or set EDokNumber (from Boligmappa)"
          },
          "edokPlantId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Get or set EDok Plant ID",
            "format": "int64"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Get the internal SpeedyCraft RegEmployee ID",
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the employee that registered the customersite"
          },
          "regEmployeeUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the employee that added this customersite (if RegEmployeeID is not known)",
            "format": "uuid"
          },
          "shareUnitNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Get or set Share Unit Number [Norwegian: Andelsnummer]",
            "format": "int32"
          },
          "edokBuildingPlantId": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "If this address is connected to Edok (Boligmappa), the Building Plant Id is stored here for future reference."
          },
          "cooperativeOrganizationNumber": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Organization number for cooperative housing (Norwegian: Borettslagets orgnummer)"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Address or contact details for a customer or assignment. Please note that there are now also separate Contact and Address endpoints that will replace CustomerSite in the future."
      },
      "TblDepartment": {
        "type": "object",
        "properties": {
          "departmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the department. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the department.",
            "format": "int32"
          },
          "departmentIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the department, as defined by the main external integration to SpeedyCraft."
          },
          "departmentIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the department, this is the department number shown in the UI."
          },
          "description": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Name of the department"
          },
          "address": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Address for the department."
          },
          "postalNumber": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "PostalNumber for the department."
          },
          "postalPlace": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "PostalPlace for the department."
          },
          "countryCode": {
            "maxLength": 10,
            "type": [
              "null",
              "string"
            ],
            "description": "Two-letter representation of country, as defined by ISO 3166-2: https://en.wikipedia.org/wiki/ISO_3166-2"
          },
          "gpspositionStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "GPS Position status\n            \n            - 0: Invalid. GPS Position not set or GPS Position status ignored\n            - 1: GPS fix (SPS)\n            - 2: DGPS fix\n            - 3: PPS fix\n            - 4: Real Time Kinematic\n            - 5: Float RTK\n            - 6: Estimated (dead reckoning)\n            - 7: Manual input mode\n            - 8: Simulation mode\n            - 100: Valid GPS Position, set by SpeedyCraft API.\n            - 200: Have tried to search for GPS Position, but was unable to find a valid position. Invalid GPS Position.",
            "format": "uint8"
          },
          "gpspositionLat": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPositionLat for the department, degrees",
            "format": "double"
          },
          "gpspositionLon": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPositionLon for the department, degrees",
            "format": "double"
          },
          "gpspositionAlt": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPositionAlt for the department, meters",
            "format": "double"
          },
          "gpspositionAccuracy": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPositionAccuracy for the department, meters",
            "format": "double"
          },
          "gpspositionInfo": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "GPSPositionInfo for the department."
          },
          "phone": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Phone for the department."
          },
          "mobile": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Mobile for the department."
          },
          "email": {
            "maxLength": 250,
            "type": [
              "null",
              "string"
            ],
            "description": "Email for the department."
          },
          "responsibleEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Identity of the Employee responsible for the Department.",
            "format": "int32"
          },
          "responsibleEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External identity of responsible for the department, as defined by main integration to the api."
          },
          "defaultStorageId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Identity of the Default Storage for the Department.",
            "format": "int32"
          },
          "defaultStorageIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External identity of default storage for the department, as defined by main integration to the api."
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Department data for a client is stored here. Department link is used for Employee, Work orders (Assignment), Projects etc."
      },
      "TblDimension": {
        "type": "object",
        "properties": {
          "dimensionId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "dimensionIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ]
          },
          "dimensionIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ]
          },
          "icon": {
            "type": [
              "null",
              "string"
            ]
          },
          "color": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ]
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "uint8"
          },
          "parentDimensionId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "parentDimensionIdext": {
            "type": [
              "null",
              "string"
            ]
          },
          "passiveDimension": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "uint8"
          },
          "useOnCustomer": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "useOnAssignment": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "useOnAssignmentProduct": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "useOnAssignmentService": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "subSelectMax": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "subSelectMin": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "useOnEmployee": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "TblDimensionLink": {
        "type": "object",
        "properties": {
          "dimensionLinkId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "dimensionLinkIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ]
          },
          "dimensionLinkIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ]
          },
          "dimensionId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "dimensionIdext": {
            "type": [
              "null",
              "string"
            ]
          },
          "linkTableType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Specifies which database table a link is connected to: 1 = Customer, 2 = Assignment, 3 = AssignmentProduct, 4 = AssignmentService, 5 = Employee",
            "format": "uint8"
          },
          "linkTableId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "linkTableIdext": {
            "type": [
              "null",
              "string"
            ]
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ]
          },
          "lastSyncPocketPcid": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "TblEmployee": {
        "type": "object",
        "properties": {
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the employee. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the employee.",
            "format": "int32"
          },
          "employeeIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee, as defined by the main external integration to SpeedyCraft."
          },
          "employeeIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the employee, this is the employee number shown in the UI."
          },
          "lastname": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Lastname of the employee"
          },
          "firstname": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Firstname of the employee"
          },
          "phone": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Phone number of the employee"
          },
          "mobile": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Mobile phone number of the employee"
          },
          "fax": {
            "maxLength": 20,
            "type": [
              "null",
              "string"
            ],
            "description": "Fax number of the employee"
          },
          "email": {
            "maxLength": 250,
            "type": [
              "null",
              "string"
            ],
            "description": "Email address of the employee"
          },
          "userProfileId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "User Profile set to the employee.",
            "format": "int32"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "pocketPcid": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ID of the Employee's Mobile device.",
            "format": "int32"
          },
          "isOfficeClerk": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set to true if the employee could be an Office Clerk of work orders. The list of office clerks may be further limited by user profiles."
          },
          "serviceApproveRequired": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set if the employees services requires approval from other than self."
          },
          "departmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The ID of the Department to which the Employee belongs",
            "format": "int32"
          },
          "departmentIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External identity of department on this employee, as defined by main integration to SpeedyCraft"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          },
          "hasMobileDevice": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if the employee has a mobile device registered"
          }
        },
        "description": "Employee data. Several other entities rely on a link to an employee, such as service hours (AssignmentService) and registered employee (RegEmployeeID)."
      },
      "TblMessage": {
        "type": "object",
        "properties": {
          "messageId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Message. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Message.",
            "format": "int32"
          },
          "messageIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Message, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If message is related to an Assignment, this is the AssignmentID",
            "format": "int32"
          },
          "assignmentIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the linked Assignment, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the linked Assignment (if AssignmentID is not known)",
            "format": "uuid"
          },
          "fromEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "EmployeeID of the message sender",
            "format": "int32"
          },
          "fromEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "Message from this employee, as defined by the main external integration to SpeedyCraft"
          },
          "toEmployeeId": {
            "type": [
              "null",
              "string"
            ],
            "description": "EmployeeIDs of the recievers. Please use SetToEmployeeIDExt to set it."
          },
          "toEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "Message to employee recievers, as defined by the main external integration to SpeedyCraft. Semicolon separated list."
          },
          "subject": {
            "type": [
              "null",
              "string"
            ],
            "description": "Subject of the message"
          },
          "body": {
            "type": [
              "null",
              "string"
            ],
            "description": "Message body"
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when this record was created. Also, if added on mobile device, this is the local time the user actually made the record.",
            "format": "date-time"
          },
          "readStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "0 = not read, 1 = read.",
            "format": "uint8"
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Messages regarding data in SpeedyCraft could be added here. These could have links to assignments etc and may be sent to the person registered the record, typically to add info on incorrect data."
      },
      "TblObject": {
        "type": "object",
        "properties": {
          "objectId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Object. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Object.",
            "format": "int32"
          },
          "objectIdext": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Object, as defined by the main external integration to SpeedyCraft."
          },
          "objectIdtext": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Object, this is the Object number shown in the UI."
          },
          "parentObjectId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft ObjectID of parent object",
            "format": "int32"
          },
          "parentObjectIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "Objects may be organized in a hierarchy. ParentObjectIdext gives a unique identity of the parent object, as defined by the main external integration to SpeedyCraft"
          },
          "parentObjectUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Objects may be organized in a hierarchy. ParentObjectUID gives a unique identity of the parent object, defined when object was created.",
            "format": "uuid"
          },
          "passiveObject": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set true if the object is only a parent object not to be used in connection to assignments. This is useful for building up a hierarchy of objects."
          },
          "objectTypeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Objects may be categorized into various types using ObjectType.",
            "format": "int32"
          },
          "objectTypeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "Objects may be categorized into various types using ObjectType. ObjectTypeIdext gives a unique identity of the object type, as defined by the main external integration to SpeedyCraft."
          },
          "objectTypeUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Objects may be categorized into various types using ObjectType. ObjectTypeUID gives a unique identity of the object type.",
            "format": "uuid"
          },
          "customerId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If object has a customer connection, this is the CustomerID",
            "format": "int32"
          },
          "customerIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the customer of this object, as defined by the main external integration to SpeedyCraft"
          },
          "customerUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "A GUID identifier for the customer of this object",
            "format": "uuid"
          },
          "description": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Object description"
          },
          "additionalInfo": {
            "type": [
              "null",
              "string"
            ],
            "description": "Information about the object"
          },
          "objectTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Datetime set on the object",
            "format": "date-time"
          },
          "serialnumber": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Serial number of the object"
          },
          "location": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Location of the object"
          },
          "objectDataDefinition": {
            "type": [
              "null",
              "string"
            ],
            "description": "QuestionList XML string as defined by SpeedyCraft XML format. Extra properties are defined here."
          },
          "objectDataResponse": {
            "type": [
              "null",
              "string"
            ],
            "description": "AnswerList XML string as defined by SpeedyCraft XML format. Extra property values are put here."
          },
          "assignmentObjectDataDefinition": {
            "type": [
              "null",
              "string"
            ],
            "description": "QuestionList XML string as defined by SpeedyCraft XML format. \n            This string will be copied to AssignmentObject.ObjectDataDefinition whenever this object is\n            used to create AssignmentObjects."
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when this record was created. Also, if added on mobile device, this is the local time the user actually made the record.",
            "format": "date-time"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this object, as defined by the main external integration to SpeedyCraft"
          },
          "regEmployeeUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the employee that added this object (if RegEmployeeID is not known)",
            "format": "uuid"
          },
          "defaultOnline": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Not implemented yet. DefaultOnline will be used to indicate that the object is usually not present on mobile devices, but may be downloaded on demand."
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "gpspositionStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "GPS Position status\n            \n            - 0 = Invalid. GPS Position not set or GPS Position status ignored\n            - 1 = GPS fix (SPS)\n            - 2 = DGPS fix\n            - 3 = PPS fix\n            - 4 = Real Time Kinematic\n            - 5 = Float RTK\n            - 6 = estimated (dead reckoning) (2.3 feature)\n            - 7 = Manual input mode\n            - 8 = Simulation mode\n            - 100: Valid GPS Position, set by SpeedyCraft Live.\n            - 200: Have tried to search for GPS Position, but was unable to find a valid position. Invalid GPS Position.",
            "format": "uint8"
          },
          "gpspositionLat": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Latitude (decimal degree value)",
            "format": "double"
          },
          "gpspositionLon": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Longitude (decimal degree value)",
            "format": "double"
          },
          "gpspositionAlt": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Altitude (meters)",
            "format": "double"
          },
          "gpspositionAccuracy": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Accuracy (meters)",
            "format": "double"
          },
          "gpspositionInfo": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "GPSPosition info. A description on how the GPS position was found."
          },
          "geometryTypeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Reference to GeometryType. If the object has a GeometryType connection, the GeometryID is set here. \n            This way you might set an icon on the object, or e.g. set if it should be drawn as a line or polygon.",
            "format": "int32"
          },
          "readOnly": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ReadOnly value.\n            Set this to disable mobile device user from changing values/properties on the Object.\n            \n            - 0: The Object is readable and writable (default)\n            - 1: ReadOnly. All properties on the Object are readonly (disabled), nothing may be changed by mobile device user.",
            "format": "uint8"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Physical objects"
      },
      "TblObjectType": {
        "type": "object",
        "properties": {
          "objectTypeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the ObjectType. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the ObjectType.",
            "format": "int32"
          },
          "objectTypeIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the ObjectType, as defined by the main external integration to SpeedyCraft."
          },
          "objectTypeIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the ObjectType, this is the ObjectType number shown in the UI."
          },
          "description": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Description"
          },
          "objectDataDefinition": {
            "type": [
              "null",
              "string"
            ],
            "description": "ObjectDataDefinition is an XML formatted as QuestionList defining additional properties of objects made from this ObjectType.\n            When users add objects of this ObjectType, this ObjectDataDefinition is copied to tblObject.ObjectDataDefinition."
          },
          "assignmentObjectDataDefinition": {
            "type": [
              "null",
              "string"
            ],
            "description": "AssignmentObjectDataDefinition is an XML formatted as QuestionList defining additional properties of AssignmentObjects made from objects of this ObjectType.\n            When users add objects of this ObjectType, this AssignmentObjectDataDefinition is copied to tblObject.AssignmentObjectDataDefinition. \n            When in turn the object is connected to an assignment and an AssignmentObject is created, the tblObject.AssignmentObjectDataDefinition\n            is copied to tblAssignmentObject.AssignmentObjectDataDefinition forming the additional properties of the AssignmentObject."
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "useQualityControl": {
            "type": [
              "null",
              "string"
            ],
            "description": "UseQualityControl includes all records from tblQualityControl that are supposed to be available when adding new\n            forms to Assignment, AssignmentObject etc. The field tblQualityControl.SchemaType will in turn denote what the form is linked to. \n            Value examples:\n            \n            * \"*\": All forms in tblQualityControl are valid for use with this objecttype  (default value)\n            * 0 or empty string or null: No forms in tblQualityControl are valid for use with this objecttype\n            * 13;15;23;50: Forms according to these QualityControlIDs are valid for use with this objecttype"
          },
          "parentObjectTypeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ObjectTypes may be organized in a hierarchy. ParentObjectTypeId gives a unique identity of the parent object type",
            "format": "int32"
          },
          "parentObjectTypeIdExt": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "ObjectTypes may be organized in a hierarchy. \n            ParentObjectTypeId gives a unique identity of the parent object type, as defined by the main external integration to SpeedyCraft."
          },
          "parentObjectTypeUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "ObjectTypes may be organized in a hierarchy. ParentObjectTypeId gives a unique identity of the parent object type.",
            "format": "uuid"
          },
          "passiveObjectType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If set passive, objects of this type will also be set passive. \n            This means that they are only a visible part of the object hierarchy - and it is not possible to use them for AssignmentObject creation.",
            "format": "uint8"
          },
          "geometryTypeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Reference to GeometryType. If the object has a GeometryType connection, the GeometryID is set here. \n            This way you might set an icon on the object, or e.g. set if it should be drawn as a line or polygon.",
            "format": "int32"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Objects may be categorized into various types using ObjectType. \n            To be able to create object on mobile device, object types need to be set up. \n            Object types may have various properties that differ from other object types."
      },
      "TblOrder": {
        "type": "object",
        "properties": {
          "orderId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Order. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Order.",
            "format": "int32"
          },
          "orderIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Order, as defined by the main external integration to SpeedyCraft."
          },
          "orderIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Order, this is the Order number shown in the UI."
          },
          "supplierId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "SupplierID where the products of this order will be bought",
            "format": "int32"
          },
          "supplierIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "Supplier where the products of this order will be bought, identified as defined by the main external integration to SpeedyCraft"
          },
          "orderDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "The datetime this order was made",
            "format": "date-time"
          },
          "orderType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The destination of the order. When products arrive, where should they be placed?\n            Allowed values:\n            \n            - 0 = Storage. StorageID has to be set in Order.DestinationId\n            - 1 = Assignment. AssignmentID has to be set in Order.DestinationId",
            "format": "uint8"
          },
          "destinationId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The internal SpeedyCraft ID of corresponding table, as defined by OrderType.",
            "format": "int32"
          },
          "destinationIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "ID of corresponding table, identified as defined by the main external integration to SpeedyCraft"
          },
          "ourReference": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Our reference"
          },
          "ourReferenceCode": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Our reference code"
          },
          "deliveryName": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Delivery name of the order."
          },
          "deliveryAddress": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Delivery address of the order."
          },
          "deliveryPostalNumber": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Delivery postal number of the order."
          },
          "deliveryPostalPlace": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Delivery postal place of the order."
          },
          "deliveryDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Delivery date of the order, as set by confirmation file",
            "format": "date-time"
          },
          "packageText": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Package text"
          },
          "supplierTransportId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ID representing wanted shipment method, as defined by SupplierTransport",
            "format": "int32"
          },
          "supplierTransportDetail": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "If SupplierTransportID represents shipment to a GPS Position instead of an address, the GPS Position is provided here"
          },
          "message": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Message on parcel"
          },
          "checkStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Status on whether the goods have been checked in (delivered) to assignment/storage or not.\n            Please note that each OrderItem also has a separate CheckStatus, while this holds the status for the purchase order as a whole.\n            Possible values:\n            \n            - 0: Not received\n            - 1: Partly received\n            - 2: All received",
            "format": "uint8"
          },
          "filename": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Filename of downloaded confirmation file"
          },
          "communicationStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Status of electronic communication (send/recieve) with the supplier for the order.\n            Possible values are\n            \n            - 0: Not Sent / order is not yet complete, and will not be sent\n            - 1: Sent to supplier\n            - 2: Confirmed by supplier\n            - 3: Confirmed (Order based on confirmation)\n            - 4: Pending / Order is to be sent to supplier on next occation",
            "format": "uint8"
          },
          "orderChief": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "OrderChief defines who is in charge of the order. This means who is allowed to change the contents, send it, or to check-in of the products.\n            Possible values are\n            \n            - 0: Office (External application or SpeedyCraft Admin) is in charge of the order\n            - 1: Mobile device is in charge",
            "format": "uint8"
          },
          "completelyCheckedInDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "The datetime where all products were completely checked in.",
            "format": "date-time"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this assignment, as defined by the main external integration to SpeedyCraft"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "externalStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The External application may reject records that arrive from SpeedyCraft. \n            This is done by setting ExternalStatus = 1 and insert a message to user with info \n            on the record and what is wrong. Records with ExternalStatus = 1 are allowed to be \n            changed or deleted by user, even if they are synchronized.\n            \n            - 0: No change / All ok / Default value\n            - 1: Change. External application rejects the para and suggests that SpeedyCraft user changes it.\n            - 2: Item has been changed by SpeedyCraft user. Please import again.",
            "format": "uint8"
          },
          "supplierOrderConfigId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ID of supplier configuration as defined in SupplierOrderConfig",
            "format": "int32"
          },
          "supplierOrderConfigIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "ID of supplier configuration as defined in SupplierOrderConfig, as defined by the main external integration to SpeedyCraft"
          },
          "supplierOrderId": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "ID from supplier, as given by the confirmation file"
          },
          "returning": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set to true if this order is for returning products to supplier. \n            Please note that Quantities in OrderItem will be positive when returning products and Returning = true."
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Purchase orders are defined in Order. These are purchase orders where we want to add products for ordering at a supplier, for filling up stock (destination storage) or use on assignment (destination assignment)."
      },
      "TblOrderAuto": {
        "type": "object",
        "properties": {
          "orderAutoId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the OrderAuto. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the OrderAuto.",
            "format": "int32"
          },
          "orderAutoIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the OrderAuto, as defined by the main external integration to SpeedyCraft."
          },
          "orderAutoIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the OrderAuto, this is the OrderAuto number shown in the UI."
          },
          "storageId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft ID of the Storage",
            "format": "int32"
          },
          "productId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft ID of the Product",
            "format": "int32"
          },
          "quantityMin": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Minimum quantity on storage. When below -> order this product.",
            "format": "double"
          },
          "quantityMax": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Maximum quantity on storage. When ordering, we want to fill up to this limit (or above).",
            "format": "double"
          },
          "quantityDefault": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Default packing quantity for this product. This is used when ordering, to make sure that only complete packages are ordered.",
            "format": "double"
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Minimum and maximum level parameters set for a product on a specific storage. These are used to automatically fill up a storage/warehouse together with current stock level."
      },
      "TblOrderItem": {
        "type": "object",
        "properties": {
          "orderItemId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the OrderItem. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the OrderItem.",
            "format": "int32"
          },
          "orderItemIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the OrderItem, as defined by the main external integration to SpeedyCraft."
          },
          "orderId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft ID of the Order",
            "format": "int32"
          },
          "orderIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Order, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentProductId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft ID of the AssignmentProduct, if checked-in to Assignment",
            "format": "int32"
          },
          "assignmentProductIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the AssignmentProduct, if checked-in to Assignment, as defined by the main external integration to SpeedyCraft."
          },
          "productId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If provided, this is the internal SpeedyCraft Product ID",
            "format": "int32"
          },
          "productIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "The Product used, identified as defined by the main external integration to SpeedyCraft"
          },
          "productIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "ID of product as presented to user."
          },
          "modProductName": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Name of product"
          },
          "orderQuantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Quantity for this product in the original purchase order",
            "format": "double"
          },
          "deliveredQuantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Delivered Quantity as given by confirmation file",
            "format": "double"
          },
          "restQuantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Rest Quantity (not yet delivered) as given by confirmation file",
            "format": "double"
          },
          "price": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Default end user price as given by confirmation file",
            "format": "double"
          },
          "discount": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Discount from default end user price",
            "format": "double"
          },
          "deliveryDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Delivery date as set by confirmation file",
            "format": "date-time"
          },
          "restDeliveryDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Rest delivery date as set by confirmation file",
            "format": "date-time"
          },
          "unit": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Unit of the quantity"
          },
          "itemCheckStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Status on whether the product has been checked in (delivered) to assignment/storage or not.\n            Possible values:\n            \n            - 0: Not received\n            - 1: Partly received\n            - 2: All received",
            "format": "uint8"
          },
          "alreadyCheckedInQuantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "The quantity already checked-in",
            "format": "double"
          },
          "checkInQuantityNow": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "The quantity we want to check-in now. Typically used by methods like Order.CheckInToDestination",
            "format": "double"
          },
          "externalStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The External application may reject records that arrive from SpeedyCraft. \n            This is done by setting ExternalStatus = 1 and insert a message to user with info \n            on the record and what is wrong. Records with ExternalStatus = 1 are allowed to be \n            changed or deleted by user, even if they are synchronized.\n            \n            - 0: No change / All ok / Default value\n            - 1: Change. External application rejects the para and suggests that SpeedyCraft user changes it.\n            - 2: Item has been changed by SpeedyCraft user. Please import again.",
            "format": "uint8"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the employee that registered the OrderItem"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "lineNumber": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Line number within the order. This is used to match lines from order to confirmation file.",
            "format": "int32"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Products in a purchase order are set up in OrderItem."
      },
      "TblPermission": {
        "type": "object",
        "properties": {
          "permissionId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Permission. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Permission.",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Name of the Permission\n            This is used to check for access etc in code."
          },
          "description": {
            "maxLength": 200,
            "type": [
              "null",
              "string"
            ],
            "description": "Description for the Permission"
          },
          "translationKey": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Key for translation of current Permission"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Permission controls access to data, edit options and user interface restrictions. Sets of permissions may be set up in Roles, and given to users via UserRole."
      },
      "TblPocketPc": {
        "type": "object",
        "properties": {
          "pocketPcid": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ID of the Employee's Mobile device.",
            "format": "int32"
          },
          "pocketPcserial": {
            "maxLength": 250,
            "type": [
              "null",
              "string"
            ],
            "description": "Serial number of the mobile device."
          },
          "employeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee, as defined by the main external integration to SpeedyCraft."
          },
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "EmployeeID of the mobile device",
            "format": "int32"
          },
          "softwareVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "Version of the SpeedyCraft Mobile app installed on the mobile device."
          },
          "syncDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time of the last synchronization.",
            "format": "date-time"
          },
          "syncStorage": {
            "type": [
              "null",
              "string"
            ],
            "description": "Semicolon separated list of StorageIDs where stock quantities should be synced to mobile device"
          },
          "forceGenerate": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Flag to force data regeneration during next synchronization.\n            \n            - 0: No change\n            - 1: Force data regeneration, but allow the user to sync mobile device data first.\n            - 2: Force data regeneration, do not allow any sync first.",
            "format": "uint8"
          },
          "deviceType": {
            "type": [
              "null",
              "string"
            ],
            "description": "Type and model of mobile device"
          },
          "deviceOsversion": {
            "type": [
              "null",
              "string"
            ],
            "description": "Operating system version running on the mobile device."
          },
          "softwarePlatform": {
            "type": [
              "null",
              "string"
            ],
            "description": "Software platform, ANDROID, WIN32 or IOS"
          },
          "softwareType": {
            "type": [
              "null",
              "string"
            ],
            "description": "SCM for SpeedyCraft Mobile"
          },
          "gcmtoken": {
            "type": [
              "null",
              "string"
            ],
            "description": "Messaging token for push notifications."
          }
        },
        "description": "A mobile device for an employee"
      },
      "TblPosition": {
        "type": "object",
        "properties": {
          "positionId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Position. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Position.",
            "format": "int32"
          },
          "positionIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Position, as defined by the main external integration to SpeedyCraft."
          },
          "positionIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Position, this is the Position number shown in the UI."
          },
          "ownerType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Defines what type of owner this Position has.\n            \n            - 0 = Undefined (has no owner, should not occur)\n            - 4 = Object; OwnerID is the ObjectID of the Object this Position belongs to",
            "format": "uint8"
          },
          "ownerId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal ID of the table as defined by OwnerType",
            "format": "int32"
          },
          "ownerIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An external identifier for the owner entity, as defined by the main external integration to SpeedyCraft. For example, Object.ObjectIDExt if OwnerType is 4"
          },
          "gpspositionStatus": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "GPS Position status\n            \n            - 0: Invalid. GPS Position not set or GPS Position status ignored\n            - 1: GPS fix (SPS)\n            - 2: DGPS fix\n            - 3: PPS fix\n            - 4: Real Time Kinematic\n            - 5: Float RTK\n            - 6: Estimated (dead reckoning)\n            - 7: Manual input mode\n            - 8: Simulation mode\n            - 100: Valid GPS Position, set by SpeedyCraft API.",
            "format": "uint8"
          },
          "gpspositionLat": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Latitude (decimal degree value)",
            "format": "double"
          },
          "gpspositionLon": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Longitude (decimal degree value)",
            "format": "double"
          },
          "gpspositionAlt": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Altitude (meters)",
            "format": "double"
          },
          "gpspositionAccuracy": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "GPSPosition Accuracy (meters)",
            "format": "double"
          },
          "gpspositionInfo": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "GPSPosition info. A description on how the GPS position was found."
          },
          "regTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Date and time when this record was created. Also, if added on mobile device, this is the local time the user actually made the record.",
            "format": "date-time"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "General table for spatial positions. Primarily used for objects with geometry (lines, polygons)."
      },
      "TblProduct": {
        "type": "object",
        "properties": {
          "productId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Product. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Product.",
            "format": "int32"
          },
          "productIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Product, as defined by the main external integration to SpeedyCraft."
          },
          "productIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Product, this is the Product number shown in the UI."
          },
          "eancode": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "EAN code. Used for scanning barcode of the product."
          },
          "productName": {
            "maxLength": 500,
            "type": [
              "null",
              "string"
            ],
            "description": "Product name"
          },
          "priceOut": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "End user price (ex vAT). Please see ProductSupplier for PriceIn and PriceInNet.",
            "format": "double"
          },
          "unit": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Unit of the product"
          },
          "defaultSupplierId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Default supplier ID",
            "format": "int32"
          },
          "defaultSupplierIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "The default supplier for this product, as defined by the main external integration to SpeedyCraft"
          },
          "productType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Sets the type of product. \n            \n            - 0: Normal product / default\n            - 10-19: Product structure",
            "format": "uint8"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "myFavorite": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "This product is set as favorite in the product catalogue."
          },
          "onStock": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "OBSOLETE! Please use ProductSupplier.OnStock.",
            "format": "uint8"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "assignmentProductDataDefinition": {
            "type": [
              "null",
              "string"
            ],
            "description": "QuestionList as defined by SpeedyCraft XML format for additional parameters. The answer will be placed in AssignmentProduct.AssignmentProductDataResponse."
          },
          "docLink": {
            "type": [
              "null",
              "string"
            ],
            "description": "XML document describing links to images or documents for this product. \n            The links or images will appear within the info sheet of the product in SpeedyCraft Mobile product list\n            Please use UTF-8 encoding, as UTF-16 might fail on mobile device interpretation.\n            An example is provided in the HelpCenter article: https://devinco.zendesk.com/hc/en-us/articles/208674476"
          },
          "blockUpdateInfoExt": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set this to true if you don't want to get UpdateInfoExt updates from new/changed AssignmentProducts with this ProductID"
          },
          "modifyPriceInNet": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Whenever this product is used, the user may change the cost price of corresponding AssignmentProduct if this is true and the current userprofile allows it.\n            If this is done, AssignmentProduct.PriceModified is set true, and the new cost price is set in AssignmentProduct.ModPriceInNet.\n            This is typically set for product numbers that may be used for several misc products."
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "This is the product registry, and may be used to add products to assignment, purchase order, stock etc."
      },
      "TblProductSupplier": {
        "type": "object",
        "properties": {
          "productSupplierId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the ProductSupplier. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the ProductSupplier.",
            "format": "int32"
          },
          "productSupplierIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the ProductSupplier, as defined by the main external integration to SpeedyCraft."
          },
          "productId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If provided, this is the internal SpeedyCraft Product ID",
            "format": "int32"
          },
          "productIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "The Product used, identified as defined by the main external integration to SpeedyCraft"
          },
          "supplierId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft ID of the Supplier referred to in this record",
            "format": "int32"
          },
          "supplierIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "Supplier where the product may be purchased, identified as defined by the main external integration to SpeedyCraft"
          },
          "priceIn": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Standard price on this product from current supplier. See Product.PriceOut for end-customer price",
            "format": "double"
          },
          "priceInNet": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Net price on this product from current supplier  (PriceIn - discount)",
            "format": "double"
          },
          "priceGroupID": {
            "type": [
              "null",
              "string"
            ],
            "description": "PriceGroupID as defined in PriceGroup"
          },
          "mergePack": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Packing options as defined by supplier. \n            This may be a list of packing option quantities, separated by semicolon. \n            E.g. 10;50;200 gives the customer options to buy this product in packs of 10, 50 or 200."
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "onStockSupplier": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Set OnStockSupplier = 1 if this product is usually on stock at the Supplier.",
            "format": "uint8"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Link between product and a specific supplier. This is where net price for a product is found. \n            \n            If you want to add products to purchase orders, ProductSupplier needs to be present for the relevant products and suppliers."
      },
      "TblProject": {
        "type": "object",
        "properties": {
          "projectID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Project. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Project.",
            "format": "int32"
          },
          "projectIDExt": {
            "maxLength": 128,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Project, as defined by the main external integration to SpeedyCraft."
          },
          "projectIDText": {
            "maxLength": 128,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Project, this is the Project number shown in the UI."
          },
          "name": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Name of the Project. This will be presented as a header of the project."
          },
          "customerID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Internal SpeedyCraft CustomerID of the Project",
            "format": "int32"
          },
          "departmentID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The ID of the Department to which the Project belongs",
            "format": "int32"
          },
          "internal": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Project may be set as an internal project. If true, this is not a project for end customer."
          },
          "projectStatusID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the ProjectStatus.",
            "format": "int32"
          },
          "reference": {
            "maxLength": 500,
            "type": [
              "null",
              "string"
            ],
            "description": "Reference on the project"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Optional, multiline description of the project."
          },
          "projectManagerID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Identifier for the manager of the current project",
            "format": "int32"
          },
          "startDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Start date of the current project",
            "format": "date-time"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "End date of the current project",
            "format": "date-time"
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Project data. Work orders (Assignments) may be organized into projects"
      },
      "TblQualityControl": {
        "type": "object",
        "properties": {
          "qualityControlId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the QualityControl. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the QualityControl.",
            "format": "int32"
          },
          "qualityControlIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the QualityControl, as defined by the main external integration to SpeedyCraft."
          },
          "qualityControlDescription": {
            "maxLength": 200,
            "type": [
              "null",
              "string"
            ],
            "description": "Description of this form template"
          },
          "qualityControlQuestion": {
            "type": [
              "null",
              "string"
            ],
            "description": "This is the XML where all questions in the form template are defined. See separate documentation for QuestionList schema format."
          },
          "logoPicture": {
            "type": [
              "null",
              "string"
            ],
            "description": "Image added here will set a logo on the layout print of filled-in forms of this type.",
            "format": "byte"
          },
          "onlyEmployeeInCharge": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Only EmployeeInCharge of the assignment may add and edit this type of form."
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users. \n            Please note that Setting ShowRecord to false on an active form will also set QualityControlActivated to 2.\n            Also note that it is illegal to set Showrecord to true on a form with QualityControlActivated == 2, such attempts will be blocked, and ShowRecord will stay false."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "schemaType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Defines what type of owner this form has.\n            \n            - 0 = Assignment\n            - 1 = Assignment additional properties/info on assignment\n            - 2 = AssignmentProduct\n            - 3 = RESERVED for AssignmentService \n            - 4 = RESERVED\n            - 5 = AssignmentObject\n            - 10 = Object\n            - 99 = Import Form. Used when we import a form into another form. Make sure you have a Guid set, to be able to reference this.",
            "format": "uint8"
          },
          "qualityControlReport": {
            "type": [
              "null",
              "string"
            ],
            "description": "If we want a custom layout for the form, it may be added here. The layout file must be in a format that is designed specifically for the QuestionList from this form.",
            "format": "byte"
          },
          "guid": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Unique identity of this particular form.\n            Please note that description, xml format and rpt format may change over time, but GUID should always be the same if referring to the same form template.\n            Multiple records using the same GUID in a database, means that there are various versions of the same form."
          },
          "image1": {
            "type": [
              "null",
              "string"
            ],
            "description": "Another image field for the form template. This is typically used for fixed signatures.",
            "format": "byte"
          },
          "image2": {
            "type": [
              "null",
              "string"
            ],
            "description": "Another image field for the form template.",
            "format": "byte"
          },
          "image3": {
            "type": [
              "null",
              "string"
            ],
            "description": "Another image field for the form template.",
            "format": "byte"
          },
          "formatVersion": {
            "maxLength": 5,
            "type": [
              "null",
              "string"
            ],
            "description": "Version of the XML schema definition (e.g. the XML framework the form was built upon)"
          },
          "xmlversion": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Version of the XML file in this form. E.g. if you add questions to the form, you increase the XMLVersion",
            "format": "double"
          },
          "rptversion": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Version of the report layout file",
            "format": "double"
          },
          "activated": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "The form template has to be activated to be able to use it."
          },
          "personal": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "If set personal, forms made with this QualityControlID will not be synced to other participants than the employee that created it."
          },
          "writeProtection": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If set, the forms of this type will be set as ReadOnly after they have been been signed (either by customer or employee)",
            "format": "uint8"
          },
          "reportType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Defines what type of report this form is.\n            \n            - 0 = Crystal Reports-based general or custom layout. If a Crystal Reports file is present in tblQualityControl.QualityControlReport, this will be used. Otherwise, a general list-based report without hierarchy will be used.\n            - 1 = General default layout. This form template needs to be created by SpeedyCraft Admin, as it has certain rules and limitations regarding hierarchy, number of columns etc. No extra report file needed, as Admin and AssignmentDocument uses an internal DevExpress-based layout file.\n            - 2 = DevExpress XtraReport custom layout. This requires a DevExpress XtraReport layout file to be present in tblQualityControl.QualityControlReport.\n            - 100 = Layout is defined by some custom PostProcessing application.",
            "format": "uint8"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created. Please note that this is separate from the other QualityControl.Guid field.\n            \n            UID will be different for all records in the table, and also for different clients - while QualityControl.Guid will be the same across multiple clients and versions of the same form type.",
            "format": "uuid"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Form templates are stored as QualityControl. Whenever filled-in, AssignmentQualityControl is used for the answers etc."
      },
      "TblRole": {
        "type": "object",
        "properties": {
          "roleId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Role. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Role.",
            "format": "int32"
          },
          "roleIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Role, as defined by the main external integration to SpeedyCraft."
          },
          "roleIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Role, this is the Role number shown in the UI."
          },
          "name": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Name of the Role. This will be presented as a header of the Role."
          },
          "description": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the Role"
          },
          "roleTypeID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Roles may be categorized into various types.",
            "format": "uint8"
          },
          "translationKey": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Key for translation of current role"
          },
          "editable": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Determines the editability of the Role. If set false, the role will be ineditable to users."
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Role for users. A user may include several Permissions, as defined in RolePermission. Users may have one or several roles, as defined in UserRole."
      },
      "TblRolePermission": {
        "type": "object",
        "properties": {
          "rolePermissionId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the RolePermission. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the RolePermission.",
            "format": "int32"
          },
          "roleId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Role.",
            "format": "int32"
          },
          "permissionId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Permission.",
            "format": "int32"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "The list of permissions a role has. If nothing here for a role, this role has no permissions and is useless."
      },
      "TblSchedule": {
        "type": "object",
        "properties": {
          "scheduleId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Schedule. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Schedule.",
            "format": "int32"
          },
          "scheduleIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Schedule, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If appointment is connected to assignment, this is the AssignmentID",
            "format": "int32"
          },
          "assignmentIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "External ID of the Assignment, as defined by the main external integration to SpeedyCraft."
          },
          "assignmentUID": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for the linked Assignment (if AssignmentID is not known)",
            "format": "uuid"
          },
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "EmployeeID of the appointment",
            "format": "int32"
          },
          "employeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An external identifier for the employee of this appointment, as defined by the main external integration to SpeedyCraft"
          },
          "description": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the appointment"
          },
          "startTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "Start time",
            "format": "date-time"
          },
          "endTime": {
            "type": [
              "null",
              "string"
            ],
            "description": "End time",
            "format": "date-time"
          },
          "comment": {
            "type": [
              "null",
              "string"
            ],
            "description": "Additional comment to the appointment"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "reminder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Number of minutes before start time for reminder. Not implemented yet.",
            "format": "int32"
          },
          "timeLocked": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If set 1, the time of this appointment may not be changed. Not implemented yet.",
            "format": "uint8"
          },
          "exchangeId": {
            "maxLength": 250,
            "type": [
              "null",
              "string"
            ],
            "description": "ID in Microsoft M365, if this appointment is linked to M365."
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Appointments are stored in Schedule"
      },
      "TblService": {
        "type": "object",
        "properties": {
          "serviceId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Service. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Service.",
            "format": "int32"
          },
          "serviceIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Service, as defined by the main external integration to SpeedyCraft."
          },
          "serviceIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Service, this is the Service number shown in the UI."
          },
          "serviceDescription": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the service hours type"
          },
          "servicePrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "End customer price for each service hour",
            "format": "double"
          },
          "serviceCostPrice": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Net price for each service hour",
            "format": "double"
          },
          "quantification": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Setting what unit the Quantity field represents. Only in use when ServiceType = 1.\n            Allowed values:\n            \n            - 0: No quantification / default\n            - 10: Days\n            - 11: Hours",
            "format": "uint8"
          },
          "serviceSortOrder": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The service types list is presented to users sorted by ServiceSortOrder ascending.",
            "format": "int32"
          },
          "requireServiceComment": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set RequireServiceComment=true if users should be forced to note a comment when registering this service hours type."
          },
          "serviceType": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Please use default value if you want the users to use the standard view for registerring AssignmentService records. \n            If ServiceType is set to 1, the Absenceservice view will have to be used to register this type of service hours.\n            Allowed values:\n            \n            - 0: Normal service hours type / default\n            - 1: Absence service type",
            "format": "uint8"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "includeInTotal": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Include this service hours type in sum when viewing sum of hours for the day, week, month etc. \n            \n            Please set false for e.g. transport types, additional costs etc."
          },
          "blockUpdateInfoExt": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set this to true if you don't want to get UpdateInfoExt updates from new/changed AssignmentServices with this ServiceID"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "When registering service hours in AssignmentService, we would need to select what service this was about. The list of service types is defined in Service."
      },
      "TblSetup": {
        "type": "object",
        "properties": {
          "setupKey": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "The key used for lookup on a specific parameter."
          },
          "setupValue": {
            "type": [
              "null",
              "string"
            ],
            "description": "The value for the specific key"
          }
        },
        "description": "Setup is simple key - value table for client-specific settings."
      },
      "TblStock": {
        "type": "object",
        "properties": {
          "stockId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Stock. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Stock.",
            "format": "int32"
          },
          "stockIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Stock, as defined by the main external integration to SpeedyCraft."
          },
          "storageId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "StorageID for this record",
            "format": "int32"
          },
          "storageIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "Storage where the product is, identified as defined by the main external integration to SpeedyCraft"
          },
          "productId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ProductID of the product",
            "format": "int32"
          },
          "productIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "The Product used, identified as defined by the main external integration to SpeedyCraft"
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Quantity on stock",
            "format": "double"
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0 - NOCHANGE: No change from SpeedyCraft.\n            - 1 - CHANGED: Changes available in SpeedyCraft.\n            - 2 - NEW: This record is new from SpeedyCraft.\n            - 3 - DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12 - NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50 - SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51 - SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52 - SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Quantity for a specific product at a certain storage or warehouse is found in Stock."
      },
      "TblStorage": {
        "type": "object",
        "properties": {
          "storageId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Storage. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Storage.",
            "format": "int32"
          },
          "storageIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Storage, as defined by the main external integration to SpeedyCraft."
          },
          "storageIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Storage, this is the Storage number shown in the UI."
          },
          "storageDescription": {
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the storage."
          },
          "orderAutoEnabled": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Set to true if SpeedyCraft Live is to generate orders and send to supplier on a regular basis to fill up stock. \n            Quantities will be based on Stock.Quantity and OrderAuto parameters."
          },
          "orderAutoDefaultOrderCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Order code used when generating orders automatically.\n            \n            Please note that this code also needs to be present in\n            tblSupplierOrderConfig.SupplierCustomerID if SpeedyCraft should be able to use it in an order."
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Storage facilities such as vehicles and warehouses"
      },
      "TblStorageTransfer": {
        "type": "object",
        "properties": {
          "storageTransferId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the StorageTransfer. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the StorageTransfer.",
            "format": "int32"
          },
          "storageTransferIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the StorageTransfer, as defined by the main external integration to SpeedyCraft."
          },
          "productId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ProductID",
            "format": "int32"
          },
          "productIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "The Product used, identified as defined by the main external integration to SpeedyCraft"
          },
          "fromStorageId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ID of the Storage facility the product was taken from. \n            \n            Special case: if FromStorageID = 9, this record represents inventory count.",
            "format": "int32"
          },
          "fromStorageIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "ID of the Storage facility the product was taken from, reference defined by the main external integration to SpeedyCraft"
          },
          "toStorageId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "ID of the Storage facility the product was put to. \n            \n            Special case: if FromStorageID = 9, this record represents inventory count and ToStorageID is the inventory count storage facility.",
            "format": "int32"
          },
          "toStorageIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "ID of the Storage facility the product was put to, reference defined by the main external integration to SpeedyCraft\n            \n            Special case: if FromStorageID = 9, this record represents inventory count and ToStorageIDExt is the inventory count storage facility."
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "description": "Quantity to transfer. \n            \n            If FromStorageID = 9, this is the counted quantity of the product in the inventory count.",
            "format": "double"
          },
          "transactionDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Transaction date",
            "format": "date-time"
          },
          "orderItemId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "When checking-in products to storage from order, this is noted by setting the OrderItem.OrderItemID here\n            in a StorageTransfer-record with FromStorageID = 1 (Supplier)",
            "format": "int32"
          },
          "orderItemIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "If product was checked in from a purchase order, this is the reference to OrderItem defined by the main external integration to SpeedyCraft"
          },
          "regEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If added by mobile device, this is the EmployeeID of the employee that added the record.",
            "format": "int32"
          },
          "regEmployeeIdext": {
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the employee that created this StorageTransfer, as defined by the main external integration to SpeedyCraft"
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "StorageTransfer is the record of a product being transferred from one storage facility to another. \n            It is also used for inventory count, which is a special case of a StorageTransfer where FromStorageID = 9."
      },
      "TblSupplier": {
        "type": "object",
        "properties": {
          "supplierId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Supplier. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Supplier.",
            "format": "int32"
          },
          "supplierIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Supplier, as defined by the main external integration to SpeedyCraft."
          },
          "supplierIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Supplier, this is the Supplier number shown in the UI."
          },
          "supplierDescription": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the Supplier"
          },
          "supplierCustomerId": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "This is the supplier specific customer number, as given by the supplier. \n            \n            This may be called the main customer number from the supplier's point of view. Used in orders to the supplier."
          },
          "ftpip": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "FTP hostname to supplier. \n            \n            Please exclude the ftp:// part."
          },
          "ftpport": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Port for ftp communication.\n            \n            Default is 21",
            "format": "int32"
          },
          "ftpusername": {
            "maxLength": 250,
            "type": [
              "null",
              "string"
            ],
            "description": "Username for FTP-connection."
          },
          "ftppassword": {
            "maxLength": 250,
            "type": [
              "null",
              "string"
            ],
            "description": "Password for FTP-connection."
          },
          "ftpuploadfolder": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Upload folder at the supplier ftp server.\n            \n            When sending orders, this folder will redirect upload items. Example: tosupplier/customer5"
          },
          "ftpdownloadFolder": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Download folder at the supplier ftp server.\n            \n            When downloading confirmation files, this folder will redirect upload items. Example: touser/customer5"
          },
          "orderFile": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Order file format type. \n            \n            - 0: None\n            - 3: NELFO4.0XML\n            - 4: BD1.1XML\n            - 5: NELFO4.0 (non-xml text file)",
            "format": "uint8"
          },
          "confirmationFile": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Confirmation file format type. \n            \n            - 0: None\n            - 3: NELFO4.0XML    (XC4 file)\n            - 4: BD1.1XML\n            - 5: NELFO4.0 (non-xml text file)\n            - 6: NELFO4.0XML Delivery file (XD4 file)",
            "format": "uint8"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "ftpdownloadFilter": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Filter for filenames (not in use)"
          },
          "onlineService": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "OnlineService is a semicolon separated list of codes activating services on server. \n            Possible values:\n            \n            - SOD: Supplier Order Delivery.Look for delivery or confirmation files on FTP server, download and process.\n            - SODO: Supplier Order Delivery, match Order number. Search for OrderIDText.Only match if orderdate is less than a year ago.\n            - SODA: Not implemented: Supplier Order Delivery, match Assignment number.\n            - SODW: Not implemented: Supplier Order Delivery, match Warehouse number\n            - ACI: Automatic Check-In. Whenever delivery/confirmation files are matched, we also check-in the products to destination (assignment or storage). \n            This means that AssignmentProduct / Inventory Stock is updated automatically based on the files from supplier."
          },
          "organizationNumber": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "Organization number for the supplier."
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Supplier is the company products are bought from. It is used for AssignmentProduct, to make sure we know where to order the product from. \n            It is also used in ProductSupplier and Order, to be able to order products from the supplier."
      },
      "TblTeam": {
        "type": "object",
        "properties": {
          "teamId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Team. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the Team.",
            "format": "int32"
          },
          "teamIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Team, as defined by the main external integration to SpeedyCraft."
          },
          "teamIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the Team, this is the Team number shown in the UI."
          },
          "description": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "The team description"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "Employees may be organized into teams"
      },
      "TblTeamEmployee": {
        "type": "object",
        "properties": {
          "teamEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the TeamEmployee. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the TeamEmployee.",
            "format": "int32"
          },
          "teamEmployeeIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the TeamEmployee, as defined by the main external integration to SpeedyCraft."
          },
          "teamEmployeeIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the TeamEmployee, this is the TeamEmployee number shown in the UI."
          },
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Employee.",
            "format": "int32"
          },
          "teamId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Team.",
            "format": "int32"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "The employees working in the team"
      },
      "TblUser": {
        "type": "object",
        "properties": {
          "userId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the User. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the User.",
            "format": "int32"
          },
          "userIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the User, as defined by the main external integration to SpeedyCraft."
          },
          "username": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Username for the user"
          },
          "description": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Description of the user"
          },
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "If a user is an employee, this is his/her EmployeeID.",
            "format": "int32"
          },
          "employeeIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An external identifier for the user if it's an employee, as defined by the main external integration to SpeedyCraft"
          },
          "language": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "The users peferred Language"
          },
          "subjectId": {
            "type": [
              "null",
              "string"
            ],
            "description": "The SubjectID from Devinco Connect, associated with the user"
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "User registered in speedycraft"
      },
      "TblUserRole": {
        "type": "object",
        "properties": {
          "userRoleId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the UserRole. \n            Please note that this is defined by the SpeedyCraft database, and is internally the primary key for the UserRole.",
            "format": "int32"
          },
          "userRoleIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the UserRole, as defined by the main external integration to SpeedyCraft."
          },
          "userRoleIdtext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "A human-readable identifier for the UserRole, this is the UserRole number shown in the UI."
          },
          "roleId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the Role.",
            "format": "int32"
          },
          "roleIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the Role, as defined by the main external integration to SpeedyCraft."
          },
          "userId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "The SpeedyCraft internal identifier for the User.",
            "format": "int32"
          },
          "userIdext": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "An identifier for the User, as defined by the main external integration to SpeedyCraft."
          },
          "showRecord": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "View this item in SpeedyCraft. If set false, the item will be invisible to users."
          },
          "updateInfoExt": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "UpdateInfoExt value. \n            \n            - 0: NOCHANGE: No change from SpeedyCraft.\n            - 1: CHANGED: Changes available in SpeedyCraft.\n            - 2: NEW: This record is new from SpeedyCraft.\n            - 3: DELETE: SpeedyCraft has deleted this record, and suggests that the external application does the same.\n            - 12: NEW_TEMP: Record is inserted by SpeedyCraft internally, but not with valid entries yet.\n            - 50: SYNCING_NOCHANGE: Some mobile device is currently syncing this record. No change from SpeedyCraft.\n            - 51: SYNCING_CHANGED: Some mobile device is currently syncing this record. Changed in SpeedyCraft.\n            - 52: SYNCING_NEW: Some mobile device is currently syncing this record. New from SpeedyCraft.",
            "format": "uint8"
          },
          "rowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "description": "RowVersion is a timestamp-number, unique within a database. \n            It is used for version stamping a table row. \n            It means the RowVersion of a particular row gets changed whenever value of any column of that row gets changed (updated). \n            When a new insertion is made in the table, the RowVersion column automatically gets populated with a unique value.\n            The version stamp is incremented each time the record is inserted or updated in the database.\n            Please note that Add() or Save() needs to be run for RowVersion to change in the database. The next time you Open() the object, you will get the new value.",
            "format": "int64"
          },
          "uid": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unique ID for this record, set up when created",
            "format": "uuid"
          },
          "sysRowVersion": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Same as RowVersion. Readonly",
            "format": "int64"
          },
          "sysDeleted": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "True if record is deleted. Inverse of ShowRecord. Readonly"
          },
          "sysCreatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record is created by this UserID",
            "format": "int32"
          },
          "sysCreatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was created at this timestamp",
            "format": "date-time"
          },
          "sysUpdatedBy": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "description": "Record was last updated by this UserID",
            "format": "int32"
          },
          "sysUpdatedDateUTC": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record was last updated at this timestamp",
            "format": "date-time"
          }
        },
        "description": "List of roles for users. A user may have several roles, ending up with permissions based on the sum of all roles."
      },
      "Team": {
        "type": "object",
        "properties": {
          "teamNumber": {
            "type": "string"
          },
          "teamEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": "boolean"
          }
        }
      },
      "TeamEmployeeRequestDto": {
        "type": "object",
        "properties": {
          "employeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "teamEmployeeId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          }
        }
      },
      "TeamUpsertRequestDto": {
        "type": "object",
        "properties": {
          "teamId": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "isActive": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "teamEmployees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TeamEmployeeRequestDto"
            }
          }
        }
      },
      "Trip": {
        "type": "object",
        "properties": {
          "distance": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "distancePrivateTaxable": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "trackerObjectID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int64"
          },
          "startTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          },
          "endTime": {
            "type": [
              "null",
              "string"
            ],
            "format": "date-time"
          }
        }
      },
      "TripExpense": {
        "type": "object",
        "properties": {
          "expenseTypeID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "null",
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "isPrivateTaxable": {
            "type": [
              "null",
              "boolean"
            ]
          },
          "rate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          },
          "comment": {
            "type": [
              "null",
              "string"
            ]
          },
          "quantity": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?$",
            "type": [
              "null",
              "number",
              "string"
            ],
            "format": "double"
          }
        }
      },
      "TripToAssignmentService": {
        "type": "object",
        "properties": {
          "assignmentServices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TblAssignmentService"
            }
          }
        }
      },
      "TripToAssignmentServiceModel": {
        "required": [
          "assignmentID",
          "employeeID"
        ],
        "type": "object",
        "properties": {
          "assignmentID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "employeeID": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "string"
            ],
            "format": "int32"
          },
          "tripsWithExpenses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TripWithExpense"
            }
          }
        }
      },
      "TripWithExpense": {
        "type": "object",
        "properties": {
          "trip": {
            "$ref": "#/components/schemas/Trip"
          },
          "tripExpenses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TripExpense"
            }
          }
        }
      },
      "WebhookDefinition": {
        "type": "object",
        "properties": {
          "webhookDefinitionId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "displayName": {
            "type": [
              "null",
              "string"
            ]
          },
          "description": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "WebhookSubscription": {
        "type": "object",
        "properties": {
          "webhookSubscriptionId": {
            "type": "string",
            "format": "uuid"
          },
          "clientId": {
            "type": "string",
            "format": "uuid"
          },
          "webhookDefinitionId": {
            "type": "string",
            "format": "uuid"
          },
          "webhookUri": {
            "type": [
              "null",
              "string"
            ]
          },
          "active": {
            "type": "boolean"
          },
          "webhookDefinition": {
            "$ref": "#/components/schemas/WebhookDefinition"
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "Webhooks"
    },
    {
      "name": "Assignment"
    },
    {
      "name": "AssignmentNote"
    },
    {
      "name": "AssignmentObject"
    },
    {
      "name": "AssignmentParticipant"
    },
    {
      "name": "AssignmentPriority"
    },
    {
      "name": "AssignmentProduct"
    },
    {
      "name": "AssignmentQualityControl"
    },
    {
      "name": "AssignmentService"
    },
    {
      "name": "AssignmentStatus"
    },
    {
      "name": "AssignmentType"
    },
    {
      "name": "Attachment"
    },
    {
      "name": "Customer"
    },
    {
      "name": "CustomerSite"
    },
    {
      "name": "Department"
    },
    {
      "name": "Dimension"
    },
    {
      "name": "DimensionLink"
    },
    {
      "name": "Employee"
    },
    {
      "name": "Error"
    },
    {
      "name": "General"
    },
    {
      "name": "Location"
    },
    {
      "name": "Message"
    },
    {
      "name": "MobileDevice"
    },
    {
      "name": "Object"
    },
    {
      "name": "ObjectType"
    },
    {
      "name": "OrderAuto"
    },
    {
      "name": "Order"
    },
    {
      "name": "OrderItem"
    },
    {
      "name": "Permission"
    },
    {
      "name": "Position"
    },
    {
      "name": "Product"
    },
    {
      "name": "ProductSupplier"
    },
    {
      "name": "Project"
    },
    {
      "name": "QualityControl"
    },
    {
      "name": "ResourcePlanner"
    },
    {
      "name": "Role"
    },
    {
      "name": "RolePermission"
    },
    {
      "name": "Schedule"
    },
    {
      "name": "Service"
    },
    {
      "name": "Setup"
    },
    {
      "name": "Stock"
    },
    {
      "name": "Storage"
    },
    {
      "name": "StorageTransfer"
    },
    {
      "name": "Supplier"
    },
    {
      "name": "Team"
    },
    {
      "name": "TeamEmployee"
    },
    {
      "name": "User"
    },
    {
      "name": "UserRole"
    }
  ]
}