{
  "swagger": "2.0",
  "info": {
    "description": "A User represents the basic identity for every individual in the system.",
    "version": "1.0",
    "title": "User",
    "contact": {}
  },
  "host": "f1c16n6.restletmocks.net",
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/test-data": {
      "post": {
        "tags": [
          "Test Data"
        ],
        "summary": "Creates Test Fixture Data",
        "description": "Creates Test Fixture Data",
        "operationId": "test-data-create",
        "parameters": [
          {
            "name": "tenantName",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "An optional parameter to limit the creation of the test data to the specified tenant",
            "x-example": "chassi"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200"
          }
        }
      }
    },
    "/early-invites": {
      "post": {
        "tags": [
          "Early Invites"
        ],
        "summary": "Create early access user invitation",
        "description": "Create early access user invitation\n\nAllows for invitee limited access in order to complete registration",
        "operationId": "early-invites-create",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EarlyInvite"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EarlyInvite"
            }
          }
        }
      }
    },
    "/early-invites/{earlyInviteId}": {
      "get": {
        "tags": [
          "Early Invites"
        ],
        "summary": "Get early invite",
        "operationId": "early-invites-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EarlyInvite"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Early Invites"
        ],
        "summary": "Update early invite",
        "operationId": "early-invites-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EarlyInvite"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EarlyInvite"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "earlyInviteId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/early-invites-claim": {
      "post": {
        "tags": [
          "Early Invites"
        ],
        "summary": "Claim early access user invitation",
        "description": "Claim early access user invitation",
        "operationId": "early-invites-claim",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EarlyInvite"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EarlyInvite"
            }
          }
        }
      }
    },
    "/users": {
      "get": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Returns a list of users",
        "description": "Returns a list of users",
        "operationId": "users-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "An optional parameter to filter the users by tenant.",
            "x-example": "123e4567-e89b-12d3-a456-426655440001"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/User"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Creates a new user",
        "description": "Creates a new user",
        "operationId": "users-create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "linkToAuthUserInTenantId",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "An optional parameter to link this new user to another user with the same email in the specified tenant.",
            "x-example": "123e4567-e89b-12d3-a456-426655440001"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/User"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "409": {
            "description": "Status 409",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/users/{userId}": {
      "get": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Get a user",
        "description": "Get a user",
        "operationId": "users-get",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Update a user",
        "description": "Update a user",
        "operationId": "users-update",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/User"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Delete a user",
        "description": "Delete a user",
        "operationId": "users-delete",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users-get-by-contact/{contactId}": {
      "get": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Returns the user associated with the specified contactId",
        "description": "Returns the user associated with the specified contactId",
        "operationId": "users-get-by-contact",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "contactId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users-search/{fieldName}/{fieldValue}": {
      "get": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Searches for a user",
        "description": "Searches for a user",
        "operationId": "users-search",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "An optional parameter to filter the search by tenant.",
            "x-example": "123e4567-e89b-12d3-a456-426655440001"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/User"
              }
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "fieldName",
          "in": "path",
          "required": true,
          "type": "string",
          "description": "The name of the DTO field to search.",
          "x-example": "email"
        },
        {
          "name": "fieldValue",
          "in": "path",
          "required": true,
          "type": "string",
          "description": "The value to search for in the specified field",
          "x-example": "jane.smith@gmail.com"
        }
      ]
    },
    "/users/{userId}/settings": {
      "get": {
        "tags": [
          "User Settings"
        ],
        "summary": "Returns a user's settings",
        "description": "Returns a user's settings",
        "operationId": "user-get-settings",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserSettings"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{userId}/settings/{settingsId}": {
      "put": {
        "tags": [
          "User Settings"
        ],
        "summary": "Updates a user's settings",
        "description": "Updates a user's settings",
        "operationId": "users-update-settings",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserSettings"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserSettings"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "settingsId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{userId}/contact": {
      "get": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Returns a user's associated Contact",
        "description": "Returns a user's associated Contact",
        "operationId": "users-get-contact",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserContact"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Creates a Contact associated to the specified User",
        "description": "Creates a Contact associated to the specified User",
        "operationId": "users-create-contact",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserContact"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserContact"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "409": {
            "description": "Status 409",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Updates a Contact associated to the specified User",
        "description": "Updates a Contact associated to the specified User",
        "operationId": "users-update-contact",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserContact"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserContact"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{userId}/tenants": {
      "get": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Returns a list of UserTenants associated with the specified User.",
        "description": "Returns a list of UserTenants associated with the specified User.",
        "operationId": "users-get-user-tenant-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UserTenant"
              }
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Create a new UserTenant and associate to the specified User",
        "description": "Create a new UserTenant and associate to the specified User",
        "operationId": "users-create-user-tenant",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserTenant"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserTenant"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "409": {
            "description": "Status 409",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{userId}/tenants/{userTenantId}": {
      "get": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Returns the specified UserTenant",
        "description": " /users/{userId}/tenants/{userTenantId}",
        "operationId": "users-get-user-tenant",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserTenant"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Update the specified UserTenant",
        "description": "Update the specified UserTenant",
        "operationId": "users-update-user-tenant",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserTenant"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserTenant"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Delete a UserTenant associated with the specified User.",
        "description": "Delete a UserTenant associated with the specified User. ",
        "operationId": "users-delete-user-tenant",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "userTenantId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/tenants/{tenantId}/members": {
      "get": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Returns a list of members for the specified tenant",
        "description": "Returns a list of members for the specified tenant",
        "operationId": "user-tenant-members-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/TenantMember"
              }
            }
          },
          "404": {
            "description": "Status 404"
          }
        }
      },
      "delete": {
        "tags": [
          "User Definitions"
        ],
        "summary": "Deletes all members for the specified tenant",
        "description": "Deletes all members for the specified tenant",
        "operationId": "user-tenant-members-delete-all",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404"
          }
        }
      },
      "parameters": [
        {
          "name": "tenantId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/register-user": {
      "post": {
        "tags": [
          "Registration"
        ],
        "summary": "Creates a new user as part of the registration process.",
        "description": "Creates a new user as part of the registration process.",
        "operationId": "user-register",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserRegistration"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "409": {
            "description": "Status 409",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/myuser": {
      "get": {
        "tags": [
          "User Profile"
        ],
        "summary": "Returns my User",
        "description": "Returns my User",
        "operationId": "users-get-myuser",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/MyUser"
            },
            "examples": {
              "application/json": "{\n    \"userId\": \"123e4567-e89b-12d3-a456-426655440001\",\n    \"userToken\": \"joe.smith@gmail.com\",\n    \"userFullName\": \"Joe Smith\",\n    \"contactId\": \"123e4567-e89b-12d3-a456-426655440000\",\n    \"enabled\": true,\n    \"metadata\": [\n        {\n            \"metadataTag\": \"Customer\",\n            \"key\": \"birthdate\",\n            \"displayLabel\": \"example\",\n            \"value\": \"1974-08-28T00:00:00.000Z\",\n            \"valueFormat\": \"String\"\n        }\n    ],\n    \"dateCreated\": \"2016-02-28T16:41:41.090Z\",\n    \"lastUpdated\": \"2016-02-28T16:41:41.090Z\"\n}"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/myprofile": {
      "get": {
        "tags": [
          "User Profile"
        ],
        "summary": "Returns a user's associated Contact",
        "description": "Returns a user's associated Contact",
        "operationId": "users-get-myprofile",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "get-or-create",
            "in": "query",
            "required": false,
            "type": "boolean",
            "description": "This operation will create an associated Contact record if one does not already exist by default, unless the value for this query parameter is false.",
            "default": true,
            "x-example": "false"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserContact"
            },
            "examples": {
              "application/json": "{\n    \"userId\": \"123e4567-e89b-12d3-a456-426655440000\",\n    \"contactId\": \"123e4567-e89b-12d3-a456-426655440000\",\n    \"contactName\": \"Joe Smith\",\n    \"contactTitle\": \"Dr\",\n    \"emailAddresses\": [\n        {\n            \"emailAddressId\": \"123e4567-e89b-12d3-a456-426655440000\",\n            \"contactId\": \"123e4567-e89b-12d3-a456-426655440000\",\n            \"label\": \"home\",\n            \"emailAddress\": \"a@b.com\"\n        },\n        {\n            \"emailAddressId\": \"123e4567-e89b-12d3-a456-426655440001\",\n            \"contactId\": \"123e4567-e89b-12d3-a456-426655440000\",\n            \"label\": \"work\",\n            \"emailAddress\": \"joe@chassi.com\"\n        }\n    ],\n    \"phoneNumbers\": [\n        {\n            \"phoneNumberId\": \"123e4567-e89b-12d3-a456-426655440000\",\n            \"contactId\": \"123e4567-e89b-12d3-a456-426655440000\",\n            \"label\": \"office\",\n            \"countryCode\": \"1\",\n            \"phoneNumber\": \"1 (555) 123-1235\"\n        },\n        {\n            \"phoneNumberId\": \"123e4567-e89b-12d3-a456-426655440001\",\n            \"contactId\": \"123e4567-e89b-12d3-a456-426655440000\",\n            \"label\": \"cell\",\n            \"countryCode\": \"1\",\n            \"phoneNumber\": \"1 (555) 123-3516\"\n        }\n    ],\n    \"physicalAddresses\": [\n        {\n            \"physicalAddressId\": \"123e4567-e89b-12d3-a456-426655440000\",\n            \"contactId\": \"123e4567-e89b-12d3-a456-426655440000\",\n            \"label\": \"mailing\",\n            \"attention\": \"Sam Smith\",\n            \"addressLine1\": \"123 Elm\",\n            \"addressLine2\": \"Suite 163\",\n            \"city\": \"Anytown\",\n            \"countryCode2Digit\": \"US\",\n            \"stateOrProvince2Digit\": \"AZ\",\n            \"postalCode\": \"85034\"\n        }\n    ],\n    \"primaryEmailAddressId\": \"123e4567-e89b-12d3-a456-426655440000\",\n    \"primaryPhoneNumerId\": \"123e4567-e89b-12d3-a456-426655440000\",\n    \"metadata\": [\n        {\n            \"metadataTag\": \"Customer\",\n            \"key\": \"birthdate\",\n            \"displayLabel\": \"Birthday\",\n            \"value\": \"1974-08-28T00:00:00.000Z\",\n            \"valueFormat\": \"String\"\n        }\n    ],\n    \"dateCreated\": \"2016-02-28T16:41:41.090Z\",\n    \"lastUpdated\": \"2016-02-28T16:41:41.090Z\"\n}"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Profile"
        ],
        "summary": "Creates a Contact associated to the specified User",
        "description": "Creates a Contact associated to the specified User",
        "operationId": "users-create-myprofile",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserContact"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserContact"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "409": {
            "description": "Status 409",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Profile"
        ],
        "summary": "Updates a Contact associated to the specified User",
        "description": "Updates a Contact associated to the specified User",
        "operationId": "users-update-myprofile",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserContact"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserContact"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/mysettings": {
      "get": {
        "tags": [
          "User Profile"
        ],
        "summary": "Returns a user's settings",
        "description": "Returns a user's settings",
        "operationId": "users-get-mysettings",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserSettings"
            },
            "examples": {
              "application/json": "{\n    \"settingsId\": \"123e4567-e89b-12d3-a456-426655440000\",\n    \"emailSubscriptions\": {\n        \"developmentUpdates\": true,\n        \"productAnnouncements\": true,\n        \"partnerSolutions\": true,\n        \"productsTipsAndTricks\": true,\n        \"productUseCaseStudies\": true,\n        \"systemAnnouncements\": true\n    }\n}"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Profile"
        ],
        "summary": "Updates a user's settings",
        "description": "Updates a user's settings",
        "operationId": "users-update-mysettings",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserSettings"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserSettings"
            },
            "examples": {
              "application/json": "{\n    \"settingsId\": \"123e4567-e89b-12d3-a456-426655440000\",\n    \"emailSubscriptions\": {\n        \"developmentUpdates\": true,\n        \"productAnnouncements\": true,\n        \"partnerSolutions\": true,\n        \"productsTipsAndTricks\": true,\n        \"productUseCaseStudies\": true,\n        \"systemAnnouncements\": true\n    }\n}"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/validate-user-token": {
      "get": {
        "tags": [
          "User Security"
        ],
        "summary": "Validates the existance of a user-token",
        "description": "Validates the existance of a user-token",
        "operationId": "users-validate-user-token",
        "parameters": [
          {
            "name": "usertoken",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The user token to be validated",
            "x-example": "joe.smith@chassi.com"
          }
        ],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404"
          }
        }
      }
    },
    "/validate-my-credential": {
      "post": {
        "tags": [
          "User Security"
        ],
        "summary": "Validates the user's credential",
        "description": "Validates the user's credential",
        "operationId": "users-validate-my-credential",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserCredential"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/users/{userId}/security/validate-credential": {
      "post": {
        "tags": [
          "User Security"
        ],
        "summary": "Validates the credential for the specified user",
        "description": "Validates the credential for the specified user",
        "operationId": "users-validate-credential",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserCredential"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/update-my-credential": {
      "put": {
        "tags": [
          "User Security"
        ],
        "summary": "Update the user's credential.",
        "operationId": "users-update-my-credential",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUserCredential"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/users/{userId}/security/update-credential": {
      "put": {
        "tags": [
          "User Security"
        ],
        "summary": "Update the user's credential.",
        "operationId": "users-update-credential",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUserCredential"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/my-phone-numbers": {
      "get": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Returns the user's masked authentication phone numbers",
        "description": "Returns the user's masked authentication phone numbers",
        "operationId": "users-my-phone-numbers-get",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/MaskedAuthPhoneNumbers"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/auth/initial-request-code": {
      "post": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Request initial user authentication",
        "description": "Request initial user authentication",
        "operationId": "users-request-initial-auth-code",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuthenticationRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/AuthenticationRequest"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/auth/request-code": {
      "post": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Request user authentication",
        "description": "Request user authentication",
        "operationId": "users-request-auth-code",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuthenticationRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/AuthenticationRequest"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/auth/my-device": {
      "post": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Submit verification code for device authentication",
        "description": "Submit verification code for device authentication",
        "operationId": "users-authenticate-my-device",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DeviceAuthenticationRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/DeviceAuthenticationResult"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/DeviceAuthenticationRequest"
            }
          }
        }
      }
    },
    "/auth/recover-my-credential": {
      "put": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Reset the user's credential",
        "description": "Reset the user's credential",
        "operationId": "users-authenticate-mycredential",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuthUserCredentialRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/auth/my-phone-number": {
      "put": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Updates the user’s authentication phone number.",
        "description": "Updates the user’s authentication phone number. This operation requires a valid authentication request.",
        "operationId": "users-authenticate-my-phone-number",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuthPhoneNumberRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/MaskedAuthPhoneNumbers"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/auth/my-user-token": {
      "put": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Update the user token used to authenticate with the system, typically an email address.",
        "description": "Update the user token used to authenticate with the system, typically an email address. This operation requires a valid authentication request.",
        "operationId": "users-authenticate-my-token",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuthUserTokenRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/MyUser"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/auth/my-recovery-codes": {
      "post": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Request the user's authentication recovery codes",
        "description": "Request the user's authentication recovery codes",
        "operationId": "users-authenticate-my-recovery-codes",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AuthRecoveryCodeRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/AuthRecoveryCodes"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/my-recovery-codes": {
      "get": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Returns the user's recovery codes",
        "description": "Returns the user's recovery codes. Used for downloading. ",
        "operationId": "users-my-recovery-codes-get",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/AuthRecoveryCodes"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "post": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Create new recovery codes for the user",
        "description": "Create new recovery codes for the user",
        "operationId": "users-my-recovery-codes-create",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/AuthRecoveryCodes"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/my-auth-requests": {
      "get": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Returns a list of my authentication requests",
        "description": "Returns a list of my authentication requests",
        "operationId": "users-my-authentications-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/AuthenticationRequestStatus"
              }
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/validate-my-device": {
      "get": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Validates my device token and device authentication status",
        "description": "Validates my device token and device authentication status",
        "operationId": "users-validate-my-device",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserDeviceStatus"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/users/{userId}/validate-device-token": {
      "get": {
        "tags": [
          "Multi-factor Authentication"
        ],
        "summary": "Validates the user device token and device authentication status",
        "description": "Validates the user device token and device authentication status",
        "operationId": "users-validate-device-token",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "deviceToken",
            "in": "query",
            "required": true,
            "type": "string",
            "description": "The device token to be validated"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserDeviceStatus"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{userId}/devices": {
      "get": {
        "tags": [
          "User Devices"
        ],
        "summary": "Get all user devices",
        "description": "Get all user devices",
        "operationId": "users-devices-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UserDevice"
              }
            },
            "examples": {
              "application/json": "[\n    {\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userLabel\": \"My Laptop\",\n        \"userAgent\": \"Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405\",\n        \"activeDevice\": true,\n        \"lastIpAddress\": \"92.15.16.188\",\n        \"lastGeoLocation\": \"Chandler, AZ\",\n        \"lastAuthenticatedSuccess\": \"2016-02-28T16:41:41.090Z\",\n        \"lastAuthenticatedExpiration\": \"2016-02-28T16:41:41.090Z\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\",\n        \"lastUpdated\": \"2016-02-28T16:41:41.090Z\"\n    },\n    {\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440001\",\n        \"userLabel\": \"My iPad\",\n        \"userAgent\": \"Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405\",\n        \"activeDevice\": true,\n        \"lastIpAddress\": \"92.15.16.188\",\n        \"lastGeoLocation\": \"Chandler, AZ\",\n        \"lastAuthenticatedSuccess\": \"2016-02-28T16:41:41.090Z\",\n        \"lastAuthenticatedExpiration\": \"2016-02-28T16:41:41.090Z\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\",\n        \"lastUpdated\": \"2016-02-28T16:41:41.090Z\"\n    }\n]"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Devices"
        ],
        "summary": "Create a user device",
        "description": "Create a user device",
        "operationId": "users-devices-create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserDevice"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserDevice"
            },
            "examples": {
              "application/json": "{\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userLabel\": \"My Laptop\",\n        \"userAgent\": \"Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405\",\n        \"activeDevice\": true,\n        \"lastIpAddress\": \"92.15.16.188\",\n        \"lastGeoLocation\": \"Chandler, AZ\",\n        \"lastAuthenticatedSuccess\": \"2016-02-28T16:41:41.090Z\",\n        \"lastAuthenticatedExpiration\": \"2016-02-28T16:41:41.090Z\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\",\n        \"lastUpdated\": \"2016-02-28T16:41:41.090Z\"\n}"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "409": {
            "description": "Status 409",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{userId}/devices/{userDeviceId}": {
      "get": {
        "tags": [
          "User Devices"
        ],
        "summary": "Get a user device",
        "description": "Get a user device",
        "operationId": "users-devices-get",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserDevice"
            },
            "examples": {
              "application/json": "{\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userLabel\": \"My Laptop\",\n        \"userAgent\": \"Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405\",\n        \"activeDevice\": true,\n        \"lastIpAddress\": \"92.15.16.188\",\n        \"lastGeoLocation\": \"Chandler, AZ\",\n        \"lastAuthenticatedSuccess\": \"2016-02-28T16:41:41.090Z\",\n        \"lastAuthenticatedExpiration\": \"2016-02-28T16:41:41.090Z\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\",\n        \"lastUpdated\": \"2016-02-28T16:41:41.090Z\"\n}"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Devices"
        ],
        "summary": "Update a user device",
        "description": "Update a user device",
        "operationId": "users-devices-update",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserDevice"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserDevice"
            },
            "examples": {
              "application/json": "{\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userLabel\": \"My Laptop\",\n        \"userAgent\": \"Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405\",\n        \"activeDevice\": true,\n        \"lastIpAddress\": \"92.15.16.188\",\n        \"lastGeoLocation\": \"Chandler, AZ\",\n        \"lastAuthenticatedSuccess\": \"2016-02-28T16:41:41.090Z\",\n        \"lastAuthenticatedExpiration\": \"2016-02-28T16:41:41.090Z\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\",\n        \"lastUpdated\": \"2016-02-28T16:41:41.090Z\"\n}"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Devices"
        ],
        "summary": "Delete a user device",
        "description": "Delete a user device",
        "operationId": "users-devices-delete",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "userDeviceId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/my-devices": {
      "get": {
        "tags": [
          "User Devices"
        ],
        "summary": "Returns a list of my devices",
        "description": "Returns a list of my devices",
        "operationId": "users-my-devices-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UserDevice"
              }
            },
            "examples": {
              "application/json": "[\n    {\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userLabel\": \"My Laptop\",\n        \"userAgent\": \"Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405\",\n        \"activeDevice\": true,\n        \"lastIpAddress\": \"92.15.16.188\",\n        \"lastGeoLocation\": \"Chandler, AZ\",\n        \"lastAuthenticatedSuccess\": \"2016-02-28T16:41:41.090Z\",\n        \"lastAuthenticatedExpiration\": \"2016-02-28T16:41:41.090Z\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\",\n        \"lastUpdated\": \"2016-02-28T16:41:41.090Z\"\n    },\n    {\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440001\",\n        \"userLabel\": \"My iPad\",\n        \"userAgent\": \"Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405\",\n        \"activeDevice\": true,\n        \"lastIpAddress\": \"92.15.16.188\",\n        \"lastGeoLocation\": \"Chandler, AZ\",\n        \"lastAuthenticatedSuccess\": \"2016-02-28T16:41:41.090Z\",\n        \"lastAuthenticatedExpiration\": \"2016-02-28T16:41:41.090Z\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\",\n        \"lastUpdated\": \"2016-02-28T16:41:41.090Z\"\n    }\n]"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/my-devices/{userDeviceId}": {
      "get": {
        "tags": [
          "User Devices"
        ],
        "summary": "Returns my device for the specified userDeviceId",
        "description": "Returns my device for the specified userDeviceId",
        "operationId": "users-my-devices-get",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserDevice"
            },
            "examples": {
              "application/json": "{\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userLabel\": \"My Laptop\",\n        \"userAgent\": \"Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405\",\n        \"activeDevice\": true,\n        \"lastIpAddress\": \"92.15.16.188\",\n        \"lastGeoLocation\": \"Chandler, AZ\",\n        \"lastAuthenticatedSuccess\": \"2016-02-28T16:41:41.090Z\",\n        \"lastAuthenticatedExpiration\": \"2016-02-28T16:41:41.090Z\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\",\n        \"lastUpdated\": \"2016-02-28T16:41:41.090Z\"\n}"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Devices"
        ],
        "summary": "Deletes my device for the specified userDeviceId",
        "description": "Deletes my device for the specified userDeviceId",
        "operationId": "users-my-devices-delete",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userDeviceId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/user-devices/{userDeviceId}/locations": {
      "get": {
        "tags": [
          "User Devices"
        ],
        "summary": "Get all user device locations",
        "description": "Get all user device locations",
        "operationId": "users-device-locations-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DeviceLocation"
              }
            },
            "examples": {
              "application/json": "[\n    {\n        \"deviceLocationId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userAgent\": \"Safari Version 11.0.0 (13434.233.1); macOS 10.13\",\n        \"geoLocation\": {\n            \"ipAddress\": \"70.162.13.201\",\n            \"lattitude\": 33.4001,\n            \"longitude\": -111.929,\n            \"locationAccuracyRadius\": 5,\n            \"location\": \"Chandler, AZ\",\n            \"network\": \"Cox Communications\"\n        },\n        \"deviceAuthenticated\": \"true\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\"\n    },\n    {\n        \"deviceLocationId\": \"123e4567-e89b-12d3-a456-426655440001\",\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userAgent\": \"Safari Version 11.0.0 (13434.233.1); macOS 10.13\",\n        \"geoLocation\": {\n            \"ipAddress\": \"82.131.68.35\",\n            \"lattitude\": 33.350,\n            \"longitude\": -111.902,\n            \"locationAccuracyRadius\": 5,\n            \"location\": \"Chandler, AZ\",\n            \"network\": \"CenturyLink Communications\"\n        },\n        \"deviceAuthenticated\": \"true\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\"\n    }\n]"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Devices"
        ],
        "summary": "Create a user device location",
        "description": "Create a user device location",
        "operationId": "users-device-locations-create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DeviceLocation"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/DeviceLocation"
            },
            "examples": {
              "application/json": "{\n        \"deviceLocationId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userAgent\": \"Safari Version 11.0.0 (13434.233.1); macOS 10.13\",\n        \"geoLocation\": {\n            \"ipAddress\": \"70.162.13.201\",\n            \"lattitude\": 33.4001,\n            \"longitude\": -111.929,\n            \"locationAccuracyRadius\": 5,\n            \"location\": \"Chandler, AZ\",\n            \"network\": \"Cox Communications\"\n        },\n        \"deviceAuthenticated\": \"true\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\"\n}"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userDeviceId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/user-devices/{userDeviceId}/locations/{deviceLocationId}": {
      "get": {
        "tags": [
          "User Devices"
        ],
        "summary": "Get a user device location",
        "description": "Get a user device location",
        "operationId": "users-device-locations-get",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/DeviceLocation"
            },
            "examples": {
              "application/json": "{\n        \"deviceLocationId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userAgent\": \"Safari Version 11.0.0 (13434.233.1); macOS 10.13\",\n        \"geoLocation\": {\n            \"ipAddress\": \"70.162.13.201\",\n            \"lattitude\": 33.4001,\n            \"longitude\": -111.929,\n            \"locationAccuracyRadius\": 5,\n            \"location\": \"Chandler, AZ\",\n            \"network\": \"Cox Communications\"\n        },\n        \"deviceAuthenticated\": \"true\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\"\n}"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Devices"
        ],
        "summary": "Update a user device location",
        "description": "Update a user device location",
        "operationId": "users-device-locations-update",
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DeviceLocation"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/DeviceLocation"
            },
            "examples": {
              "application/json": "{\n        \"deviceLocationId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userAgent\": \"Safari Version 11.0.0 (13434.233.1); macOS 10.13\",\n        \"geoLocation\": {\n            \"ipAddress\": \"70.162.13.201\",\n            \"lattitude\": 33.4001,\n            \"longitude\": -111.929,\n            \"locationAccuracyRadius\": 5,\n            \"location\": \"Chandler, AZ\",\n            \"network\": \"Cox Communications\"\n        },\n        \"deviceAuthenticated\": \"true\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\"\n}"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Devices"
        ],
        "summary": "Delete a user device location",
        "description": "Delete a user device location",
        "operationId": "users-device-locations-delete",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userDeviceId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "deviceLocationId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/my-locations": {
      "get": {
        "tags": [
          "User Devices"
        ],
        "summary": "Returns a list of all of my locations",
        "description": "Returns a list of all of my locations",
        "operationId": "users-my-device-locations-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DeviceLocation"
              }
            },
            "examples": {
              "application/json": "[\n    {\n        \"deviceLocationId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userAgent\": \"Safari Version 11.0.0 (13434.233.1); macOS 10.13\",\n        \"geoLocation\": {\n            \"ipAddress\": \"70.162.13.201\",\n            \"lattitude\": 33.4001,\n            \"longitude\": -111.929,\n            \"locationAccuracyRadius\": 5,\n            \"location\": \"Chandler, AZ\",\n            \"network\": \"Cox Communications\"\n        },\n        \"deviceAuthenticated\": \"true\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\"\n    },\n    {\n        \"deviceLocationId\": \"123e4567-e89b-12d3-a456-426655440001\",\n        \"userDeviceId\": \"123e4567-e89b-12d3-a456-426655440000\",\n        \"userAgent\": \"Safari Version 11.0.0 (13434.233.1); macOS 10.13\",\n        \"geoLocation\": {\n            \"ipAddress\": \"82.131.68.35\",\n            \"lattitude\": 33.350,\n            \"longitude\": -111.902,\n            \"locationAccuracyRadius\": 5,\n            \"location\": \"Chandler, AZ\",\n            \"network\": \"CenturyLink Communications\"\n        },\n        \"deviceAuthenticated\": \"true\",\n        \"dateCreated\": \"2016-02-28T16:41:41.090Z\"\n    }\n]"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/user-agreements": {
      "get": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Get all user agreements",
        "description": "Get all user agreements",
        "operationId": "users-agreements-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UserAgreement"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Create a user agreement",
        "description": "Create a user agreement",
        "operationId": "users-agreements-create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserAgreement"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserAgreement"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/user-agreements/{userAgreementId}": {
      "get": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Returns a user agreement",
        "description": "Returns a user agreement",
        "operationId": "users-agreements-get",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserAgreement"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Updates a user agreement",
        "description": "Updates a user agreement",
        "operationId": "users-agreements-update",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserAgreement"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserAgreement"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Deletes a User Agreement",
        "description": "Deletes a User Agreement",
        "operationId": "users-agreements-delete",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userAgreementId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{userId}/open-agreements": {
      "get": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Returns a list of open user agreements that require a response",
        "description": "Returns a list of open user agreements that require a response",
        "operationId": "users-open-agreements-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UserAgreement"
              }
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/my-open-agreements": {
      "get": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Returns a list of open user agreements that require a response",
        "description": "Returns a list of open user agreements that require a response",
        "operationId": "users-my-open-agreements-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UserAgreement"
              }
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/users/{userId}/agreement-status": {
      "get": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Returns all UserAgreementStatus  objects associated with a User",
        "description": "Returns all UserAgreements associated with a User",
        "operationId": "users-agreement-status-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UserAgreementStatus"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Create a UserAgreementStatus",
        "description": "Create a UserAgreementStatus",
        "operationId": "users-agreement-status-create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserAgreementStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserAgreementStatus"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "409": {
            "description": "Status 409",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{userId}/agreement-status/{userAgreementStatusId}": {
      "get": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Returns a UserAgreementStatus",
        "description": "Returns a UserAgreementStatus",
        "operationId": "users-agreement-status-get",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserAgreementStatus"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Updates a UserAgreementStatus",
        "description": "Updates a UserAgreementStatus",
        "operationId": "users-agreement-status-update",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserAgreementStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserAgreementStatus"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Deletes a UserAgreementStatus",
        "description": "Deletes a UserAgreementStatus",
        "operationId": "users-agreement-status-delete",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "userAgreementStatusId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/my-agreement-status": {
      "get": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Returns a list of user agreements the user has accepted or declined",
        "description": "Returns a list of user agreements the user has accepted or declined",
        "operationId": "users-my-agreement-status-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UserAgreementStatus"
              }
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "post": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Create a response for a User Agreement",
        "description": "Create a response for a User Agreement",
        "operationId": "users-my-agreement-status-create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserAgreementStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserAgreementStatus"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "409": {
            "description": "Status 409",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      }
    },
    "/my-agreement-status/{userAgreementStatusId}": {
      "get": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Returns a User Agreement Status",
        "description": "Returns a User Agreement Status",
        "operationId": "users-my-agreement-status-get",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserAgreementStatus"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "put": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Updates a User Agreement Status",
        "description": "Updates a User Agreement Status",
        "operationId": "users-my-agreement-status-update",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserAgreementStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/UserAgreementStatus"
            }
          },
          "400": {
            "description": "Status 400",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "User Agreements"
        ],
        "summary": "Deletes a User Agreement Status",
        "description": "Deletes a User Agreement Status",
        "operationId": "users-my-agreement-status-delete",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userAgreementStatusId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{userId}/elevate-privileges": {
      "get": {
        "tags": [
          "Elevated Privileges"
        ],
        "summary": "Get all elevated privilege processes",
        "description": "Get all elevated privilege processes",
        "operationId": "users-elevate-privileges-get-all",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ElevatedPrivilege"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Elevated Privileges"
        ],
        "summary": "Create elevated privilege process",
        "description": "Create elevated privilege process",
        "operationId": "users-elevate-privileges-create",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ElevatedPrivilege"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ElevatedPrivilege"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/users/{userId}/elevate-privileges/{elevatePrivilegeId}": {
      "get": {
        "tags": [
          "Elevated Privileges"
        ],
        "summary": "Get a elevated privilege process",
        "description": "Get a elevated privilege process",
        "operationId": "users-elevate-privileges-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ElevatedPrivilege"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Elevated Privileges"
        ],
        "summary": "Update a elevated privilege process",
        "description": "Update a elevated privilege process",
        "operationId": "users-elevate-privileges-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ElevatedPrivilege"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ElevatedPrivilege"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Elevated Privileges"
        ],
        "summary": "Delete a elevated privilege process",
        "description": "Delete a elevated privilege process",
        "operationId": "users-elevate-privileges-delete",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          }
        }
      },
      "parameters": [
        {
          "name": "userId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "elevatePrivilegeId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    }
  },
  "definitions": {
    "EarlyInvite": {
      "type": "object",
      "properties": {
        "earlyInviteId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "emailAddress": {
          "type": "string",
          "example": "early-access@chassi.com"
        },
        "accessCode": {
          "type": "string",
          "example": "6ABD56"
        },
        "redemptionDate": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "password": {
          "type": "string",
          "example": "someC001password"
        }
      }
    },
    "User": {
      "type": "object",
      "required": [
        "userToken"
      ],
      "properties": {
        "userId": {
          "type": "string",
          "description": "Unique identifier (per User) for an entity being tracked.",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "userToken": {
          "type": "string",
          "description": "The token used to login into the system, typically an email address.",
          "example": "joe.smith@gmail.com"
        },
        "userFullName": {
          "type": "string",
          "description": "The full name of the User.",
          "example": "Joe Smith"
        },
        "contactId": {
          "type": "string",
          "description": "The identifier of the Contact record associated with this User.",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "enabled": {
          "type": "boolean",
          "description": "Indicates if the user is enabled and able to login to the platform.",
          "default": true,
          "example": true
        },
        "primaryPhoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        },
        "secondaryPhoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        },
        "unvalidatedPhoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        },
        "entityLifecycleId": {
          "type": "string",
          "description": "The lifecycleId associated with the User",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "metadata": {
          "type": "array",
          "description": "An optional list of metadata attributes.",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time the entity was created.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time the entity was last modified.",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "UserSettings": {
      "type": "object",
      "properties": {
        "settingsId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "emailSubscriptions": {
          "$ref": "#/definitions/EmailSubscriptions"
        }
      },
      "description": "A collection of user settings\n\nTreated only as an embedded object (not standalone entity) to be incorporated in other entities (e.g. User).\n"
    },
    "UserContact": {
      "type": "object",
      "properties": {
        "userId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "contactId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "contactName": {
          "type": "string",
          "description": "The full name of the contact.",
          "example": "Joe Smith"
        },
        "contactTitle": {
          "type": "string",
          "example": "Dr"
        },
        "emailAddresses": {
          "type": "array",
          "description": "An optional list of email addresses",
          "items": {
            "$ref": "#/definitions/EmailAddress"
          }
        },
        "phoneNumbers": {
          "type": "array",
          "description": "An optional list of phone numbers",
          "items": {
            "$ref": "#/definitions/PhoneNumber"
          }
        },
        "physicalAddresses": {
          "type": "array",
          "description": "An optional of mailing addresses.",
          "items": {
            "$ref": "#/definitions/PhysicalAddress"
          }
        },
        "primaryEmailAddressId": {
          "type": "string",
          "description": "The id of the primary contact email",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "primaryPhoneNumberId": {
          "type": "string",
          "description": "The id of the primary contact phone number",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "metadata": {
          "type": "array",
          "description": "User defined data, such as birth date, customer support PIN.",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        },
        "dateCreated": {
          "type": "string",
          "description": "The date and time the entity was created.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastUpdated": {
          "type": "string",
          "description": "The date and time the entity was last modified.",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "EmailAddress": {
      "type": "object",
      "properties": {
        "emailAddressId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "contactId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "label": {
          "type": "string",
          "description": "A user defined label for this email address"
        },
        "emailAddress": {
          "type": "string",
          "example": "joe@chassi.com"
        }
      }
    },
    "PhoneNumber": {
      "type": "object",
      "properties": {
        "phoneNumberId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "contactId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "label": {
          "type": "string",
          "description": "A user defined label for this phone number."
        },
        "countryCode": {
          "type": "string",
          "description": "Phone number country code",
          "example": "1"
        },
        "phoneNumber": {
          "type": "string",
          "example": "1 (555) 123-1235"
        }
      },
      "description": "Treated only as an embedded object (not standalone entity) to be incorporated in other entities (e.g. Contact).\n\nFollows the ITU E.164 International Public Telecommunication numbering plan: https://en.wikipedia.org/wiki/E.164\n\nAs used, by example Twilio: https://support.twilio.com/hc/en-us/articles/223183008-Formatting-International-Phone-Numbers"
    },
    "PhysicalAddress": {
      "type": "object",
      "properties": {
        "physicalAddressId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "contactId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "label": {
          "type": "string",
          "description": "A user defined label for this mailing address.",
          "example": "mailing"
        },
        "attention": {
          "type": "string",
          "example": "Sam Smith"
        },
        "addressLine1": {
          "type": "string",
          "example": "123 Elm"
        },
        "addressLine2": {
          "type": "string"
        },
        "city": {
          "type": "string",
          "example": "Anytown"
        },
        "countryCode2Digit": {
          "type": "string",
          "example": "US"
        },
        "stateOrProvince2Digit": {
          "type": "string",
          "example": "AZ"
        },
        "postalCode": {
          "type": "string",
          "example": "85034"
        }
      },
      "description": "Treated only as an embedded object (not standalone entity) to be incorporated in other entities (e.g. Contact)."
    },
    "UserTenant": {
      "type": "object",
      "properties": {
        "userTenantId": {
          "type": "string",
          "description": "Unique identifier (per UserTenant) for an entity being tracked.",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "tenantId": {
          "type": "string",
          "description": "The identifier of the tenant associated to this user.",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "authTenant": {
          "type": "boolean",
          "description": "Indicates whether this tenant is used for authentication",
          "default": false,
          "example": false
        },
        "externalAuthId": {
          "type": "string",
          "description": "A cross reference to a userId in an external authentication system like Keycloak.",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time the entity was created.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time the entity was last modified.",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "EmailSubscriptions": {
      "type": "object",
      "properties": {
        "developmentUpdates": {
          "type": "boolean",
          "description": "Emails about platform developments.",
          "default": true,
          "example": true
        },
        "productAnnouncements": {
          "type": "boolean",
          "description": "Emails about new and updated product releases.",
          "default": true,
          "example": true
        },
        "partnerSolutions": {
          "type": "boolean",
          "description": "Emails from partners related to the Chassi platform.",
          "default": true,
          "example": true
        },
        "productsTipsAndTricks": {
          "type": "boolean",
          "description": "Emails for tips and tricks when using the Chassi platform.",
          "default": true,
          "example": true
        },
        "productUseCaseStudies": {
          "type": "boolean",
          "description": "Emails about use cases and experiences using the Chassi platform.",
          "default": true,
          "example": true
        },
        "systemAnnouncements": {
          "type": "boolean",
          "description": "Emails about system maintenance and other items affecting service delivery.",
          "default": true,
          "example": true
        }
      },
      "description": "A collection of user email subscription preferences,\n\nTreated only as an embedded object (not standalone entity) to be incorporated in other entities (e.g. UserSettings).\n"
    },
    "MetadataElement": {
      "type": "object",
      "required": [
        "key"
      ],
      "properties": {
        "metadataTag": {
          "type": "string",
          "description": "A namespace to group similar data",
          "example": "Customer"
        },
        "key": {
          "type": "string",
          "description": "Attribute name of metadata",
          "example": "birthdate"
        },
        "displayLabel": {
          "type": "string",
          "description": "Used to display the field label for the value"
        },
        "value": {
          "type": "string",
          "description": "Data value of metadata",
          "example": "1974-08-28T00:00:00.000Z"
        },
        "valueFormat": {
          "type": "string",
          "description": "Controlled enumerated types that realize value",
          "enum": [
            "String",
            "Text",
            "Number",
            "Date",
            "Time",
            "Datetime",
            "Boolean"
          ],
          "example": "String"
        }
      }
    },
    "FieldErrorResponse": {
      "type": "object",
      "properties": {
        "fieldName": {
          "type": "string"
        },
        "fieldError": {
          "type": "string"
        }
      }
    },
    "ErrorResponse": {
      "type": "object",
      "properties": {
        "statusCode": {
          "type": "number"
        },
        "errorMessage": {
          "type": "string"
        },
        "exceptionName": {
          "type": "string"
        },
        "fieldErrors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FieldErrorResponse"
          }
        }
      }
    },
    "TenantMember": {
      "type": "object",
      "properties": {
        "tenantId": {
          "type": "string",
          "description": "The identifier of the tenant associated to this member.",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "userId": {
          "type": "string",
          "description": "The identifier of the member user.",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "userToken": {
          "type": "string",
          "description": "The token used to authenticate, typically an email.",
          "example": "joe@chassi.com"
        },
        "fullName": {
          "type": "string",
          "description": "The full name of the member user",
          "example": "Joe Smith"
        }
      }
    },
    "UserRegistration": {
      "type": "object",
      "required": [
        "primaryPhoneNumber",
        "userFullName",
        "userToken"
      ],
      "properties": {
        "userTenantId": {
          "type": "string",
          "description": "The identifier of the tenant associated to this user.",
          "example": "b4db1fe9-3fc5-42c3-8584-d0ebe34a3e93"
        },
        "authRealm": {
          "type": "string",
          "description": "The name of the identity service authentication realm.",
          "example": "chassi"
        },
        "externalAuthId": {
          "type": "string",
          "description": "A cross reference to a userId in an external authentication system like Keycloak.",
          "example": "b4db1fe9-3fc5-42c3-8584-d0ebe34a3e93"
        },
        "userToken": {
          "type": "string",
          "description": "The user token used for authentication with the system, typically an email address.",
          "example": "joe.smith@gmail.com"
        },
        "userFullName": {
          "type": "string",
          "description": "The full name of the User.",
          "example": "Joe Smith"
        },
        "primaryPhoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        },
        "secondaryPhoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        },
        "metadata": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time the entity was created.",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "MyUser": {
      "type": "object",
      "required": [
        "userToken"
      ],
      "properties": {
        "userId": {
          "type": "string",
          "description": "Unique identifier (per User) for an entity being tracked.",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "userToken": {
          "type": "string",
          "description": "The token used to login into the system, typically an email address.",
          "example": "joe.smith@gmail.com"
        },
        "userFullName": {
          "type": "string",
          "description": "The full name of the User.",
          "example": "Joe Smith"
        },
        "contactId": {
          "type": "string",
          "description": "The identifier of the Contact record associated with this User.",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "enabled": {
          "type": "boolean",
          "description": "Indicates if the user is enabled and able to login to the platform.",
          "default": true,
          "example": true
        },
        "metadata": {
          "type": "array",
          "description": "An optional list of metadata attributes.",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time the entity was created.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time the entity was last modified.",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "UserCredential": {
      "type": "object",
      "properties": {
        "userCredential": {
          "type": "string",
          "description": "The User’s current password credential.",
          "example": "myPassword123$"
        }
      }
    },
    "UpdateUserCredential": {
      "type": "object",
      "properties": {
        "currentUserCredential": {
          "type": "string",
          "description": "The User's current password credential.",
          "example": "myPassword123$"
        },
        "newUserCredential": {
          "type": "string",
          "description": "The User's new password credential.",
          "example": "myNewPassword123$"
        }
      }
    },
    "MaskedAuthPhoneNumbers": {
      "type": "object",
      "properties": {
        "primaryPhoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        },
        "secondaryPhoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        },
        "unVerifiedPhoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        }
      }
    },
    "AuthenticationRequest": {
      "type": "object",
      "properties": {
        "authenticationRequestId": {
          "type": "string",
          "description": "Unique identifier for the associated AuthenticationRequest",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "authenticationType": {
          "type": "string",
          "description": "The type of the authentication request",
          "enum": [
            "sms-code",
            "recovery-code"
          ],
          "example": "sms-code"
        },
        "usePrimaryNumber": {
          "type": "boolean",
          "description": "The number requested to receive the SMS OTP code.",
          "default": true,
          "example": true
        },
        "phoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        }
      }
    },
    "DeviceAuthenticationRequest": {
      "type": "object",
      "properties": {
        "authenticationRequestId": {
          "type": "string",
          "description": "Unique identifier for the associated AuthenticationRequest",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "verificationCode": {
          "type": "string",
          "description": "The OTP authentication code",
          "example": "455334"
        },
        "storeUserDevice": {
          "type": "boolean",
          "description": "Track this user's device",
          "default": true,
          "example": true
        }
      }
    },
    "DeviceAuthenticationResult": {
      "type": "object",
      "properties": {
        "authenticationRequestId": {
          "type": "string",
          "description": "Unique identifier for the associated AuthenticationRequest",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "userAuthenticated": {
          "type": "boolean",
          "example": true
        },
        "storeUserDevice": {
          "type": "boolean",
          "description": "Track this user’s device"
        },
        "deviceToken": {
          "type": "string",
          "description": "An identifier used for cookie values to track the user's device.",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        }
      }
    },
    "AuthUserCredentialRequest": {
      "type": "object",
      "properties": {
        "authenticationRequestId": {
          "type": "string",
          "description": "Unique identifier for the associated AuthenticationRequest",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "verificationCode": {
          "type": "string",
          "description": "The OTP authentication code",
          "example": "455334"
        },
        "newUserCredential": {
          "type": "string",
          "description": "The User’s new password credential",
          "example": "myNewPassword123$"
        }
      }
    },
    "AuthPhoneNumberRequest": {
      "type": "object",
      "properties": {
        "authenticationRequestId": {
          "type": "string",
          "description": "Unique identifier for the associated AuthenticationRequest",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "verificationCode": {
          "type": "string",
          "description": "The OTP authentication code",
          "example": "45534"
        },
        "newPhoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        },
        "primaryNumber": {
          "type": "boolean",
          "description": "A true/false indicator for whether phonenumber is primary or secondary",
          "default": true,
          "example": true
        }
      }
    },
    "AuthUserTokenRequest": {
      "type": "object",
      "properties": {
        "authenticationRequestId": {
          "type": "string",
          "description": "Unique identifier for the associated AuthenticationRequest",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "verificationCode": {
          "type": "string",
          "description": "The OTP authentication code",
          "example": "455334"
        },
        "currentUserToken": {
          "type": "string",
          "description": "The User’s current authentication token.",
          "example": "joe@chassi.com"
        },
        "newUserToken": {
          "type": "string",
          "description": "The User’s new authentication token.",
          "example": "joe.smith@chassi.com"
        }
      }
    },
    "AuthRecoveryCodeRequest": {
      "type": "object",
      "properties": {
        "authenticationRequestId": {
          "type": "string",
          "description": "Unique identifier for the associated AuthenticationRequest",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "verificationCode": {
          "type": "string",
          "description": "The OTP authentication code",
          "example": "455334"
        }
      }
    },
    "AuthRecoveryCodes": {
      "type": "object",
      "properties": {
        "recoveryCodes": {
          "type": "array",
          "description": "A list of recovery codes",
          "items": {
            "$ref": "#/definitions/RecoveryCode"
          }
        },
        "dateCreated": {
          "type": "string",
          "description": "The date and time that the codes were generated",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "RecoveryCode": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "The user's recovery code",
          "example": "323443"
        },
        "available": {
          "type": "boolean",
          "description": "Indicates the availability of this code.",
          "default": true,
          "example": true
        }
      }
    },
    "AuthenticationRequestStatus": {
      "type": "object",
      "properties": {
        "authenticationRequestId": {
          "type": "string",
          "description": "Unique identifier for the associated UserAuthenticationRequest",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "userId": {
          "type": "string"
        },
        "userDeviceId": {
          "type": "string",
          "description": "Unique identifier for the associated UserDevice",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "requestedOperation": {
          "type": "string",
          "description": "Defines the name of the requested authentication operation"
        },
        "authenticationType": {
          "type": "string"
        },
        "usePrimaryNumber": {
          "type": "boolean"
        },
        "phoneNumber": {
          "$ref": "#/definitions/PhoneNumber"
        },
        "authRequestConfirmed": {
          "type": "boolean",
          "description": "True or False; did the auth request pass or fail",
          "default": false,
          "example": false
        },
        "storeUserDevice": {
          "type": "boolean",
          "description": "Did the user select to store a cookie on the device",
          "default": false,
          "example": false
        },
        "entityLifecycleId": {
          "type": "string"
        },
        "dateCreated": {
          "type": "string",
          "description": "The date and time the authentication request was confirmed or not.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date"
        }
      }
    },
    "UserDeviceStatus": {
      "type": "object",
      "properties": {
        "userId": {
          "type": "string",
          "description": "Unique identifier (for the associated User",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "userDeviceId": {
          "type": "string",
          "description": "The unique identifier for this user device.",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "validDevice": {
          "type": "boolean",
          "description": "A true/false indicator for whether this device is valid or not.",
          "default": false,
          "example": true
        },
        "lastAuthenticatedSuccess": {
          "type": "string",
          "format": "date-time",
          "description": "The last time this device was successfully authenticated.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastAuthenticatedExpiration": {
          "type": "string",
          "format": "date-time",
          "description": "When does the authentication for this device expire",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "UserDevice": {
      "type": "object",
      "properties": {
        "userDeviceId": {
          "type": "string",
          "description": "The unique identifier for this user device.",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "userLabel": {
          "type": "string",
          "description": "A user defined label for this device.",
          "example": "My Laptop"
        },
        "userAgent": {
          "type": "string",
          "example": "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405"
        },
        "activeDevice": {
          "type": "boolean",
          "description": "Is the device active or not.",
          "default": true,
          "example": true
        },
        "lastIpAddress": {
          "type": "string"
        },
        "lastGeoLocation": {
          "type": "string"
        },
        "lastAuthenticatedSuccess": {
          "type": "string",
          "description": "The last time this device was successfully authenticated.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastAuthenticatedExpiration": {
          "type": "string",
          "format": "date-time",
          "description": "When does the authentication for this device expire.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time that the entity was created.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date-time",
          "description": "The last time the entity was updated.",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "DeviceLocation": {
      "type": "object",
      "properties": {
        "deviceLocationId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "userDeviceId": {
          "type": "string",
          "description": "Unique identifier for the associated User Device"
        },
        "userAgent": {
          "type": "string",
          "description": "The userAgent from the device at the time it was usered",
          "example": "Safari Version 11.0.0 (13434.233.1); Windows 10"
        },
        "geoLocation": {
          "$ref": "#/definitions/GeoLocation"
        },
        "deviceAuthenticated": {
          "type": "string",
          "description": "Device authentication status for this location",
          "example": "true"
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "GeoLocation": {
      "type": "object",
      "properties": {
        "ipAddress": {
          "type": "string",
          "description": "The current IP address",
          "example": "70.162.13.201"
        },
        "lattitude": {
          "type": "number",
          "example": 33.4001
        },
        "longitude": {
          "type": "number",
          "example": -111.929
        },
        "locationAccuracyRadius": {
          "type": "number",
          "example": 5
        },
        "location": {
          "type": "string",
          "description": "Tempe, AZ"
        },
        "network": {
          "type": "string",
          "example": "Cox Communication"
        }
      }
    },
    "UserAgreement": {
      "type": "object",
      "properties": {
        "userAgreementId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "agreementTitle": {
          "type": "string",
          "description": "The title of the agreement",
          "example": "Beta Agreement"
        },
        "agreementVersion": {
          "type": "string",
          "description": "An optional version of the agreement"
        },
        "shortDescription": {
          "type": "string",
          "description": "A short description of the agreement.",
          "example": "This describes the initial beta agreement terms."
        },
        "agreementText": {
          "type": "string",
          "description": "The text of the agreement to be displayed to the end user.",
          "example": "Lots of legaleeze"
        },
        "activeAgreement": {
          "type": "boolean",
          "description": "Is the agreement active for use",
          "default": true,
          "example": true
        },
        "requireAllUsersToAccept": {
          "type": "boolean",
          "description": "All users will need to accept this agreement, otherwise agreements will have to be assigned to individual users as needed.",
          "default": true,
          "example": true
        },
        "parentAgreementId": {
          "type": "string",
          "description": "An optional id to another UserAgreement. Useful for chaining agreements together."
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "dateUpdated": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "UserAgreementStatus": {
      "type": "object",
      "properties": {
        "userAgreementStatusId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "userId": {
          "type": "string",
          "description": "Unique identifier for the associated User",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "userAgreementId": {
          "type": "string",
          "description": "Unique identifier for the associated UserAgreement",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "agreementStatus": {
          "type": "string",
          "description": "Did the end user accept of decline the agreement",
          "enum": [
            "Accepted",
            "Declined"
          ]
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time when this entity was created",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        }
      }
    },
    "ElevatedPrivilege": {
      "type": "object",
      "properties": {
        "elevatedPrivilegeId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        }
      }
    }
  }
}
