{
  "openapi": "3.0.0",
  "info": {
    "title": "Client Engagement API v1.0",
    "version": "v1.0"
  },
  "servers": [
    {
      "url": "https://api.zywave.com"
    }
  ],
  "paths": {
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/activation/activate": {
      "post": {
        "tags": [
          "Activation"
        ],
        "summary": "Activates a client. Ensures an Employer record exists for the supplied\nAccountId (creating one if missing) and optionally assigns the\ncaller-supplied tool packages to the account.",
        "description": "Idempotent â€” if an Employer already exists for the AccountId, this method\nskips creation and returns the existing EmployerId. Tool-package assignment\nis queued via the same job pipeline used by the invitation flow.\n            \nNote: this method does not currently restore previously-deactivated Employers.\nThe downstream Employers service filters soft-deleted rows out of all reads,\nso an Employer that was Deactivated for this AccountId is invisible here and\na new row would be created. A proper reactivation path requires either a\ndownstream restore endpoint or an extension to IEmployerHelper.",
        "operationId": "Activation_Activate",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivationRequest"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/activation/deactivate": {
      "post": {
        "tags": [
          "Activation"
        ],
        "summary": "Deactivates a client by soft-deleting the Employer record bound to the supplied\nAccountId. The record is marked as deleted in the Employers service rather\nthan physically removed.",
        "operationId": "Activation_Deactivate",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivationRequest"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "204": {
            "description": ""
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/activation/invite": {
      "post": {
        "tags": [
          "Activation"
        ],
        "summary": "Sends one or more invitations to clients or account contacts. Recipients can be\nsupplied directly (account ids, contact ids), pulled from saved lists, or bulk-mailed\nvia background jobs. Optionally grants tool packages to the invited recipients.",
        "operationId": "Activation_Invite",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "invitationRequest",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteRequest"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32",
                  "nullable": true
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/employeegroup/{id}": {
      "get": {
        "tags": [
          "EmployeeGroups"
        ],
        "summary": "Gets an employee group by ID.",
        "operationId": "EmployeeGroups_GetEmployeeGroup",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeGroupResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "EmployeeGroups"
        ],
        "summary": "Replaces an employee group.",
        "operationId": "EmployeeGroups_UpdateEmployeeGroup",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeGroupRequest"
              }
            }
          },
          "required": true,
          "x-position": 4
        },
        "responses": {
          "204": {
            "description": ""
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "EmployeeGroups"
        ],
        "summary": "Deletes an employee group.",
        "operationId": "EmployeeGroups_DeleteEmployeeGroup",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/employeegroup": {
      "get": {
        "tags": [
          "EmployeeGroups"
        ],
        "summary": "Gets employee groups for a given account using OData query options\n($filter, $orderby, $top, $skip). OData filters are translated into the underlying\nEmployeeGroup search contract and pushed down to the service. The\naccountId query parameter is required to scope the search.",
        "operationId": "EmployeeGroups_GetEmployeeGroups",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "accountId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "$filter",
            "x-originalName": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "$orderby",
            "x-originalName": "orderby",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "$top",
            "x-originalName": "top",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "$skip",
            "x-originalName": "skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfEmployeeGroupResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "EmployeeGroups"
        ],
        "summary": "Creates a new employee group.",
        "operationId": "EmployeeGroups_CreateEmployeeGroup",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeGroupRequest"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeGroupResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/employee/{id}": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets an employee by ID.",
        "operationId": "Employees_GetEmployee",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Employees"
        ],
        "summary": "Replaces an employee.",
        "operationId": "Employees_UpdateEmployee",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeRequest"
              }
            }
          },
          "required": true,
          "x-position": 4
        },
        "responses": {
          "204": {
            "description": ""
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Employees"
        ],
        "summary": "Deletes an employee.",
        "operationId": "Employees_DeleteEmployee",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/employee": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Gets employees for a given account using OData query options\n($filter, $orderby, $top, $skip). OData filters are translated into the underlying\nEmployee search contract and pushed down to the service. The accountId\nquery parameter is required to scope the search to an account owned by the agency.",
        "operationId": "Employees_GetEmployees",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "accountId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "$filter",
            "x-originalName": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "$orderby",
            "x-originalName": "orderby",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "$top",
            "x-originalName": "top",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "$skip",
            "x-originalName": "skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfEmployeeResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Employees"
        ],
        "summary": "Creates a new employee.",
        "operationId": "Employees_CreateEmployee",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployeeRequest"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/assignment/{id}": {
      "get": {
        "tags": [
          "Assignment"
        ],
        "summary": "Retrieves an assignment by its unique identifier.",
        "operationId": "Assignment_GetAssignment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Assignment"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Assignment"
        ],
        "summary": "Updates an existing assignment with the provided details.",
        "operationId": "Assignment_UpdateAssignment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 3
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 4
          }
        ],
        "requestBody": {
          "x-name": "assignmentInfo",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignmentUpdateInfo"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "204": {
            "description": ""
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Assignment"
        ],
        "summary": "Deletes an assignment by its unique identifier.",
        "operationId": "Assignment_DeleteAssignment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/assignment": {
      "get": {
        "tags": [
          "Assignment"
        ],
        "summary": "Retrieves a paginated list of assignments for the specified organization and agency.",
        "operationId": "Assignment_GetAssignments",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "$filter",
            "x-originalName": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "$orderBy",
            "x-originalName": "orderBy",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "$skip",
            "x-originalName": "skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "x-position": 5
          },
          {
            "name": "$top",
            "x-originalName": "top",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "x-position": 6
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfAssignment"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Creates a new assignment for the specified employee.",
        "operationId": "Assignment_CreateAssignment",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "reassign",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 4
          }
        ],
        "requestBody": {
          "x-name": "assignmentInfo",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignmentCreateInfo"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "204": {
            "description": ""
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/coursecategory/{id}": {
      "get": {
        "tags": [
          "CourseCategory"
        ],
        "operationId": "CourseCategory_GetCourseCategory",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CourseCategory"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CourseCategory"
        ],
        "operationId": "CourseCategory_UpdateCourseCategory",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 3
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 4
          }
        ],
        "requestBody": {
          "x-name": "courseCategoryInfo",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CourseCategoryUpdateInfo"
              }
            }
          },
          "required": true,
          "x-position": 2
        },
        "responses": {
          "204": {
            "description": ""
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CourseCategory"
        ],
        "operationId": "CourseCategory_DeleteCourseCategory",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/coursecategory": {
      "get": {
        "tags": [
          "CourseCategory"
        ],
        "operationId": "CourseCategory_GetCourseCategories",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "$filter",
            "x-originalName": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "$orderBy",
            "x-originalName": "orderBy",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "$skip",
            "x-originalName": "skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "x-position": 5
          },
          {
            "name": "$top",
            "x-originalName": "top",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "x-position": 6
          },
          {
            "name": "includeReadOnly",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfCourseCategory"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CourseCategory"
        ],
        "operationId": "CourseCategory_CreateCourseCategory",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "courseCategoryInfo",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CourseCategoryCreateInfo"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/course/{id}": {
      "get": {
        "tags": [
          "Course"
        ],
        "summary": "Retrieves a course by its unique identifier.",
        "description": "Sample request:\n            \n    GET /v3/clientEngagement/v1.0/org/11111111-1111-1111-1111-111111111111/agency/123/course/11111111-1111-1111-1111-111111111111",
        "operationId": "Course_GetCourse",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the course.",
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "The organization ID associated with the course.",
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "description": "The agency ID associated with the course.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the course.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Course"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Course not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/course": {
      "get": {
        "tags": [
          "Course"
        ],
        "summary": "Retrieves a paginated list of courses for the specified organization and agency.",
        "description": "Sample request:\n            \n    GET /v3/clientEngagement/v1.0/org/11111111-1111-1111-1111-111111111111/agency/123/course",
        "operationId": "Course_GetCourses",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "description": "The organization ID associated with the courses.",
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "description": "The agency ID associated with the courses.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "$filter",
            "x-originalName": "filter",
            "in": "query",
            "description": "OData filter expression.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "$orderBy",
            "x-originalName": "orderBy",
            "in": "query",
            "description": "OData orderBy expression.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "$skip",
            "x-originalName": "skip",
            "in": "query",
            "description": "Number of records to skip for pagination.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "x-position": 5
          },
          {
            "name": "$top",
            "x-originalName": "top",
            "in": "query",
            "description": "Maximum number of records to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            },
            "x-position": 6
          },
          {
            "name": "includeReadOnly",
            "in": "query",
            "description": "Include read only courses.",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of courses.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfCourse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid query parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/toolpackage/{id}": {
      "get": {
        "tags": [
          "ToolPackage"
        ],
        "summary": "Gets a tool package by ID.",
        "operationId": "ToolPackage_GetToolPackage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          },
          {
            "name": "enrichMembers",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 4
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolPackageResponse"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "ToolPackage"
        ],
        "summary": "Replaces a tool package.",
        "operationId": "ToolPackage_UpdateToolPackage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolPackageRequest"
              }
            }
          },
          "required": true,
          "x-position": 4
        },
        "responses": {
          "204": {
            "description": ""
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ToolPackage"
        ],
        "summary": "Deletes a tool package.",
        "operationId": "ToolPackage_DeleteToolPackage",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 1
          },
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 2
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 3
          }
        ],
        "responses": {
          "204": {
            "description": ""
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v3/clientEngagement/v1.0/org/{organizationId}/agency/{agencyId}/toolpackage": {
      "get": {
        "tags": [
          "ToolPackage"
        ],
        "summary": "Gets tool packages using OData query options ($filter, $orderby, $top, $skip).\nOData filters are translated into the underlying ToolPackage search contract and\npushed down to the service.",
        "operationId": "ToolPackage_GetToolPackages",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          },
          {
            "name": "$filter",
            "x-originalName": "filter",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 3
          },
          {
            "name": "$orderby",
            "x-originalName": "orderby",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "x-position": 4
          },
          {
            "name": "$top",
            "x-originalName": "top",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 5
          },
          {
            "name": "$skip",
            "x-originalName": "skip",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "x-position": 6
          },
          {
            "name": "enrichMembers",
            "in": "query",
            "schema": {
              "type": "boolean",
              "nullable": true
            },
            "x-position": 7
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResultOfToolPackageResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ToolPackage"
        ],
        "summary": "Creates a new tool package.",
        "operationId": "ToolPackage_CreateToolPackage",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            },
            "x-position": 1
          },
          {
            "name": "agencyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "x-position": 2
          }
        ],
        "requestBody": {
          "x-name": "request",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolPackageRequest"
              }
            }
          },
          "required": true,
          "x-position": 3
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolPackageResponse"
                }
              }
            }
          },
          "400": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ProblemDetails": {
        "type": "object",
        "additionalProperties": {
          "nullable": true
        },
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ActivationRequest": {
        "type": "object",
        "description": "Payload for activating or deactivating a client.",
        "additionalProperties": false,
        "required": [
          "accountId"
        ],
        "properties": {
          "accountId": {
            "type": "integer",
            "description": "The identifier of the account to activate or deactivate.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 1
          },
          "toolPackageIds": {
            "type": "array",
            "description": "Optional tool packages to assign to the account on activation. Ignored on\ndeactivation.",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "InviteRequest": {
        "type": "object",
        "description": "Payload describing a set of invitations to send to recipients derived from lists, accounts, contacts, or prior invitations.",
        "additionalProperties": false,
        "required": [
          "portalId",
          "type"
        ],
        "properties": {
          "listIds": {
            "type": "array",
            "description": "The IDs of static lists from which recipients should be derived.",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "accountIds": {
            "type": "array",
            "description": "The IDs of accounts to invite directly.",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "accountContactIds": {
            "type": "array",
            "description": "The IDs of account contacts to invite directly.",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "invitationIds": {
            "type": "array",
            "description": "The IDs of existing invitations the send should reference (used for series).",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "toolPackageIds": {
            "type": "array",
            "description": "The IDs of tool packages to attach to the invitation.",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "portalId": {
            "type": "integer",
            "description": "The ID of the portal the invitation targets. Required.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 1
          },
          "subject": {
            "type": "string",
            "description": "The email subject line.",
            "maxLength": 512,
            "minLength": 0,
            "nullable": true
          },
          "header": {
            "type": "string",
            "description": "The email header text.",
            "maxLength": 512,
            "minLength": 0,
            "nullable": true
          },
          "emailBody": {
            "type": "string",
            "description": "The email body (HTML or text).",
            "maxLength": 65536,
            "minLength": 0,
            "nullable": true
          },
          "actionText": {
            "type": "string",
            "description": "The call-to-action text rendered in the email button.",
            "maxLength": 128,
            "minLength": 0,
            "nullable": true
          },
          "sendFromUser": {
            "type": "boolean",
            "description": "Whether the email should be sent from the acting user rather than a shared sender."
          },
          "agencyDomainId": {
            "type": "integer",
            "description": "The ID of the agency mail domain to send from. Falls back to default if not owned by the agency.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 1,
            "nullable": true
          },
          "type": {
            "description": "The type of invitation being sent.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/InviteType"
              }
            ]
          },
          "bulkReinvite": {
            "type": "boolean",
            "description": "Whether this is a bulk reinvite (processed as a background job)."
          },
          "bulkInviteNew": {
            "type": "boolean",
            "description": "Whether this is a bulk invite for new contacts (processed as a background job)."
          },
          "isSeries": {
            "type": "boolean",
            "description": "Whether this send represents part of an invitation series."
          },
          "scheduledDate": {
            "type": "string",
            "description": "The date/time the invitation should be sent (used for scheduled sends).",
            "format": "date-time"
          },
          "fromEmailAddress": {
            "type": "string",
            "description": "Optional override for the from-email address. Defaults to the configured notification address.",
            "format": "email",
            "maxLength": 255,
            "minLength": 0,
            "nullable": true
          }
        }
      },
      "InviteType": {
        "type": "string",
        "description": "The kind of invitation being sent.",
        "x-enumNames": [
          "Unknown",
          "ClientPortal",
          "BenefitDocumentBuilder"
        ],
        "enum": [
          "Unknown",
          "ClientPortal",
          "BenefitDocumentBuilder"
        ]
      },
      "EmployeeGroupResponse": {
        "type": "object",
        "description": "Client-facing employee group response. Exposes only fields accessible to the client â€” internal audit fields are excluded.",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the employee group.",
            "format": "int32"
          },
          "accountId": {
            "type": "integer",
            "description": "The identifier of the account this group belongs to.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 1
          },
          "name": {
            "type": "string",
            "description": "The name of the employee group.",
            "maxLength": 100,
            "minLength": 0
          },
          "description": {
            "type": "string",
            "description": "An optional description for the employee group.",
            "maxLength": 255,
            "minLength": 0,
            "nullable": true
          }
        }
      },
      "PagedResultOfEmployeeGroupResponse": {
        "type": "object",
        "description": "A page of results from a larger result set, along with paging metadata.",
        "additionalProperties": false,
        "required": [
          "items"
        ],
        "properties": {
          "hasMoreResults": {
            "type": "boolean",
            "description": "A value indicating whether the larger result set has more results."
          },
          "skip": {
            "type": "integer",
            "description": "A value indicating how many of the previous values in the larger result set were omitted.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "take": {
            "type": "integer",
            "description": "The number of records retrieved from the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of records in the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "items": {
            "type": "array",
            "description": "The records retrieved from the larger result set.",
            "items": {
              "$ref": "#/components/schemas/EmployeeGroupResponse"
            }
          }
        }
      },
      "EmployeeGroupRequest": {
        "type": "object",
        "description": "Payload for creating or updating an employee group.",
        "additionalProperties": false,
        "required": [
          "accountId",
          "name"
        ],
        "properties": {
          "accountId": {
            "type": "integer",
            "description": "The identifier of the account this group belongs to.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 1
          },
          "name": {
            "type": "string",
            "description": "The name of the employee group.",
            "maxLength": 100,
            "minLength": 1
          },
          "description": {
            "type": "string",
            "description": "An optional description for the employee group.",
            "maxLength": 255,
            "minLength": 0,
            "nullable": true
          }
        }
      },
      "EmployeeResponse": {
        "type": "object",
        "description": "Client-facing employee response. Exposes only fields accessible to the client â€” internal audit fields are excluded.",
        "additionalProperties": false,
        "required": [
          "firstName",
          "lastName"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the employee.",
            "format": "int32"
          },
          "accountId": {
            "type": "integer",
            "description": "The identifier of the account this employee belongs to.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 1
          },
          "firstName": {
            "type": "string",
            "description": "The employee's first name.",
            "maxLength": 250,
            "minLength": 0
          },
          "lastName": {
            "type": "string",
            "description": "The employee's last name.",
            "maxLength": 250,
            "minLength": 0
          },
          "prefix": {
            "type": "string",
            "description": "The employee's name prefix (e.g., Dr.).",
            "maxLength": 50,
            "minLength": 0,
            "nullable": true
          },
          "suffix": {
            "type": "string",
            "description": "The employee's name suffix (e.g., Jr.).",
            "maxLength": 50,
            "minLength": 0,
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "The employee's email address.",
            "format": "email",
            "maxLength": 255,
            "minLength": 0,
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "An external system identifier for the employee.",
            "maxLength": 255,
            "minLength": 0,
            "nullable": true
          },
          "isArchived": {
            "type": "boolean",
            "description": "Whether the employee is archived."
          },
          "employerUserProfileId": {
            "type": "integer",
            "description": "The employer user profile ID associated with this employee.",
            "format": "int32",
            "nullable": true
          },
          "employeeGroupIds": {
            "type": "array",
            "description": "The IDs of employee groups this employee belongs to.",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "PagedResultOfEmployeeResponse": {
        "type": "object",
        "description": "A page of results from a larger result set, along with paging metadata.",
        "additionalProperties": false,
        "required": [
          "items"
        ],
        "properties": {
          "hasMoreResults": {
            "type": "boolean",
            "description": "A value indicating whether the larger result set has more results."
          },
          "skip": {
            "type": "integer",
            "description": "A value indicating how many of the previous values in the larger result set were omitted.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "take": {
            "type": "integer",
            "description": "The number of records retrieved from the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of records in the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "items": {
            "type": "array",
            "description": "The records retrieved from the larger result set.",
            "items": {
              "$ref": "#/components/schemas/EmployeeResponse"
            }
          }
        }
      },
      "EmployeeRequest": {
        "type": "object",
        "description": "Payload for creating or updating an employee.",
        "additionalProperties": false,
        "required": [
          "accountId",
          "firstName",
          "lastName"
        ],
        "properties": {
          "accountId": {
            "type": "integer",
            "description": "The identifier of the account this employee belongs to.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 1
          },
          "firstName": {
            "type": "string",
            "description": "The employee's first name.",
            "maxLength": 250,
            "minLength": 1
          },
          "lastName": {
            "type": "string",
            "description": "The employee's last name.",
            "maxLength": 250,
            "minLength": 1
          },
          "prefix": {
            "type": "string",
            "description": "The employee's name prefix (e.g., Dr.).",
            "maxLength": 50,
            "minLength": 0,
            "nullable": true
          },
          "suffix": {
            "type": "string",
            "description": "The employee's name suffix (e.g., Jr.).",
            "maxLength": 50,
            "minLength": 0,
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "The employee's email address.",
            "format": "email",
            "maxLength": 255,
            "minLength": 0,
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "An external system identifier for the employee.",
            "maxLength": 255,
            "minLength": 0,
            "nullable": true
          },
          "isArchived": {
            "type": "boolean",
            "description": "Whether the employee is archived."
          },
          "employeeGroupIds": {
            "type": "array",
            "description": "The IDs of employee groups this employee belongs to.",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        }
      },
      "ToolPackageResponse": {
        "type": "object",
        "description": "Client-facing tool package response. Feature keys are translated from the underlying\nGuid collection to the strongly-typed ToolPackageFeature enum; internal audit\nfields are excluded.",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the tool package.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The name of the tool package.",
            "maxLength": 250,
            "minLength": 0
          },
          "agencyId": {
            "type": "integer",
            "description": "The agency that owns the tool package.",
            "format": "int32"
          },
          "portalId": {
            "type": "integer",
            "description": "The portal this package is scoped to, if any.",
            "format": "int32",
            "nullable": true
          },
          "defaultMembership": {
            "type": "boolean",
            "description": "Whether new clients receive this package by default."
          },
          "allTools": {
            "type": "boolean",
            "description": "Whether the package grants access to all tools."
          },
          "allContent": {
            "type": "boolean",
            "description": "Whether the package grants access to all content."
          },
          "inactive": {
            "type": "boolean",
            "description": "Whether the package is inactive."
          },
          "features": {
            "type": "array",
            "description": "The features this tool package grants, resolved from the underlying feature keys.",
            "items": {
              "$ref": "#/components/schemas/ToolPackageFeature"
            }
          },
          "members": {
            "type": "array",
            "description": "Member assignments for this tool package (populated when the request asked to enrich members).",
            "items": {
              "$ref": "#/components/schemas/BaseMember"
            }
          }
        }
      },
      "ToolPackageFeature": {
        "type": "string",
        "description": "Zywave tool/content features that can be granted by a tool package. The enum value is the\nstable public identifier exposed by this API; the underlying feature key (Guid) used by the\ninternal contracts is resolved via ToolPackageFeatureMap.",
        "x-enumNames": [
          "AcaReporting",
          "BenefitDocumentBuilder",
          "BreachResponse",
          "CobraNoticesGenerator",
          "ComplianceNoticeBuilder",
          "CompliancePosterBuilder",
          "CustomJobDescriptionBuilder",
          "CyberAssessmentTool",
          "CyberHotline",
          "EmployeeCostCalculator",
          "EmployeeHandbookBuilder",
          "EnrollmentBookletBuilder",
          "FederalPosterAdvisor",
          "FmlaAdvisor",
          "HealthPlanComplianceCalendar",
          "HrHotline",
          "HrSelfAssessmentTool",
          "InPersonInterviewQuestionBuilder",
          "ManagementLiabilityHotline",
          "MultiStateLawsComparisonTool",
          "OshaLog",
          "PerformanceReviewBuilder",
          "PhoneInterviewQuestionBuilder",
          "RelationshipManagementService",
          "SalaryBenchmarking",
          "SampleJobDescriptions",
          "TotalCompensationStatementBuilder",
          "WebAccessibilityTool",
          "ZywaveLearning",
          "ClientContentDisciplineAndTermination",
          "ClientContentEmployeeBenefits",
          "ClientContentHealthCareReform",
          "ClientContentHumanResources",
          "ClientContentRecruitmentAndHiring",
          "ClientContentReferenceCenter",
          "ClientContentSafetyAndWellness",
          "ClientContentStateLaws",
          "ClientContentFormsAndPolicies",
          "ClientContentHrVideos",
          "ClientContentRiskManagement",
          "ClientContentWhatAreYouDoingToday",
          "ClientContentCyber",
          "ClientContentManagementLiability",
          "ClientContentSafety",
          "ClientContentWellness",
          "ClientContentMunicipalAndSchool",
          "ClientContentWebinars",
          "ClientContentNewsletters",
          "ClientContentWhatAreYouDoingTodayBenefits",
          "ClientContentWhatAreYouDoingTodayCyber",
          "ClientContentWhatAreYouDoingTodayDisasterAndEmergency",
          "ClientContentWhatAreYouDoingTodayHr",
          "ContentEmployeeBenefitsEmployeeCommunications",
          "ContentEmployeeBenefitsStateAndFederalCompliance",
          "ContentEmployeeBenefitsWellness",
          "ContentEmployeeBenefitsHumanResources",
          "ContentEmployeeBenefitsEducation",
          "ContentEmployeeBenefitsBrokerInsuranceInsights",
          "ContentEmployeeBenefitsPremiumContent",
          "ContentPcCommercialCoverageEducation",
          "ContentPcEmployeeSafetyCommunications",
          "ContentPcStateAndFederalCompliance",
          "ContentPcPersonalLines",
          "ContentPcRiskManagementAndLossControl",
          "ContentPcHumanResources",
          "ContentPcBrokerInsuranceInsights",
          "ContentPcPremiumContent",
          "CanadaCore",
          "UkCore",
          "BenefitsCore",
          "PcCore",
          "PersonalLinesCore"
        ],
        "x-enum-descriptions": [
          "ACA Reporting",
          "Benefit Document Builder",
          "Breach Response",
          "COBRA Notices Generator",
          "Compliance Notice Builder",
          "Compliance Poster Builder",
          "Custom Job Description Builder",
          "Cyber Assessment Tool",
          "Cyber Hotline",
          "Employee Cost Calculator",
          "Employee Handbook Builder",
          "Enrollment Booklet Builder",
          "Federal Poster Advisor",
          "FMLA Advisor",
          "Health Plan Compliance Calendar",
          "HR Hotline",
          "HR Self-Assessment Tool",
          "In-person Interview Question Builder",
          "Management Liability Hotline",
          "Multi-State Laws Comparison Tool",
          "OSHA Log",
          "Performance Review Builder",
          "Phone Interview Question Builder",
          "Relationship Management Service",
          "Salary Benchmarking",
          "Sample Job Descriptions",
          "Total Compensation Statement Builder",
          "Web Accessibility Tool",
          "Zywave Learning",
          "Client Content: Discipline & Termination",
          "Client Content: Employee Benefits",
          "Client Content: Health Care Reform",
          "Client Content: Human Resources",
          "Client Content: Recruitment & Hiring",
          "Client Content: Reference Center",
          "Client Content: Safety & Wellness",
          "Client Content: State Laws",
          "Client Content: Forms & Policies",
          "Client Content: HR Videos",
          "Client Content: Risk Management",
          "Client Content: What are you doing today?",
          "Client Content: Cyber",
          "Client Content: Management Liability",
          "Client Content: Safety",
          "Client Content: Wellness",
          "Client Content: Municipal & School",
          "Client Content: Webinars",
          "Client Content: Newsletters",
          "Client Content: What are you doing today? - Benefits",
          "Client Content: What are you doing today? - Cyber",
          "Client Content: What are you doing today? - Disaster and Emergency",
          "Client Content: What are you doing today? - HR",
          "Content: Employee Benefits Employee Communications",
          "Content: Employee Benefits State and Federal Compliance",
          "Content: Employee Benefits Wellness",
          "Content: Employee Benefits Human Resources",
          "Content: Employee Benefits Education",
          "Content: Employee Benefits Broker Insurance Insights",
          "Content: Employee Benefits Premium Content",
          "Content: P&C Commercial Coverage Education",
          "Content: P&C Employee Safety Communications",
          "Content: P&C State and Federal Compliance",
          "Content: P&C Personal Lines",
          "Content: P&C Risk Management and Loss Control",
          "Content: P&C Human Resources",
          "Content: P&C Broker Insurance Insights",
          "Content: P&C Premium Content",
          "Canada Core",
          "UK Core",
          "Benefits Core",
          "P&C Core",
          "Personal Lines Core"
        ],
        "enum": [
          "AcaReporting",
          "BenefitDocumentBuilder",
          "BreachResponse",
          "CobraNoticesGenerator",
          "ComplianceNoticeBuilder",
          "CompliancePosterBuilder",
          "CustomJobDescriptionBuilder",
          "CyberAssessmentTool",
          "CyberHotline",
          "EmployeeCostCalculator",
          "EmployeeHandbookBuilder",
          "EnrollmentBookletBuilder",
          "FederalPosterAdvisor",
          "FmlaAdvisor",
          "HealthPlanComplianceCalendar",
          "HrHotline",
          "HrSelfAssessmentTool",
          "InPersonInterviewQuestionBuilder",
          "ManagementLiabilityHotline",
          "MultiStateLawsComparisonTool",
          "OshaLog",
          "PerformanceReviewBuilder",
          "PhoneInterviewQuestionBuilder",
          "RelationshipManagementService",
          "SalaryBenchmarking",
          "SampleJobDescriptions",
          "TotalCompensationStatementBuilder",
          "WebAccessibilityTool",
          "ZywaveLearning",
          "ClientContentDisciplineAndTermination",
          "ClientContentEmployeeBenefits",
          "ClientContentHealthCareReform",
          "ClientContentHumanResources",
          "ClientContentRecruitmentAndHiring",
          "ClientContentReferenceCenter",
          "ClientContentSafetyAndWellness",
          "ClientContentStateLaws",
          "ClientContentFormsAndPolicies",
          "ClientContentHrVideos",
          "ClientContentRiskManagement",
          "ClientContentWhatAreYouDoingToday",
          "ClientContentCyber",
          "ClientContentManagementLiability",
          "ClientContentSafety",
          "ClientContentWellness",
          "ClientContentMunicipalAndSchool",
          "ClientContentWebinars",
          "ClientContentNewsletters",
          "ClientContentWhatAreYouDoingTodayBenefits",
          "ClientContentWhatAreYouDoingTodayCyber",
          "ClientContentWhatAreYouDoingTodayDisasterAndEmergency",
          "ClientContentWhatAreYouDoingTodayHr",
          "ContentEmployeeBenefitsEmployeeCommunications",
          "ContentEmployeeBenefitsStateAndFederalCompliance",
          "ContentEmployeeBenefitsWellness",
          "ContentEmployeeBenefitsHumanResources",
          "ContentEmployeeBenefitsEducation",
          "ContentEmployeeBenefitsBrokerInsuranceInsights",
          "ContentEmployeeBenefitsPremiumContent",
          "ContentPcCommercialCoverageEducation",
          "ContentPcEmployeeSafetyCommunications",
          "ContentPcStateAndFederalCompliance",
          "ContentPcPersonalLines",
          "ContentPcRiskManagementAndLossControl",
          "ContentPcHumanResources",
          "ContentPcBrokerInsuranceInsights",
          "ContentPcPremiumContent",
          "CanadaCore",
          "UkCore",
          "BenefitsCore",
          "PcCore",
          "PersonalLinesCore"
        ]
      },
      "BaseMember": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "toolPackageMemberId": {
            "type": "integer",
            "format": "int32"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entityType": {
            "$ref": "#/components/schemas/MemberEntityType"
          }
        }
      },
      "MemberEntityType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Account",
          "AccountContact",
          "StaticList",
          "DynamicList"
        ],
        "enum": [
          "Account",
          "AccountContact",
          "StaticList",
          "DynamicList"
        ]
      },
      "PagedResultOfToolPackageResponse": {
        "type": "object",
        "description": "A page of results from a larger result set, along with paging metadata.",
        "additionalProperties": false,
        "required": [
          "items"
        ],
        "properties": {
          "hasMoreResults": {
            "type": "boolean",
            "description": "A value indicating whether the larger result set has more results."
          },
          "skip": {
            "type": "integer",
            "description": "A value indicating how many of the previous values in the larger result set were omitted.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "take": {
            "type": "integer",
            "description": "The number of records retrieved from the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of records in the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "items": {
            "type": "array",
            "description": "The records retrieved from the larger result set.",
            "items": {
              "$ref": "#/components/schemas/ToolPackageResponse"
            }
          }
        }
      },
      "ToolPackageSearchRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequestOfToolPackageSearchCriteriaAndToolPackageSearchOrder"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "SearchRequestOfToolPackageSearchCriteriaAndToolPackageSearchOrder": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequestOfToolPackageSearchCriteria"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "order": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ToolPackageSearchOrder"
                  }
                ]
              }
            }
          }
        ]
      },
      "ToolPackageSearchOrder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "agencyId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "portalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "defaultMembership": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "allTools": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "allContent": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "inactive": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "createdDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "createdUserPrincipalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "createdUserProfileId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "createdUserProfileTypeCode": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "updatedDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "updatedUserPrincipalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "updatedUserProfileId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          },
          "updatedUserProfileTypeCode": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort"
              }
            ]
          }
        }
      },
      "Sort": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "direction": {
            "$ref": "#/components/schemas/SortDirection"
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          },
          "nullLast": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "SortDirection": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Ascending",
          "Descending"
        ],
        "enum": [
          "Ascending",
          "Descending"
        ]
      },
      "SearchRequestOfToolPackageSearchCriteria": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequest"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "criteria": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ToolPackageSearchCriteria"
                  }
                ]
              }
            }
          }
        ]
      },
      "ToolPackageSearchCriteria": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfInteger"
              }
            ]
          },
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringCriterion"
              }
            ]
          },
          "agencyId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfInteger"
              }
            ]
          },
          "portalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfInteger"
              }
            ]
          },
          "defaultMembership": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanCriterion"
              }
            ]
          },
          "allTools": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanCriterion"
              }
            ]
          },
          "allContent": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanCriterion"
              }
            ]
          },
          "inactive": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanCriterion"
              }
            ]
          },
          "featureKey": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueAggregateCriterionOfGuid"
              }
            ]
          },
          "entityId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueAggregateCriterionOfInteger"
              }
            ]
          },
          "entityType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueAggregateCriterionOfInteger"
              }
            ]
          },
          "createdDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateTimeOffset"
              }
            ]
          },
          "createdUserPrincipalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfGuid"
              }
            ]
          },
          "createdUserProfileId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringCriterion"
              }
            ]
          },
          "createdUserProfileTypeCode": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringCriterion"
              }
            ]
          },
          "updatedDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateTimeOffset"
              }
            ]
          },
          "updatedUserPrincipalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfGuid"
              }
            ]
          },
          "updatedUserProfileId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringCriterion"
              }
            ]
          },
          "updatedUserProfileTypeCode": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringCriterion"
              }
            ]
          },
          "criterionGroup": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CriterionGroup"
              }
            ]
          }
        }
      },
      "ValueCriterionOfInteger": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/ValueOperation"
          },
          "value": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "values": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ValueOperation": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "Equals",
          "NotEquals",
          "GreaterThan",
          "GreaterThanEquals",
          "LessThan",
          "LessThanEquals",
          "Between",
          "NotBetween",
          "In",
          "NotIn"
        ],
        "enum": [
          "None",
          "Equals",
          "NotEquals",
          "GreaterThan",
          "GreaterThanEquals",
          "LessThan",
          "LessThanEquals",
          "Between",
          "NotBetween",
          "In",
          "NotIn"
        ]
      },
      "StringCriterion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/StringOperation"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "values": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string"
            }
          },
          "nullReplacementValue": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "StringOperation": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "Equals",
          "NotEquals",
          "Contains",
          "NotContains",
          "IsNullOrEmpty",
          "IsNotNullOrEmpty",
          "IsNullOrWhitespace",
          "IsNotNullOrWhitespace",
          "StartsWith",
          "NotStartsWith",
          "EndsWith",
          "NotEndsWith",
          "In",
          "NotIn"
        ],
        "enum": [
          "None",
          "Equals",
          "NotEquals",
          "Contains",
          "NotContains",
          "IsNullOrEmpty",
          "IsNotNullOrEmpty",
          "IsNullOrWhitespace",
          "IsNotNullOrWhitespace",
          "StartsWith",
          "NotStartsWith",
          "EndsWith",
          "NotEndsWith",
          "In",
          "NotIn"
        ]
      },
      "BooleanCriterion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/BooleanOperation"
          },
          "value": {
            "type": "boolean",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "BooleanOperation": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "Equals",
          "NotEquals"
        ],
        "enum": [
          "None",
          "Equals",
          "NotEquals"
        ]
      },
      "ValueAggregateCriterionOfGuid": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ValueCriterionOfGuid"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "aggregateFunction": {
                "$ref": "#/components/schemas/ValueAggregateFunction"
              },
              "count": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ValueCriterionOfInteger"
                  }
                ]
              }
            }
          }
        ]
      },
      "ValueAggregateFunction": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Any",
          "All",
          "Count",
          "Sum",
          "Average",
          "Min",
          "Max"
        ],
        "enum": [
          "Any",
          "All",
          "Count",
          "Sum",
          "Average",
          "Min",
          "Max"
        ]
      },
      "ValueCriterionOfGuid": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/ValueOperation"
          },
          "value": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "values": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "string",
            "format": "guid",
            "nullable": true
          }
        }
      },
      "ValueAggregateCriterionOfInteger": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ValueCriterionOfInteger"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "aggregateFunction": {
                "$ref": "#/components/schemas/ValueAggregateFunction"
              },
              "count": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/ValueCriterionOfInteger"
                  }
                ]
              }
            }
          }
        ]
      },
      "ValueCriterionOfDateTimeOffset": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/ValueOperation"
          },
          "value": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "values": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "CriterionGroup": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CriterionGroup"
            }
          },
          "operator": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LogicalOperator"
              }
            ]
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "booleanOperation": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanOperation"
              }
            ]
          },
          "booleanAggregateFunction": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanAggregateFunction"
              }
            ]
          },
          "idOperation": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdOperation"
              }
            ]
          },
          "idAggregateFunction": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdAggregateFunction"
              }
            ]
          },
          "valueOperation": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation"
              }
            ]
          },
          "valueAggregateFunction": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueAggregateFunction"
              }
            ]
          },
          "stringOperation": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringOperation"
              }
            ]
          },
          "stringAggregateFunction": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringAggregateFunction"
              }
            ]
          },
          "value": {
            "nullable": true
          },
          "values": {
            "type": "array",
            "nullable": true,
            "items": {}
          },
          "rangeEndValue": {
            "nullable": true
          },
          "rangeStartValue": {
            "nullable": true
          },
          "nullReplacementValue": {
            "nullable": true
          },
          "count": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfInteger"
              }
            ]
          }
        }
      },
      "LogicalOperator": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "And",
          "Or"
        ],
        "enum": [
          "And",
          "Or"
        ]
      },
      "BooleanAggregateFunction": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Any",
          "All",
          "Count"
        ],
        "enum": [
          "Any",
          "All",
          "Count"
        ]
      },
      "IdOperation": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "None",
          "Equals",
          "NotEquals",
          "In",
          "NotIn"
        ],
        "enum": [
          "None",
          "Equals",
          "NotEquals",
          "In",
          "NotIn"
        ]
      },
      "IdAggregateFunction": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Any",
          "All",
          "Count"
        ],
        "enum": [
          "Any",
          "All",
          "Count"
        ]
      },
      "StringAggregateFunction": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Any",
          "All",
          "Count"
        ],
        "enum": [
          "Any",
          "All",
          "Count"
        ]
      },
      "SearchRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "options": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/SearchOptions"
              }
            ]
          }
        }
      },
      "SearchOptions": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pageIndex": {
            "type": "integer",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "nullable": true
          },
          "pageSize": {
            "type": "integer",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "nullable": true
          },
          "skip": {
            "type": "integer",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "take": {
            "type": "integer",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          }
        }
      },
      "ToolPackageRequest": {
        "type": "object",
        "description": "Payload for creating or updating a tool package. Wraps ToolPackageInfo and\nexposes the feature catalog as a strongly-typed ToolPackageFeature enum rather than\nraw feature-key Guids.",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the tool package.",
            "maxLength": 250,
            "minLength": 1
          },
          "portalId": {
            "type": "integer",
            "description": "The portal this package is scoped to, if any.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 1,
            "nullable": true
          },
          "defaultMembership": {
            "type": "boolean",
            "description": "Whether new clients receive this package by default."
          },
          "allTools": {
            "type": "boolean",
            "description": "Whether the package grants access to all tools (overrides Features for tool access)."
          },
          "allContent": {
            "type": "boolean",
            "description": "Whether the package grants access to all content (overrides Features for content access)."
          },
          "inactive": {
            "type": "boolean",
            "description": "Whether the package is inactive (retained but not granted to new members)."
          },
          "features": {
            "type": "array",
            "description": "The features this tool package grants access to.",
            "items": {
              "$ref": "#/components/schemas/ToolPackageFeature"
            }
          }
        }
      },
      "Assignment": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AssignmentCreateInfo"
          },
          {
            "type": "object",
            "description": "Employee course assignment.",
            "additionalProperties": false,
            "required": [
              "id"
            ],
            "properties": {
              "id": {
                "type": "integer",
                "format": "int32"
              },
              "status": {
                "$ref": "#/components/schemas/AssignmentStatus"
              },
              "courseName": {
                "type": "string"
              },
              "startedDateTime": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "completedDateTime": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "createdDateTime": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "createdUserPrincipalId": {
                "type": "string",
                "format": "guid",
                "nullable": true
              },
              "updatedDateTime": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "updatedUserPrincipalId": {
                "type": "string",
                "format": "guid",
                "nullable": true
              }
            }
          }
        ]
      },
      "AssignmentStatus": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Unknown",
          "NotStarted",
          "Started",
          "Completed"
        ],
        "enum": [
          "Unknown",
          "NotStarted",
          "Started",
          "Completed"
        ]
      },
      "AssignmentCreateInfo": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AssignmentUpdateInfo"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "courseId",
              "accountId",
              "employeeId"
            ],
            "properties": {
              "courseId": {
                "type": "string",
                "format": "guid",
                "minLength": 1
              },
              "accountId": {
                "type": "integer",
                "format": "int32"
              },
              "employeeId": {
                "type": "integer",
                "format": "int32"
              }
            }
          }
        ]
      },
      "AssignmentUpdateInfo": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "dueDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        }
      },
      "PagedResultOfAssignment": {
        "type": "object",
        "description": "A page of results from a larger result set, along with paging metadata.",
        "additionalProperties": false,
        "required": [
          "items"
        ],
        "properties": {
          "hasMoreResults": {
            "type": "boolean",
            "description": "A value indicating whether the larger result set has more results."
          },
          "skip": {
            "type": "integer",
            "description": "A value indicating how many of the previous values in the larger result set were omitted.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "take": {
            "type": "integer",
            "description": "The number of records retrieved from the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of records in the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "items": {
            "type": "array",
            "description": "The records retrieved from the larger result set.",
            "items": {
              "$ref": "#/components/schemas/Assignment"
            }
          }
        }
      },
      "ValidationProblemDetails": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HttpValidationProblemDetails"
          },
          {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "properties": {
              "errors": {
                "type": "object",
                "additionalProperties": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        ]
      },
      "HttpValidationProblemDetails": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProblemDetails"
          },
          {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "properties": {
              "errors": {
                "type": "object",
                "additionalProperties": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        ]
      },
      "AssignmentSearchRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequestOfAssignmentSearchCriteriaAndAssignmentSearchOrder"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "SearchRequestOfAssignmentSearchCriteriaAndAssignmentSearchOrder": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequestOfAssignmentSearchCriteria"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "order": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/AssignmentSearchOrder"
                  }
                ]
              }
            }
          }
        ]
      },
      "AssignmentSearchOrder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "courseName": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "status": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "dueDate": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "createdDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "startedDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "completedDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          }
        }
      },
      "Sort2": {
        "type": "object",
        "description": "Represents a sort setting.",
        "additionalProperties": false,
        "properties": {
          "direction": {
            "description": "Gets or sets the sort direction.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/SortDirection2"
              }
            ]
          },
          "priority": {
            "type": "integer",
            "description": "Gets or sets the sort priority.",
            "format": "int32"
          },
          "nullLast": {
            "type": "boolean",
            "description": "Gets or sets a value indicating whether to sort null values last.",
            "nullable": true
          }
        }
      },
      "SortDirection2": {
        "type": "string",
        "description": "Enumerates sort directions.",
        "x-enumNames": [
          "Ascending",
          "Descending"
        ],
        "enum": [
          "Ascending",
          "Descending"
        ]
      },
      "SearchRequestOfAssignmentSearchCriteria": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequest2"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "criteria": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/AssignmentSearchCriteria"
                  }
                ]
              }
            }
          }
        ]
      },
      "AssignmentSearchCriteria": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfInteger"
              }
            ]
          },
          "accountId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfInteger"
              }
            ]
          },
          "employeeId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfInteger"
              }
            ]
          },
          "courseId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfGuid"
              }
            ]
          },
          "courseName": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringCriterion2"
              }
            ]
          },
          "status": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfAssignmentStatus"
              }
            ]
          },
          "dueDate": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateOnly"
              }
            ]
          },
          "startedDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateTimeOffset2"
              }
            ]
          },
          "completedDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateTimeOffset2"
              }
            ]
          },
          "createdDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateTimeOffset2"
              }
            ]
          },
          "createdUserPrincipalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfGuid"
              }
            ]
          },
          "updatedDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateTimeOffset2"
              }
            ]
          },
          "updatedUserPrincipalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfGuid"
              }
            ]
          },
          "criterionGroup": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CriterionGroup2"
              }
            ]
          }
        }
      },
      "IdCriterionOfInteger": {
        "type": "object",
        "description": "Represents a criterion for id types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdOperation2"
              }
            ]
          },
          "value": {
            "type": "integer",
            "description": "Gets or sets the value.",
            "format": "int32",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          "nullReplacementValue": {
            "type": "integer",
            "description": "Gets or sets the NULL replacement value.",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "IdOperation2": {
        "type": "string",
        "description": "Enumerates the id operations.",
        "x-enumNames": [
          "None",
          "Equals",
          "NotEquals",
          "In",
          "NotIn"
        ],
        "enum": [
          "None",
          "Equals",
          "NotEquals",
          "In",
          "NotIn"
        ]
      },
      "IdCriterionOfLong": {
        "type": "object",
        "description": "Represents a criterion for id types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdOperation2"
              }
            ]
          },
          "value": {
            "type": "integer",
            "description": "Gets or sets the value.",
            "format": "int64",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          "nullReplacementValue": {
            "type": "integer",
            "description": "Gets or sets the NULL replacement value.",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "IdCriterionOfGuid": {
        "type": "object",
        "description": "Represents a criterion for id types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdOperation2"
              }
            ]
          },
          "value": {
            "type": "string",
            "description": "Gets or sets the value.",
            "format": "guid",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "string",
              "format": "guid",
              "nullable": true
            }
          },
          "nullReplacementValue": {
            "type": "string",
            "description": "Gets or sets the NULL replacement value.",
            "format": "guid",
            "nullable": true
          }
        }
      },
      "StringCriterion2": {
        "type": "object",
        "description": "Represents a criterion for a string.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringOperation2"
              }
            ]
          },
          "value": {
            "type": "string",
            "description": "Gets or sets the value.",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "nullReplacementValue": {
            "type": "string",
            "description": "Gets or sets the NULL replacement value.",
            "nullable": true
          }
        }
      },
      "StringOperation2": {
        "type": "string",
        "description": "Enumerates the string operations.",
        "x-enumNames": [
          "None",
          "Equals",
          "NotEquals",
          "Contains",
          "NotContains",
          "IsNullOrEmpty",
          "IsNotNullOrEmpty",
          "IsNullOrWhitespace",
          "IsNotNullOrWhitespace",
          "StartsWith",
          "NotStartsWith",
          "EndsWith",
          "NotEndsWith",
          "In",
          "NotIn"
        ],
        "enum": [
          "None",
          "Equals",
          "NotEquals",
          "Contains",
          "NotContains",
          "IsNullOrEmpty",
          "IsNotNullOrEmpty",
          "IsNullOrWhitespace",
          "IsNotNullOrWhitespace",
          "StartsWith",
          "NotStartsWith",
          "EndsWith",
          "NotEndsWith",
          "In",
          "NotIn"
        ]
      },
      "ValueCriterionOfAssignmentStatus": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "description": "Gets or sets the value.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssignmentStatus"
              }
            ]
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "nullable": true,
              "oneOf": [
                {
                  "$ref": "#/components/schemas/AssignmentStatus"
                }
              ]
            }
          },
          "rangeEndValue": {
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssignmentStatus"
              }
            ]
          },
          "rangeStartValue": {
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssignmentStatus"
              }
            ]
          },
          "nullReplacementValue": {
            "description": "Gets or sets the NULL replacement value.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/AssignmentStatus"
              }
            ]
          }
        }
      },
      "ValueOperation2": {
        "type": "string",
        "description": "Enumerates the value operations.",
        "x-enumNames": [
          "None",
          "Equals",
          "NotEquals",
          "GreaterThan",
          "GreaterThanEquals",
          "LessThan",
          "LessThanEquals",
          "Between",
          "NotBetween",
          "In",
          "NotIn"
        ],
        "enum": [
          "None",
          "Equals",
          "NotEquals",
          "GreaterThan",
          "GreaterThanEquals",
          "LessThan",
          "LessThanEquals",
          "Between",
          "NotBetween",
          "In",
          "NotIn"
        ]
      },
      "ValueCriterionOfChar": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "string",
            "description": "Gets or sets the value.",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "string",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "string",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "string",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "string",
            "description": "Gets or sets the NULL replacement value.",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfByte": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "integer",
            "description": "Gets or sets the value.",
            "format": "byte",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "byte",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "integer",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "byte",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "integer",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "byte",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "integer",
            "description": "Gets or sets the NULL replacement value.",
            "format": "byte",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfUInt16": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "integer",
            "description": "Gets or sets the value.",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "integer",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "integer",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "integer",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "integer",
            "description": "Gets or sets the NULL replacement value.",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfUInt64": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "integer",
            "description": "Gets or sets the value.",
            "format": "uint64",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "uint64",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "integer",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "uint64",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "integer",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "uint64",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "integer",
            "description": "Gets or sets the NULL replacement value.",
            "format": "uint64",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfUInt32": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "integer",
            "description": "Gets or sets the value.",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "integer",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "integer",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "integer",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "integer",
            "description": "Gets or sets the NULL replacement value.",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfInteger2": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "integer",
            "description": "Gets or sets the value.",
            "format": "int32",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "integer",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "int32",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "integer",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "int32",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "integer",
            "description": "Gets or sets the NULL replacement value.",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfShort": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "integer",
            "description": "Gets or sets the value.",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "integer",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "integer",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "integer",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "integer",
            "description": "Gets or sets the NULL replacement value.",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfLong": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "integer",
            "description": "Gets or sets the value.",
            "format": "int64",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "integer",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "int64",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "integer",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "int64",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "integer",
            "description": "Gets or sets the NULL replacement value.",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfDecimal": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "number",
            "description": "Gets or sets the value.",
            "format": "decimal",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "number",
              "format": "decimal",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "number",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "decimal",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "number",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "decimal",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "number",
            "description": "Gets or sets the NULL replacement value.",
            "format": "decimal",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfSingle": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "number",
            "description": "Gets or sets the value.",
            "format": "float",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "number",
              "format": "float",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "number",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "float",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "number",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "float",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "number",
            "description": "Gets or sets the NULL replacement value.",
            "format": "float",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfDouble": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "number",
            "description": "Gets or sets the value.",
            "format": "double",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "number",
              "format": "double",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "number",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "double",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "number",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "double",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "number",
            "description": "Gets or sets the NULL replacement value.",
            "format": "double",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfDateTime": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "string",
            "description": "Gets or sets the value.",
            "format": "date-time",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "string",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "date-time",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "string",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "date-time",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "string",
            "description": "Gets or sets the NULL replacement value.",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfDateTimeOffset2": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "string",
            "description": "Gets or sets the value.",
            "format": "date-time",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "string",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "date-time",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "string",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "date-time",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "string",
            "description": "Gets or sets the NULL replacement value.",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfDateOnly": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "type": "string",
            "description": "Gets or sets the value.",
            "format": "date",
            "nullable": true
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "type": "string",
              "format": "date",
              "nullable": true
            }
          },
          "rangeEndValue": {
            "type": "string",
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "date",
            "nullable": true
          },
          "rangeStartValue": {
            "type": "string",
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "format": "date",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "string",
            "description": "Gets or sets the NULL replacement value.",
            "format": "date",
            "nullable": true
          }
        }
      },
      "CriterionGroup2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "items": {
            "type": "array",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/CriterionGroup2"
            }
          },
          "operator": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/LogicalOperator2"
              }
            ]
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "booleanOperation": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanOperation2"
              }
            ]
          },
          "booleanAggregateFunction": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanAggregateFunction2"
              }
            ]
          },
          "idOperation": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdOperation2"
              }
            ]
          },
          "idAggregateFunction": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdAggregateFunction2"
              }
            ]
          },
          "valueOperation": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "valueAggregateFunction": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueAggregateFunction2"
              }
            ]
          },
          "stringOperation": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringOperation2"
              }
            ]
          },
          "stringAggregateFunction": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringAggregateFunction2"
              }
            ]
          },
          "value": {
            "nullable": true
          },
          "values": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": true
            }
          },
          "rangeEndValue": {
            "nullable": true
          },
          "rangeStartValue": {
            "nullable": true
          },
          "nullReplacementValue": {
            "nullable": true
          },
          "count": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfInteger2"
              }
            ]
          }
        }
      },
      "LogicalOperator2": {
        "type": "string",
        "description": "Enumerates the logical operators.",
        "x-enumNames": [
          "And",
          "Or"
        ],
        "enum": [
          "And",
          "Or"
        ]
      },
      "BooleanOperation2": {
        "type": "string",
        "description": "Enumerates the boolean operations.",
        "x-enumNames": [
          "None",
          "Equals",
          "NotEquals"
        ],
        "enum": [
          "None",
          "Equals",
          "NotEquals"
        ]
      },
      "BooleanAggregateFunction2": {
        "type": "string",
        "description": "Enumerates the boolean aggregate functions.",
        "x-enumNames": [
          "Any",
          "All",
          "Count"
        ],
        "enum": [
          "Any",
          "All",
          "Count"
        ]
      },
      "IdAggregateFunction2": {
        "type": "string",
        "description": "Enumerates id aggregate functions.",
        "x-enumNames": [
          "Any",
          "All",
          "Count"
        ],
        "enum": [
          "Any",
          "All",
          "Count"
        ]
      },
      "ValueAggregateFunction2": {
        "type": "string",
        "description": "Enumerates value aggregate functions.",
        "x-enumNames": [
          "Any",
          "All",
          "Count",
          "Sum",
          "Average",
          "Min",
          "Max"
        ],
        "enum": [
          "Any",
          "All",
          "Count",
          "Sum",
          "Average",
          "Min",
          "Max"
        ]
      },
      "StringAggregateFunction2": {
        "type": "string",
        "description": "Enumerates string aggregate functions.",
        "x-enumNames": [
          "Any",
          "All",
          "Count"
        ],
        "enum": [
          "Any",
          "All",
          "Count"
        ]
      },
      "SearchRequest2": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "options": {
            "$ref": "#/components/schemas/SearchOptions2"
          }
        }
      },
      "SearchOptions2": {
        "type": "object",
        "description": "Represents search options.",
        "additionalProperties": false,
        "properties": {
          "pageIndex": {
            "type": "integer",
            "description": "Gets or sets the page index. Zero indicates the first page.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "nullable": true
          },
          "pageSize": {
            "type": "integer",
            "description": "Gets or sets the size of the page.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0,
            "nullable": true
          },
          "skip": {
            "type": "integer",
            "description": "Gets or sets the number of items to skip.",
            "format": "int32",
            "default": 0,
            "maximum": 2147483647,
            "minimum": 0
          },
          "take": {
            "type": "integer",
            "description": "Gets or sets the number of items to take.",
            "format": "int32",
            "default": 100,
            "maximum": 2147483647,
            "minimum": 0
          }
        }
      },
      "CourseCategory": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CourseCategoryCreateInfo"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "isReadOnly"
            ],
            "properties": {
              "id": {
                "type": "integer",
                "format": "int32"
              },
              "isReadOnly": {
                "type": "boolean"
              },
              "createdDateTime": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "createdUserPrincipalId": {
                "type": "string",
                "format": "guid",
                "nullable": true
              },
              "updatedDateTime": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "updatedUserPrincipalId": {
                "type": "string",
                "format": "guid",
                "nullable": true
              }
            }
          }
        ]
      },
      "CourseCategoryCreateInfo": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CourseCategoryUpdateInfo"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "accountId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "CourseCategoryUpdateInfo": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1
          }
        }
      },
      "PagedResultOfCourseCategory": {
        "type": "object",
        "description": "A page of results from a larger result set, along with paging metadata.",
        "additionalProperties": false,
        "required": [
          "items"
        ],
        "properties": {
          "hasMoreResults": {
            "type": "boolean",
            "description": "A value indicating whether the larger result set has more results."
          },
          "skip": {
            "type": "integer",
            "description": "A value indicating how many of the previous values in the larger result set were omitted.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "take": {
            "type": "integer",
            "description": "The number of records retrieved from the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of records in the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "items": {
            "type": "array",
            "description": "The records retrieved from the larger result set.",
            "items": {
              "$ref": "#/components/schemas/CourseCategory"
            }
          }
        }
      },
      "CourseCategorySearchRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequestOfCourseCategorySearchCriteriaAndCourseCategorySearchOrder"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "SearchRequestOfCourseCategorySearchCriteriaAndCourseCategorySearchOrder": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequestOfCourseCategorySearchCriteria"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "order": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CourseCategorySearchOrder"
                  }
                ]
              }
            }
          }
        ]
      },
      "CourseCategorySearchOrder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          }
        }
      },
      "SearchRequestOfCourseCategorySearchCriteria": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequest2"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "criteria": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CourseCategorySearchCriteria"
                  }
                ]
              }
            }
          }
        ]
      },
      "CourseCategorySearchCriteria": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfInteger"
              }
            ]
          },
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringCriterion2"
              }
            ]
          },
          "accountId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfInteger"
              }
            ]
          },
          "createdDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateTimeOffset2"
              }
            ]
          },
          "createdUserPrincipalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfGuid"
              }
            ]
          },
          "updatedDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateTimeOffset2"
              }
            ]
          },
          "updatedUserPrincipalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfGuid"
              }
            ]
          },
          "criterionGroup": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CriterionGroup2"
              }
            ]
          }
        }
      },
      "Course": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CourseCreateInfo"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "isReadOnly"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "guid"
              },
              "isReadOnly": {
                "type": "boolean"
              },
              "isProcessing": {
                "type": "boolean"
              },
              "categories": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "createdDateTime": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "createdUserPrincipalId": {
                "type": "string",
                "format": "guid",
                "nullable": true
              },
              "updatedDateTime": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "updatedUserPrincipalId": {
                "type": "string",
                "format": "guid",
                "nullable": true
              }
            }
          }
        ]
      },
      "CourseCreateInfo": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CourseUpdateInfo"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "accountId": {
                "type": "integer",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "CourseUpdateInfo": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "language"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1
          },
          "hasClosedCaptions": {
            "type": "boolean"
          },
          "language": {
            "type": "string",
            "maxLength": 10,
            "minLength": 1
          },
          "audience": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseAudience"
              }
            ]
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "durationInMinutes": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "categoryIds": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "contentType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseContentType"
              }
            ]
          }
        }
      },
      "CourseAudience": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Employees",
          "Managers"
        ],
        "enum": [
          "Employees",
          "Managers"
        ]
      },
      "CourseContentType": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "SCORM",
          "AICC",
          "XAPI",
          "CMI5",
          "PDF",
          "MP4",
          "MP3",
          "YouTube"
        ],
        "enum": [
          "SCORM",
          "AICC",
          "XAPI",
          "CMI5",
          "PDF",
          "MP4",
          "MP3",
          "YouTube"
        ]
      },
      "PagedResultOfCourse": {
        "type": "object",
        "description": "A page of results from a larger result set, along with paging metadata.",
        "additionalProperties": false,
        "required": [
          "items"
        ],
        "properties": {
          "hasMoreResults": {
            "type": "boolean",
            "description": "A value indicating whether the larger result set has more results."
          },
          "skip": {
            "type": "integer",
            "description": "A value indicating how many of the previous values in the larger result set were omitted.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "take": {
            "type": "integer",
            "description": "The number of records retrieved from the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of records in the larger result set.",
            "format": "int32",
            "maximum": 2147483647,
            "minimum": 0
          },
          "items": {
            "type": "array",
            "description": "The records retrieved from the larger result set.",
            "items": {
              "$ref": "#/components/schemas/Course"
            }
          }
        }
      },
      "CourseSearchRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequestOfCourseSearchCriteriaAndCourseSearchOrder"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "SearchRequestOfCourseSearchCriteriaAndCourseSearchOrder": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequestOfCourseSearchCriteria"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "order": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CourseSearchOrder"
                  }
                ]
              }
            }
          }
        ]
      },
      "CourseSearchOrder": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "language": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "audience": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "durationInMinutes": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "contentType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          },
          "createdDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/Sort2"
              }
            ]
          }
        }
      },
      "SearchRequestOfCourseSearchCriteria": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SearchRequest2"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "criteria": {
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/CourseSearchCriteria"
                  }
                ]
              }
            }
          }
        ]
      },
      "CourseSearchCriteria": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfGuid"
              }
            ]
          },
          "name": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringCriterion2"
              }
            ]
          },
          "isProcessing": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanCriterion2"
              }
            ]
          },
          "language": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/StringCriterion2"
              }
            ]
          },
          "audience": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfCourseAudience"
              }
            ]
          },
          "durationInMinutes": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfInteger2"
              }
            ]
          },
          "contentType": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfCourseContentType"
              }
            ]
          },
          "createdDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateTimeOffset2"
              }
            ]
          },
          "createdUserPrincipalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfGuid"
              }
            ]
          },
          "updatedDateTime": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueCriterionOfDateTimeOffset2"
              }
            ]
          },
          "updatedUserPrincipalId": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IdCriterionOfGuid"
              }
            ]
          },
          "criterionGroup": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CriterionGroup2"
              }
            ]
          }
        }
      },
      "BooleanCriterion2": {
        "type": "object",
        "description": "Represents a criterion for a boolean value.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/BooleanOperation2"
              }
            ]
          },
          "value": {
            "type": "boolean",
            "description": "Gets or sets the value.",
            "nullable": true
          },
          "nullReplacementValue": {
            "type": "boolean",
            "description": "Gets or sets the NULL replacement value.",
            "nullable": true
          }
        }
      },
      "ValueCriterionOfCourseAudience": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "description": "Gets or sets the value.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseAudience"
              }
            ]
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "nullable": true,
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CourseAudience"
                }
              ]
            }
          },
          "rangeEndValue": {
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseAudience"
              }
            ]
          },
          "rangeStartValue": {
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseAudience"
              }
            ]
          },
          "nullReplacementValue": {
            "description": "Gets or sets the NULL replacement value.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseAudience"
              }
            ]
          }
        }
      },
      "ValueCriterionOfCourseContentType": {
        "type": "object",
        "description": "Represents a criterion for value types.",
        "additionalProperties": false,
        "properties": {
          "operation": {
            "description": "Gets or sets the operation.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ValueOperation2"
              }
            ]
          },
          "value": {
            "description": "Gets or sets the value.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseContentType"
              }
            ]
          },
          "values": {
            "type": "array",
            "description": "Gets or sets the values.  Should only be used when a In or NotIn\nvalue is specified for Operation",
            "nullable": true,
            "items": {
              "nullable": true,
              "oneOf": [
                {
                  "$ref": "#/components/schemas/CourseContentType"
                }
              ]
            }
          },
          "rangeEndValue": {
            "description": "Gets or sets the range end value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseContentType"
              }
            ]
          },
          "rangeStartValue": {
            "description": "Gets or sets the range start value. Should only be used when a Between or NotBetween\nvalue is specified for Operation",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseContentType"
              }
            ]
          },
          "nullReplacementValue": {
            "description": "Gets or sets the NULL replacement value.",
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CourseContentType"
              }
            ]
          }
        }
      }
    }
  }
}
